Everyone's Job Is Your Responsibility

I am a software developer. I have always worked for small to medium sized companies, between roughly 10 and 100 people. When I first started my professional career, I had been trained to write good software. I learned about software development processes, programming languages, databases, testing, algorithms, requirements, and all sorts of things that make me better at writing software. I was hired as a software developer and was assigned software to write, so I wrote it to the best of my ability.

But that’s all I did, I wrote good software. And by itself, that’s worthless.

I write software to get paid, and that money comes from customers paying for products or services. When I write software, I do it as a part of a larger human system that takes customer problems, builds solutions for them, and sells the solutions so we can all keep getting paychecks. If any part of the human system stops working, the paychecks stop coming.

The first time I was confronted with this reality I was working on a team with one other developer and a project manager. In every status meeting we reported that we were on track to deliver the product on time, but when that time came we discovered that the other developer had a different definition of “done” than the rest of us. The product was late and we lost some future business from that customer. The blame for that failure was mostly laid on the other developer, but a little of the blame went to everyone. We should have been integrating our code the whole time. We should have demoed it to each other, or reviewed each other’s code. Doing those things would have exposed the problem much earlier. Beyond our assigned jobs, we all had the responsibility to ensure that everyone else was doing their job so the human system would be working properly for the client.

When you begin to consider the whole company as a human system, you can break it down into components and measure it like an engineering problem. (It will be an oversimplification, but it will do for our purposes.)

All of these functions are required to keep customers happy. They aren’t always manifested in separate groups of people, but the tasks exist at every product company. If your company is lacking any one of them then you’re running on borrowed time. It’s essential to restore that function before the paychecks stop. That’s explicitly management’s job, but if you see the problem and don’t bring it to management for a solution you may be looking at the seeds of your own unemployment.