Egoless Programming #6: The only constant in the world is change.

In 2001, Lamont Adams of TechRepublic chiseled what would become ten commandments of Gerald M. Weinberg’s timeless wisdom: Egoless Programming. Today we’re going to learn its sixth commandment:

The only constant in the world is change.

If you’ve spent any time at all as a software engineer, you have experienced dozens of changes to the game. Ajax, Agile, APIs, and Android represent just a few of the significant changes that I’ve experienced. And those are just the A’s.

Let’s look at a few categories of change:

Business Needs Constantly Change

Customers don’t know what they want, but it’s definitely not what you built.

We exist to create business value through technology solutions. The businesses of yesterday, today, and tomorrow are very different animals. What are you doing to ensure your software is ready to adapt?

Teams Constantly Change

How many people can get hit by a bus before your team ceases to function?

It’s a violent metaphor, but everyone seems to understand it. Your colleagues will find new jobs, get promoted to management, or be yanked into tiger teams. What are you doing to raise your team’s proverbial bus number?

Delivery Constantly Changes

Servers ➡️ Virtual Machines ➡️ Containers ➡️ Serverless ➡️ ???

Artisanally-crafted physical servers have transformed into ephemeral execution environments. Manual deployment checklists have become automated canary releases. How are you designing software that doesn’t care where it lives or how it gets there?

Consumer Devices Constantly Change

Desktops ➡️ Laptops ➡️ Phones ➡️ Tablets ➡️ Wearables ➡️ ???

Bulky machines tethered to a desk have transformed into mobile devices you can wear while you jog. Ubiquitous network access has only accelerated the pace of change. How are you creating software that can keep up with consumer device evolution?

Architecture Styles Constantly Change

Monoliths ➡️ SOA ➡️ Microservices ➡️ Lambdas ➡️ ???

As deployment targets have gotten cheaper and delivery has gotten faster, architectures have evolved to take advantage. Understanding how to effectively modularize software has never been more important. What decomposition strategies do you have in your toolbox?

Software is only “soft” so that it can easily change.

Want to stay happy and productive? Embrace change, and strive to make it easier and cheaper.

Previous
Previous

Egoless Programming #7: The only true authority stems from knowledge, not from position.

Next
Next

Egoless Programming #5: Treat people who know less than you with respect, deference, and patience.