Roots of Software Engineering

02 May 2024

A New Outlook

In the world of software development, the tools we use, the standards we adhere to, and the methodologies we employ can significantly impact the outcome of our projects. From the environments where code is crafted to the standards that ensure its readability and maintainability, and finally to the management approaches that guide its creation, every aspect plays a crucial role.

Coder Utility Belt

Developer environments are the main toolbox for programmers. This toolbox holds different tools that allow a developer to make changes to a program. Some tool boxes are for a carpenter whose livelihood depends on the reliability and quality of their tools, and some tool boxes are for a suburban dad who assembled the IKEA furniture when they moved into the house 14 years ago. That is to say that some developer environments are more comprehensive and functional than others. The functionality and usability of the environment heavily impacts the productivity of the programmer. Some environments are essentially a text editor with a run program button, while others have tools that allow you to quickly adjust large amounts of code or run plugins that can implement custom functionality into your environment. If you are not familiar with coding then you might be thinking what can a programmer possibly need? Don’t they just need to type the code? And you are sort of correct, but don’t forget we are the carpenters of the software and there is a level of efficiency and flexibility expected from a software engineer. The problems given aren’t always so easy to solve that the programmer can just whack away at the keyboard and run it and be done. There normally is a process of testing and implementation that having a good environment makes it seamless and allows coders to focus on the main issues rather than trying to implement it.

Keep’n It Up To Code

Imagine you are reading a book with multiple authors, and each author worked on a different part of the book. The book is fascinating, and you are dying to know what comes next, then you get to the next chapter, which is written by a different author from the previous, only for it to be in pig latin and written from right to left. You could still figure out what is going on in the chapter given enough time, but the frustration and inconvenience are sure to leave you jaded.This is what it can feel like when there aren’t coding standards implemented in a project. Coding standards are the self implemented rules code for the project must follow. These can range from the style of the code (wording) to preventing specific programming techniques from being implemented like global variables. This has multiple implications on the program being created, including how securely the program runs, the readability of the code for other programmers, so they can contribute, and how the program is designed.

Optimizing Steady Development

Now let's flip the script a bit and imagine you are one of the authors of the book, and you are working on the book with your coauthors. How do you organize the work so that no one's work overlaps and that each bit of progress comes together cohesively. One way to approach this issue is agile project management, an approach to project development that focuses on making quick meaningful ‘updates’ until the product is to the specifications desired. A natural outcome of this mindset is a constantly updating list of things to get done based on the results of other parts of being worked on, the main design of the product, or from changes in the design that came about as the project developed. This flexibility and task assigning strategy is also known as issue driven project management. This approach to project management could be used in almost any setting because even if you are working on a project alone, having your ideas documented and organized can help you understand the overall structure of the project and allow the customer to better understand the development.

Wrapping up

Navigating the intricate landscape of software development, it’s clear that the choice of developer environment, adherence to coding standards, and adoption of agile project management methodologies are not just preferences but essential components for success. These elements form the foundation upon which efficient, collaborative, and adaptable development practices are built. By embracing them, developers can ensure the creation of reliable, high-quality software that meets the demands of today’s dynamic market.

*ChapGPT used for parts of intro and conclusion