The Core of Software Engineering

17 Dec 2020

Finishing up the semester with ICS 314, I have learned many concepts about software engineering. My time in this class started with learning JavaScript, then learning HTML, and eventually being able to create a functioning website. Along the way, there were coding workouts almost everyday which gave me an extra challenge and let me learn how to tackle these new problems. All of these combined has taught me some valuable lessons in software engineering, of which I will go over Agile Project Management, and Design Patterns.

Agile Project Management

Getting into the group projects in ICS 314, I learned about Issue Driven Project Management (IDPM), a style of Agile Project Management. Having a method in which the whole group can follow in order to work together on a single project is really useful not only in software engineering. It allows for everyone to fluidly work together, without much interference. IDPM is a style of project management where a project is broken up into phases, or milestones. These milestones have end dates and only one milestone is active at a time. Within these milestones are issues that can be assigned to a project member. This allows for the allocation of different aspects of a project and helps ensure that everyone in a project does not obstruct each other as they make progress. These milestones and issues also allow for real time tracking of issues so everyone can view the progress and each others contributions to the project.

I can see learning Agile Project Management being useful for me as it allows me to better coordinate and work with others which will most likely be paramount in my career. With the amount of cooperation that comes with working in a company, being able to organize as a team on various projects is a necessity. By learning IDPM, I feel that I will be better prepared to work with others and that I am more knowledgeable on how to break down a project and get a good idea on the timeline of it.

Design Patterns

Design Patterns is a kind of general solution that can be applied to a common problem. In my time in ICS 314, the kind of design patterns that I experienced was that of code templates. The instructor provided the class with various code templates for many assignments. As many of the assignments given involved creating a website, having a website template is useful to get one started on designing a new website. Website templates are not the only example of design patterns, there are many other examples, one of which I used a lot in the final project was using existing code to add new functionality in a website. In the final project, the website my team and I created called for new collections to be added for new kinds of data to be stored. I used the layout of previous code and modified it in order to fit our needs. Being able to use previous code as a skeleton for a new purpose drives a faster development in coding.

There is a saying of “If it’s not broken, don’t fix it”. I feel like this really embodies the idea of design patterns. When one is faced with a problem, they can always take a look at previous work done and apply and modify previous solutions to help them solve a new problem. We do not always have to take the time to create a brand new solution for every issue that comes up. The idea of design patterns is important in software engineering as it allows for one to reflect back on previous solutions that they have created, whether it be for a website or application, and take bits/pieces from past works, and incorporate them to solve novel problems.

To finish off, this semester has been quite a ride. The various things I have learning in ICS 314 about software engineering will benefit me in many ways. The different aspects of software engineering is not unique to software development and can be applied to many points when one works out in the field. I hope to be able to utilize everything I have learned about software engineering and hope that everyone was able to learn something from my experiences.