After completing my first ever software engineering class I can safely say that I need to know more. I feel a little empty leaving with knowledge that is only the tip of the iceberg in software engineering, but the beginner knwoledge I have gained from my first software engineering class was definitely eye-opening not only in the field of computer science, but also in my everyday life. Learning about agile project management and functional programming were especially useful and easy for me to implement into my daily life.
Agile project management is breaking down a project into sections or phases called “milestones” that set soft deadlines. Milestones were great for a procrastinator like me. It prevented me from waiting till the day before everything is due to finish everything. Thanks to milestones I was able to space out my work and have a mostly stress-free, enjoyable project. These milestones were then broken down further into smaller goals that were achievable in a shorter time span called “issues”. Issues were problems or goals that were achievable within a few days. Issues helped me breakdown the project into smaller parts to see what needed to actually get done to come together at the end and create a cohesive end product.
This type of project management proved to be great for my group software engineering project because it kept everyone from slacking and falling behind. It’s easy to see the usefulness of this approach in school and work when we are required to collaborate with others on an assignment or project, but it also proves to be useful in my household as well. I currently live with three other people who are all college students with a part time job, so each of us is busy and usually neglects the cleaniness of the common areas. After learning about agile project management, I brought up an idea to my roommates that would keep the common area clean, but make sure that everyone is helping out and it’s not just one person. I proposed that we have a board that allocates chores, like issues, to a person and everyone has to complete these set of chores by a certain deadline, like a milestone. It prevents the housework from piling and makes cleaning the entire common area more achievable because we’re breaking them down into smaller tasks.
Functional programming is utilizing functions or methods that can be reused throughout the code, so the programmer doesn’t have to waste time, effort, and space retyping. Functions can have parameters where programmers can provide different inputs and have the same procedure occur with each input. A simpler way to see it is if we needed to calculate the total for each customer, we could make a function that calculates the sum of all the prices of the items and use that function for each customer’s transaction. We could input an array of the items and the function would do all the calculating. A more fun way of thinking about it is as if the functions were machines. We reuse machines which make our lives much simpler compared to if do everything from scratch.
Functional programming shows up in my everyday life quite often. Everyday machines that make our life easier like microwaves. Microwaves are able to make a variety of foods warm with a simple press of a button. We can put in a variety of inputs and receive our desired output. It’s all about figuring out the commonality amongst a group of problems. If we are able to use this commonality and make it into a function so we don’t have to repeat the same thing over and over again from scratch it makes everyone’s lives just a little easier.
I am thankful for everything I have learned in my software engineering class because it gave me both a chance to explore a field in computer science that might become my future career path and various ways to tackle any kind of problems both big and small.