Nathan Zenger
Software Engineering has always been one of the more interesting focuses in computer science to me and I recently got my first time experience as a software developer for a project. At first I thought software engineering was just programming an application that could be used as a tool, and to a degree that is true but now I know that so much more goes into being a software engineer then just sitting down and coding a program into existence. One of the aspects of software engineering that I was not aware of until this semester was Agile project management which is the use of an efficient organizer to coordinate a groups tasks while working on a larger overall application. Prior to now I had not used Github or Git while working on a project since every computer science project I have done up until now has been solo. I think agile project management is one of the most important cornerstones of software engineering because an unorganized and uncoordinated team leads to mistakes, setbacks , and ultimately the failure of a project. At first organizing and making all of our different contributed code seemed like a daunting task because of all our different methods of working and implementation. But setting milestones, assigning issues, and the use of branches with Github taught me an efficient and practical way for me and my team members to work together. With issues all of our tasks were outlined clearly and it made each teammate accountable to doing their part of the code while also allowing us to work in separate branches and make mistakes so that our code did not affect the master’s project. The use of milestones on Github gives the entire team and overall desired state of the application that we were accountable too and could consistently work for. No matter how good of a programmer you are if you lack the skills in agile project management you will not be an effective software engineer on a team. Another side of software engineering I learned of was the testing phase of an application and how important it is to the overall success of a project. There were so many instances while working on our application that I thought if something worked and made sense to me as a developer the user would have the same understanding of the project but this is not the case. As a developer you have a bias because you have worked on this project from the ground up and know the ins and outs of the application and can understand how to utilize it properly without outside instructions. However when a user with no in depth knowledge of the project uses it they can get lost or not understand what they are supposed to do or how to use the project. I found it harder than expected to put myself in the mind of the user and make accommodations for them because I am so focused on functionality of an application that it becomes an effective application but not a very user friendly interface. This is where the importance of testing comes in, getting outside fresh eyes who have never worked on the project or seen the project is very valuable because they can give you feedback about how user friendly or non user friendly your application is to new users. Most applications are meant to capture to new users online who have no prior knowledge of the application and have to navigate it without a guide. This is why testing is one of the most important aspects of software engineering because it allows you to fix and prepare your software for real world use and practicality. Testing allows the application to evolve into the best experience for the user possible.