Why, in big companies, is it easy to do bad things and hard to do good things? (with many memes)
2023-06-08
I've worked in a wide variety of jobs and companies. In my experience, the bigger the company, the bigger the problems and the harder it is to make changes to solve them.
This is all anecdotal, and this is all in the context of working in software development. I'm not talking about any particular company. This is based on a conglomeration of many experiences, conversations and much reading.
Most companies are trying to adopt technology and "transform". As hard as things are at large technology companies, they're so much worse at older companies. In these, engineering is a cost center.
Making positive change is hard but making things worse is somehow far easier.
This is not to be defeatist. You can always make things better. Working in Software is still one of the best jobs around. It's no harm to talk about the issues every so often though.
It's easy to introduce more bureaucracy but hard to reduce toil
You may have encountered Westrum's organisational model.
Many large companies trend towards Bureaucratic. In Mark Schwartz's book The (Delicate) Art of Bureaucracy, there are some fantastic explanations of this. Bureaucracy is not inherently bad but it goes against all good software development principles.
Making things better is often the simple act of removing something or making a thing easier to do. In bureaucratic organisations, adding a new painful process is pretty easy. Removing one is not.
For a software developer trying to do good work, bureaucratic organisations can be the toughest to deal with. The company may be great to work for. You may really like your team but the constant struggle to improve the most basic things can be tough.
In a bureaucratic organisation solutions like ticketing systems often take hold. Improving DevX and automation would be far more beneficial but difficult. Buying some COTS to cover over structural issues is easy. My deep dislike for how that turns out inspired me to create ticketculturecon.
So many people, every day, waste so much time doing busy work that never means anything and that's very sad.
Small iterations are hard, long projects are easy
Agile is almost a bad word in tech these days. A lot of companies claim to be doing it while fighting very hard against some of the most basic principles. For example, doing things in small iterations.
The book Project to Product does a good job of explaining this. Large companies still do everything in projects. Projects have a specific timeline, budget, definition of done. Good software development doesn't work like that.
A product needs constant tending until it's no longer needed. It's rare for large companies to understand this.
There are always exceptions but in general software development is iterative. Even software development for spaceships is iterative. Iterative doesn't mean broken until done. It means we deliver a small slice of value, as fast as we can, so we learn and make better decisions for the next iteration.
At SpaceX they applause when a test launch explodes after takeoff. They do this because they have learned something, not because the rocket exploded exactly as planned. Companies would benefit from optimising for good decision making and learning. Not fortune telling.
There are many bad side effects of not putting in the hard work and providing a good vision and strategy. One is many people end up trying to predict how long things will take and keeping track of what's going on.
Meta work is easy, valuable work is hard
A good friend of mine refers to a large amount of activities that go on in big corps as Meta Work. These are the activities that don't produce any real value. They do however produce a lot of information and require a lot of people to manage them. Those people in turn need to ask a lot of time from those attempting to do valuable work by getting them to attend meetings, report progress, come up with wild guesses for how long things will take and so on.
I am not trying to be cruel. There are so many great people involved in planning, reporting and such. Nobody actually wants to be doing meta work. That's what the incentives have us do. Focusing on building out backlogs is such a waste but so easy at big companies. Having a vision and focusing on the most important thing right now to move in the right direction is hard.
Architecting systems for autonomy is hard.
Building trust is hard.
Technical Strategy is hard, productivity theatre is easy
A clear strategy is powerful. I only fully appreciated this after reading the book Good Strategy Bad Strategy.
It's easy to make plans but hard to build a good strategy. A plan is not a strategy.
It's easy to do a reorg but not easy to get the organisation behind a technical strategy.
Often organising people is leadership's greatest lever. Lack of resolve under political pressure squanders it.
Inventing rules that don't help anything is easy, prioritising what's valuable is hard.
Coming up with a backlog of ideas is easy, true innovation is hard.
Putting in good engineering work and fixing a mess is hard. Massively overcomplicating everything to avoid working on fixing things is easy.
Software engineering is hard. Not just shipping new features and closing tickets but really engineering solid solutions.
Convincing everyone of the need to make improvements is hard. Being a hero and sacrificing to maintain the status quo is easy.
Conclusion
It's so hard to convey but there's a massive corpus on what works and it feels like a minority of people in tech are aware of it. Just some examples:
- Accelerate, the most scientific resource we have on what works and what doesn't when it comes to building software.
- Modern Software Engineering, the best summary of all the good stuff, backed by all kinds of data.
- The DevOps Handbook, there's literally a handbook.
There are so many good books and resources out there. Many people have worked in excellent technical organisations and know what works.
Doing what's right should be easy but it rarely is. Exercise is hard. Good diet is hard. Interesting problems are hard. It just seems to be how this crazy world works.
There are many reasons why big companies get into a place where doing good is harder than it needs to be.
Ultimately, we're all just human and everyone is trying to do their best. Hopefully you'll make some good change today and not just publish a rant full or memes.