Our Duty as Professionals

Kevin Smith

VP of Engineering

High-quality software is both valuable to the business now and easy to change later. It’s easy to maximize on short-term value, so striking that balance requires vigilance. That is our duty, as Dave Farley illuminates in Modern Software Engineering:

If I were a chef preparing a meal in a restaurant, I could probably prepare one meal more quickly if I decided not to clean up my tools and work area when I finished. That will probably work for one meal. It may even work for two meals; it would be disgusting, but it may work. If I worked like that all of the time, though, I’d get fired!

I’d get fired because I’d give the patrons of the restaurant food poisoning. Even if I didn’t get fired, by the time I got to the third meal, I would be far slower and less productive because the mess that I had made would get in the way of my work. I’d have to clear a work area and the tools I was using for every task. I’d have to struggle with tools that were no longer sharp enough, and so on. Does this sound familiar?

If you hired me as a chef, you would never say, “you have permission to sharpen your knives” or “it is your responsibility to clean your work area” because as a professional chef, you, and I, would assume that those things are a fundamental part of being a professional. As a chef, that would be part of my duty of care.

As software professionals, it is our duty to understand what it takes to develop software. We need to own the responsibility for the quality of the code that we work on. It is our duty of care to do a good job. This is not altruistic; it is practical and pragmatic. It is in the interest of our employers, our users, and ourselves.

If we work to create and maintain the quality of our code, our employers will get the new features that they want more efficiently. Our customers will get code that makes more sense and is more usable, and we will be able to make changes without being constantly nervous of breaking things.

The most efficient software development teams are not fast because they discard quality but because they embrace it.

It is the professional duty of a software engineer to recognize this truth and to always offer advice, estimates, and design thoughts based on a high-quality outcome.

Don’t parse estimates and predictions to separate out the time to do a good job; assume that your managers, co-workers, and employers want you to do a good job, and do it.

There is a cost to doing work. In cooking, part of that cost is the time it takes to clean up and maintain your tools as you go. In software development, those costs are to refactor, to test, to take the time to create good designs, to fix bugs when they are found, to collaborate, to communicate, and to learn. These are not “nice to have” options; these are the foundations of a professional approach to software development.

Anyone can write code; that is not our job. Software development is more than that. Our job is to solve problems, and that requires us to take care in our design and consider the effectiveness of the solutions that we produce.

Want to work with us?

We hire great people, invest in their growth, and trust them to do great work. No egos here. Just a handful of humble, talented, and conscientious builders who play well with others and work as a team to ship great things.

© 2024 AxisCare. All rights reserved.