Software Engineering is an art that has been refined through the years. When studying software engineering, one finds themselves learning a variety of workflow development techniques to assist them and their team in reaching a set goal in mind. Using design patterns, agile project management, and many other ethics in coding such as coding standards, we can create a manageable environment which will ensure success. One of the very first things I learned when entering the coding world was a pillar foundation known as coding standards. I was taught from day one that your code should be written for other people to understand. Reflecting on coding’s past, I have realized that in the early stages of code, there was no style and standard for people to follow. This led to unreadable code, as one person’s style of writing code would be a foreign language to another person. The beauty in coding is best displayed when a group of developers can all put their heads together and work in unison to achieve their goal. Making sure everyone is on the same page and writing in a standard layout improves work efficiency exponentially.
The use of a standard layout is not only restricted to computer science. We use standard layouts everywhere, and it can be seen all around us in our everyday life. Over time, people figure out what method works most efficiently to get a task done, and other people learn from that. They then build on that previous method, making it more efficient once again. These can also be explained as design patterns. Looking around me as I sit in my office, I notice the architecture of my house is designed like a “standard” house. Four big walls with a pentagonal pyramid for a roof. Overtime it was decided that this design is easily duplicated while maintaining sound reliability. This is the beauty of design patterns and learning how to apply this evolutionary mindset to coding, is a keystone in approaching effective software development.
Another one of my favorite development techniques I have recently acquired is configuration management. In software engineering specifically, this refers to the tracking and control of changes to a software. This was a brand-new concept to me as I have been learning to code, always working in my own IDE where it never leaves. Using version control systems such as GitHub, you can work on big coding projects with others in an extremely efficient fashion. I have always wondered how to work on projects with others and learning how to incorporate GitHub has been imperative to that.
Recently, I have worked on a project that prioritized the workflow around specific issues. By creating tasks and breaking a goal down into specific steps, we can achieve that goal much more efficiently. This is even more so when working with a team. I can personally attest to this as the issue driven project I worked on felt astronomically easier to develop and work on using this structured workflow. Workflows are present everywhere around us as well! One of my favorite hobbies is video editing, where an efficient workflow is mandatory to create a proper video. I remember I found editing very difficult when first starting, but if I only knew an effective workflow, I would have saved myself countless hours. This also applies to my computer science career and I am grateful to have learned how to apply this same idea to my software development.
In the work force, people have learned to create effective, easily replicated designs and strategies. We, as a society, push ourselves to constantly improve and be better than we were yesterday. Many jobs teach these designs and strategies to newcomers so they too can benefit from such improvements. The same is applied to computer science. The more people use these strategies, the further we can improve and turn our ideas into reality. Personally, I am in love with the idea of the future, and I know each improved design pattern is a right step towards that. When you use proven effective strategies, your creativity is no longer bound to trivial issues. And that’s where innovation starts.