This semester I began ICS 314 looking forward to the opportunities I would have to develop as a software engineer. As a Computer Engineering major, I wanted to take full advantage of learning as much as I could to be able to program correctly and efficiently. Although this class was geared towards web development, the tools and techniques in this class are very applicable to all types of software development and are great things to know to prepare for the transition to the workforce. Some tools and techniques that I really appreciated getting experience with are Configuration Management, Coding Standards, and the Agile process.
One aspect of software engineering that I lacked much experience with was version control. Configuration Management is a technique that focuses on maintaining the configuration of the system. Version control is a type of Configuration Management technique. We applied this technique by using git through the GitHub. We were given a lot of experience using this technique by applying it to our in class WODS, assignments, final project, and even this website.
Not only does this technique help me develop my own projects, it also makes it easier to program as a team. For our final project, GitHub made it quick to review each others code remotely and see what changes they did to the program. It also gave all of us the opportunity to review code before merging it into the main file.
I like to keep my code nice and neat. However, when I was introduced to Coding Standards, which is a set style of programming, I had to turn it up a notch. Every space, new line, function definition, etc., needs to follow a strict style to avoid being marked as an error. Something as simple as missing a newline at the end of the file would cause an error. If a team follows coding standards, then the code styles become uniform. The uniformity of the code makes it easier for the team to understand what the code is trying to do without having to worry about format making things more confusing. By following coding standards in my programs, I can allow others to review my work without the worry of format errors.
I was able to experience agile project management when working on the final project for this course. For the final project, we were required to manage our project through the use of issue driven project management. We applied this in GitHub by creating issues and splitting them up into three seperate milestones. These milestones were what was checked throughout development to see if we were able to resolve the issues of the project. Since our final project was split up amongst four members, the agile process made it easier to assign and track what each member was responsible for. That way, whenever a member needed assistance figuring out an issue or we decided to collaborate on a particular issue, we could all take a look at the issue branch and talk about what needed to be done.
Now that this course has completed, I am really grateful for the experience and knowledge I have gained over the semester. Each module and assignment provided relevant information that will be helpful to me when I join the workforce. By using the tools and techniques I mentioned above, I feel that I can be confident in my ability to contribute to the success of a team and company.