Should you study software development?

14 May 2020

Before taking ICS314 I thought software engineering was just learning a new language and practicing the things I already knew from previous classes. I thought that all I would be doing is translating my knowledge from java or C/C++ into javascript, html, and css. I was completely wrong about that. In this class the first thing I struggled with was Underscore. It was completely different from the libraries we used previously and taught me a lot about how different software engineering was to my other classes.

Underscore was just the start of a long journey into learning how web development worked. There are many concepts that pushed me, but the 3 big ones were coding standards, issue-driven project management, and design patterns.

Coding Standards

The first thing we need to ask ourselves is what are coding standards? Well, in short, coding standards are standards given to software engineer teams to keep the code of the system consistent. These standards are usually defined by the team leader and helps the entire team keep their code readable.

You didn’t learn this in your software development class.

Of course, you didn’t. You probably learned this in a previous class like I did. In my case, I learned it in my second class and got used to it at a really early point in my computer science degree. Before this class, I overlooked coding standards and thought they were trivial because it’s really easy to follow and with most IDE’s you can import a coding standard to check for you. At times it can get frustrating but once you get used to it, it becomes second nature.

Should you use this in your future projects?

Well that is a loaded question. Coding standards, in my opinion, are VERY important when working in a team. But if the project is for yourself, then ignoring the standards might be okay if you’re not planning on keeping it. Personally, I will use coding standards in EVERY future project(work-related or individual) because, if I ever needed someone to look over my code I wouldn’t want to show them something like this:

Issue-driven project management

Issue-driven project management, IDPM for short is a management style that breaks the project up into tasks that can be completed individually, and keeps yourself ontrack. On the project board, there will be columns that show what you need to do, what is in progress, and what is done. This helps teams of software developers figure out what is being worked on so no one does the same task twice.

IDPM is great!

I found myself really liking the management process in my final project. It gave me an understanding of how to break down a system into multiple parts and create new tasks as you complete them. Using this it made it really easy to understand the system as a whole. Because without it, starting up a new task without knowing what is completed can be a nightmare. I found myself switching tasks as I worked on the project because things needed to be implemented before I could start on a specific class. Kind of like a freshman jumping into a software engineering class before learning the basics.

Will I use IDPM in my future projects?

FOR EVERY SINGLE PROJECT I DO, I will use IDPM. Even if I’m not working in a team. I found the management process to be a game-changer and can be used for anything. Using a modified IDPM you could use this in anything that you do. The process is simple. Just break your big problem up and split them into tiny tasks, and you will never be overwhelmed. For future projects of mine, I can see myself using this beforehand to plan out whatever system I am working on.

Design patterns

The last and final software engineering concept that I will use is design patterns. This concept is a little harder to understand, but essentially design patterns are templates of solutions to problems that you may come across in software development. Some examples of this are Factory, MVC or Model-View-Controller, and Prototypes. I will not go into detail about any of these, but they all have one thing in common. They all solve a software development problem that could come up in your project.

Design patterns outside of software engineering

Like I said earlier, design patterns are templates for problem-solving. Which means that you can find design patterns for almost anything that you do. Using this in mind, they are still templates which means you need to find some way to implement it yourself. Which might be hard but will give you everything that you need to succeed with enough dedication.

Reflection

Learning software engineering concepts has helped me understand a different type of coding and a different type of thinking when it comes to my education in computer science. These concepts helped me build an understanding when working in a team and working with larger systems. With this understanding, I can confidently say that even though there is a lot to take in, if I put enough effort into learning the concepts (of software engineering), I will be able to use them in my future studies or projects to push me to become a better coder.