Beyond Software Engineering

01 May 2021

What do you think of when you hear “Software Engineering”?

If you asked me this question a couple of months ago, I would have said something along the lines of “programming and designing apps” or maybe something closer to the definition of software engineering, which is “the application of engineering concepts in software development and the improvement and maintenance of software.” While I still hold these views, I’ve expanded my knowledge and perspective of software engineering throughout the last few months or so. I have realized that some of the fundamental software engineering concepts such as coding standards and configuration management have applications beyond software engineering.

Coding Standards

In computer science, coding standards are rules or guidelines used to improve the readability and maintain a common aesthetic of a programmer’s code. Coding standards are an important aspect of ensuring code quality, especially in projects with multiple programmers. Without these conventions, each individual programmer will resort to their own styles which makes maintaining and debugging code harder. As such, implementing coding standards are beneficial because they reduce code complexity and increase code quality, therefore making maintenance and debugging much easier. Some examples of coding standards that programmers abide by include naming conventions (camelCase, PascalCase or snake_case, etc.), file organization, and commenting and documentation.

However, coding standards are not necessarily restricted to web application development. In professional or formal writing, the concept of coding standards are applied depending on the topic to ensure the quality and readability of the text. For example, we typically use the MLA format when writing language arts papers or the APA format for scientific papers. I’ve also realized that while coding standards are important for any programmer to implement and that they exist in other professional fields, good coding practices are a depiction of one’s integrity. I feel that doing the right thing, not just for yourself but for the sake of others without someone holding a gun to your head is a precious quality that many new or beginner programmers can adopt and work into other aspects of their lives. Thus, I am grateful to have learned this practice throughout my academic career as I am sure to carry it with me for the rest of my professional career and personal life.

Configuration Management

Configuration management in software engineering refers to the tracking and controlling of changes made in software. It is used to maintain consistency between a project’s performance and functions with its requirements and design throughout its lifespan. As projects or systems grow in size and complexity, it is important for software engineers to be able to review changes or updates that others have made so that all possible errors can be identified and possible solutions can be found. Additionally, version control is a special case of configuration management used frequently in web application development where multiple versions of a software system are tracked and maintained. Git and GitHub are popular examples of version control systems that are used when collaborating programmers are developing source code during software development.

Once again, configuration management and version control do not strictly belong to software engineering and web application development. For instance, the Federal Highway Administration, a construction agency, has used configuration management for large construction projects that are complex and have many details that need to be documented in order to ensure that a project stays within their schedule and budget. In fact, configuration management is used by military organizations as well as other engineering disciplines. On the other hand, configuration management can also be beneficial for smaller projects because of how well it works. I’m glad that I was able to learn and practice using GitHub as I will definitely find it helpful in my future projects, even for those not related to software engineering.

Reflection

In conclusion, coding standards and configuration management are two fundamental software engineering concepts that have applications beyond web application development. Coding standards do not just exist in programming but in other specialties such as writing. I’ve also learned that good coding practices help to shape programmers into competent and moral people. In addition, configuration management is used in many disciplines and by many organizations because of how efficient it is at maintain a project’s consistency throughout its lifespan. I might find it helpful in future projects to use configuration management to improve my own procrastination and project management skills. This concept can be applied to any short-term or long-term project, especially when working with multiple team members.

A semester completely online during a global pandemic is not the ideal learning environment but I, like many others, have learned to adapt to what is thrown in front of me. Not because I choose to but because it is necessary. Similarly, it is crucial for computer science students to adapt and creatively apply concepts to other aspects of life in order to overcome the challenges that lie ahead.