Software Engineering: From The Other Side

13 Dec 2022

In this course we learned many software engineering concepts that were helpful in our assignments. Though in this course majority of the assignments were in the field of web development I can easily see that many of the concepts taught have outreaching applications. To me engineering has been about learning concepts and generalizing them so you can apply them everywhere. Many ideas I have learned in my courses has helped me past the applications I have associated with them at first. Specifically, I can easily see that coding standards and design patterns are concepts that will help me in all forms of coding and are something I will keep close to me.

For The Sake of Your Peers

When someone talks about coding standards it is an automated system that helps conform code from multiple users to reach an easy-to-read common ground. Even in a solo project coding standards will help you create legible code that makes it easier to debug and come back to later. However, these standards are especially useful in an environment like the workforce where your job is to work on code not written by you and add code to it.

In this course coding standards helped debug any issues we had with our code and in the case of our final project where we worked in teams, it helped keep a baseline, so people don’t get confused or frustrated with how things are being written. Yet in this class we only ever used eslint specifically for web development.

However, there are many different guidelines for different languages. Instead of eslint we could use tslint or prettier, maybe if you use C you would use MIRSA C. In any form of coding there are coding standards because of the universality of it. Your job or project may have specific coding standards, or you could even impose specific coding standards to yourself though it would be hard to keep yourself in check.

Skip The Journey Reach the Conclusion

On the other hand, design patterns are useful past web development as well. Design patterns are general solutions to common problems that occur during software development. I know that learning is a part of engineering and life in general. However, why go through all the trouble when someone trying to solve a solved problem? Recognizing that you can use a specific type of design pattern and being able to implement it will lead to faster and more efficient progress. There really is no point spending all the time to find out that there was a much easier way, especially in the workforce.

A particular example of this would be using prototypes. Let’s say you need to create multiple objects that are the same. You could instantiate the object then copy all the data to the new one. What if you need tens or hundreds of objects? or what if the object has tens or hundreds of fields of data? It would just be highly inefficient and depending on where the object is located or where the function is located data can be lost or unavailable. Instead let’s use prototyping, by using a clone method you can create exact copies by accessing the class and letting it do the work for you.

Design patterns have their own pros and cons and specific applications. Learning when certain ideas are applicable and being able to build upon them to circumvent a weakness or improve a strength is a valuable skill. Many software engineering concepts in general are designed to help you being a better coder, teammate, etc. I believe coding is all about applying concepts and having good teamwork skills to create something that thousands or millions of people can use.