Building Code

17 Sep 2023

blueprint

Tools of the Trade

In the construction trade, they have building codes that must be followed. These codes are designed to ensure that the building is safe and will not fall down. The building codes are put together by experts in the field, and are constantly being updated as new techniques and materials are developed. The building codes are enforced by inspectors who check the work as it is being done. If the work does not meet the building codes, it must be redone until it does. Licensed contractors are required to follow the building codes. If they do not, they can lose their license and be fined. The building codes are there to protect the public. Unlicensed contractors are typically working outside the system, and typically do not follow them. They are not held accountable for their work, and it shows in the quality.

Development vs Engineering

There are two types of people that write software: Developers and Engineers. Developers, similar to an unlicensed contractor, hack at code until it works. They are not concerned with the quality of the code, only that it works. They don’t follow best practices, and they don’t write code that is maintainable. Developers don’t follow coding standards. They don’t write unit tests to ensure that the code functions as designed, or they do it as an after thought. Developers don’t write documentation to explain how the code works. They assume it will always be their code until they grow weary of trying to maintain it.

Engineers, on the other hand, are concerned with the quality of the code, just like a licensed contractor is with the building. They follow best practices, and write code that is maintainable: easy to read, understand, test and maintain. They follow coding standards, much like building code standards, and use tools to ensure that the code meets those standards. They write unit tests to ensure that the code functions as designed. Engineers write documentation to explain how the code works. They use version control to track changes to the code. Engineers use issue tracking to track bugs and feature requests. They use continuous integration to ensure that the code builds and passes all tests. Engineers use continuous deployment to ensure that the code is deployed to production in a timely manner.

Past Lives

Starting in the Early 90’s, I went down the path of becoming a software engineer. Lucky for me, I fell in with a group of people who were already following best practices. I had some great and not so great mentors along the way. I moved up the ladder from junior, to senior, to lead, to architect, to manager, to director. I learned a lot about software engineering along the way. I learned about the importance of coding standards, unit testing, documentation, version control, issue tracking, continuous integration, and continuous deployment. Best practices were to be followed. I learned about being a team player and that leaders serve the team and are there to remove obstacles.

In my last job as a software engineer, I was the Director of a team of a dozen or so software engineers. I was responsible for the quality of the code that was produced, the quality of the product, and ultimately the happiness of the customer. I made sure we were following best practices. The team agreed on coding standards and we setup version control and continuous builds. We had a great team, and we produced a great product.

New Beginnings

So, here I am at University of Hawaii at Manoa, taking Software Engineering. I am happy to learn that the tools of the trade have changed since I was last in the trenches. The tools have gotten better and easier to use. They are easier to setup and do not require the large infrastructure of servers as in the past. I am looking forward to learning more about the new tools of the trade and how to use them effectively.