The Fundamentals Of Software Engineering

16 Dec 2019

Learning The Fundamentals

Before taking my first software engineering course, I always thought that coding or any type of software development was all about raw understanding about the programming language or markup language. This was a mistake and a mistake that I believe a lot of young programmers fall into. After taking that course I can tell you that learning the language is only a small portion of the fundamentals. It is important to learn these fundamentals so I will be sharing a few of the software engineering fundamentals I learned throughout this course.

The Importance of Coding Standards

In a previous essay I talked about the importance of coding standards however I would like to reiterate it here because I strongly believe this one of the more important fundamentals because it is often ignored by many because of how troublesome it can be if you already code a certain way. I for one still get errors from time to time not following coding standards, but I can assure you it is worth it seeing how clean your code can be. The most assuring thing is that in the web application project I had, I knew my teammates could follow the code I wrote easily and I could follow theirs. It looked like only one person was actually coding the project which made us look like we were in complete unison. The most important tip I think to help develop good coding standard habits is to constantly correct yourself as you code instead of fixing all your coding standard mistakes once you finish. Even though it may hinder your coding speed at first, it will help make the transition a lot smoother.

Be Agile Not Fragile

Now when I say be agile, I do not mean to work as quickly as you can. I am referring to Agile Project Management a methodology that splits a project up into individual milestones that are to be met at a scheduled time to make sure the project gets done and a presentable piece of work is done at each milestone. More specifically I used a method called Issue Driven Project Management where an one issue was assigned to a group member at a time and you would only move onto another issue once the other issue was finished. This would be repeated until the goals of the milestone was met. I felt this was an incredibly effective way to get a big project done making sure that work was done at a steady pace so that everything was not rushed last minute. After using Agile Project Management, I definitely see myself using this in future group projects that can be broken down into smaller parts. I know that many people consider themselves procrastinators and so I fully recommend trying to use Agile Project Management, it is very simple to implement and even easier to follow.

Never Do The Same Thing Twice

The last fundamental concept of software engineering I would like to talk about are design patterns. A design pattern is a solution that can be replicated as a template to fix reoccurring problems in software development. In terms of absolute speed of developing software design patterns can significantly speed it up without the general problems tied to speed which is rushing and making more mistakes that usual. It is a simple concept that everyone should use not just in software design, but in life. Why do something again if you already did it before? As long as you make the recognition that this is a problem you have already faced before, the solution is already provided for you, you can just copy the structure of it to make it fit the problem you are facing now. I found this concept of design patterns extremely helpful in not having to spend countless hours coding the same exact thing. Software engineering is not just about knowing how to program something, it is also about how you do it.