Why, in big companies, is it easy to do bad things and hard to do good things? (with many memes)
Tags: memes, culture, softwareengineering
Published: 2023-06-08 19:51:29

Often, the bigger the company, the bigger the problems and the harder it is to make changes to solve them. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3g91akyg8rlp6jbyk3e9.png)

This is all in the context of working in software development.

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](https://newsletter.pragmaticengineer.com/p/profit-centers-cost-centers).

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yjzjfz37r2hsjsmtbdyy.png)

Making positive change is hard but making things worse is somehow far easier. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xo40dq8ju25jf4rqyekw.png)

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](https://cloud.google.com/architecture/devops/devops-culture-westrum-organizational-culture).

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m8mh3wvdqzd5hidycp07.png)

Many large companies trend towards Bureaucratic. In Mark Schwartz's book [The (Delicate) Art of Bureaucracy](https://itrevolution.com/product/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.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9uym3k9wb5xsa2ky2jxu.png)

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. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qo1v57fi9i0gx6ucoq1z.png)

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.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d4rg4isw1a1pbxn1k4vj.png)

In a bureaucratic organisation solutions like ticketing systems often take hold. Improving [DevX](https://developerexperience.io/articles/good-developer-experience) and automation would be far more beneficial but difficult. Buying some [COTS](https://en.wikipedia.org/wiki/Commercial_off-the-shelf) to cover over structural issues is easy. My deep dislike for how that turns out inspired me to create [ticketculturecon](https://ticketculturecon.web.app/).

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4tuw2ehu2qyfvx5vcn2y.png)

So many people, every day, waste so much time doing busy work that never means anything and that's very sad.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ql1qdxwe4f81jd43pepi.png)


## 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.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sq30vnyjzq71npnbltig.png)

The book [Project to Product](https://projecttoproduct.org/) 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. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7uo51l0ad0xu3zvfw21x.png)

A product needs constant tending until it's no longer needed. It's rare for large companies to understand this.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aca8hymt5cwmzo044x97.png)

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.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/37t1ho9mzzt4s14rm2yy.png)

At SpaceX they [applause when a test launch explodes after takeoff](https://youtu.be/iiDGb1CXw4I). 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.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k2alhtasztfo8tblou3b.png)

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. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yr23i86s45fjbhwfapaa.png)

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.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sldl5pqibs0dtkl9wri2.png)

Architecting systems for autonomy is hard.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/94qwrh6oz7cjd9iq7to0.png)

Building trust is hard. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nfnypvjyb1zurto7wvt2.png)

## 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](https://www.goodreads.com/en/book/show/11721966).

It's easy to make plans but hard to build a good strategy. A plan is not a strategy.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6xmwahyy3kq6ddw75xhd.png)

It's easy to do a reorg but not easy to get the organisation behind a technical strategy. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xjnss7gnrqhjxtr7dwf1.png)

Often organising people is leadership's greatest lever. Lack of resolve under political pressure squanders it.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m5gdghrxva953rxauhdq.png)

Inventing rules that don't help anything is easy, prioritising what's valuable is hard.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u0trh1v0ix0ht2ye3sfi.png)


Coming up with a backlog of ideas is easy, true innovation is hard.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qgmc5igd1xee10n27ehm.png)

Putting in good engineering work and fixing a mess is hard. Massively overcomplicating everything to avoid working on fixing things is easy.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t1mhlg3s14pqe8bx21hx.png)

Software engineering is hard. Not just shipping new features and closing tickets but really engineering solid solutions.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5dvz4msyilt9cztjfs7n.png)

Convincing everyone of the need to make improvements is hard. Being a hero and sacrificing to maintain the status quo is easy.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/do81006deildaqmc4k0s.png)


## 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](https://itrevolution.com/product/accelerate/), the most scientific resource we have on what works and what doesn't when it comes to building software.
- [Modern Software Engineering](https://www.davefarley.net/?p=352), the best summary of all the good stuff, backed by all kinds of data.
- [The DevOps Handbook](https://itrevolution.com/product/the-devops-handbook-second-edition/), 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.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wrlfqgdn6enqoglfumnn.png)


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 of memes.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uk3twx8cmp5par6pqvmb.png)