For the fall 2021 semester, I was introduced to the wonderful pipeline that allows the creation of software, the things that are practically used all the time in our daily life. Now when I first joined the class, I didn’t think we’d start learning things like Javascript, HTML, creating websites, etc. Many of the languages, tools, and technical skills that I learned in this class may be useful to know. However my interest in other topics and careers would probably not use these things too much or even not at all. But they were the means by which we can learn key software engineering concepts that are absolutely practical in either personal side projects or software development jobs.
Now there are many software engineering concepts that were thrown at us throughout the semester. Even though all of them are very important and valuable to know, I took more interest in one set of concepts that I definitely will try to keep in the back of my mind. This set has to do with planning and having an overall big picture over a project. I value this more due to the fact that my past attempts at projects lacked in implementing this set of concepts. Though even if I was still inexperienced in programming, eventually I will be dealing with more complex projects and probably working with teammates as well. This set includes concepts like Agile Project Management and Design Patterns.
Agile Project Management is just one of many ways in how team members will plan, develop, test, and release their projects. Though there are obvious and simple ways to go about it, like just going down the list that I just mentioned one step at a time. However every method has some pros and cons to them, and the cons may become detrimental to the project. Agile Project Management focuses more on separating problems into time allotted parts that ensures that there are some goals set up without overwhelming the team. It is adaptive, flexible, and gives the developers time to focus on a specific feature and make sure it works. This concept that I learned comes in with a handy and easy to understand type of management that I recommend others should try to use: Issue Driven Project Management. It follows Agile Project Management by breaking down the project into Milestones, which itself contains a set of Issues that represent problems that can be given to one or two team members. Although there are some cons like all models. I find it the most versatile and will probably stick to this method for future projects until I find perhaps better methods of project management.
Design Patterns has to do with how the actual project is developed. Not all software is built the same, as they all usually have different designs from each other. These design models are templates for the code. And like with the different types of project management, each comes with their pros and cons. Recognizing the problems they face, developers choose specific design models due to serving a specific purpose and accepting the pros and cons offered by the model. Even though I am still inexperienced and still don’t know a lot of design models, I plan to look more into them so that I can make much more beneficial decisions when developing my project.
This set of software engineering concepts are pretty much usable in any situation where I have to develop a project. I could definitely see myself taking advantage of Github’s features, that allow Issue Driven Project Management, for more complex side projects. The mere existence of issues in time allotted days will motivate me to finish them in time. And even though picking and implementing design models is something I have to practice more, I definitely feel like I could implement some simple models first before transitioning into models that are both complex and fitting for the problem. I am honestly thankful that I learned some software engineering topics that I am confident in focusing on this semester. And I hope other beginning software developers learn thes, as they seem to be a pretty important set of skills to know in the workplace.