5 Rules for pragmatic developers

Pragmatism is evil. It leads to crappy code.

It’s giving up high ideals to compromise with the clueless suckers in management.

Good developers need to stand their ground.

Clean code over delivery time.
Rewrite entire applications because FP is obviously better.
“Quality” first.

If you give a finger to your enemies in management, they will chew off your arm. #realDeveloper

Internet wisdom is usually wrong. The opposite of a pragmatic software developer is not the enlightened 10x Agile code guru. It’s the prima donna no-one wants to work with. These people are either selling you something or are just repeating what they’ve heard a salesman say. If you feel pair programming is not for you, Tech Twitter and LinkedIn have their opinions ready.

I used to be one of them. It’s easy to fall into that trap. You find something you like and cherry-pick the literature that confirms your bias. Most software is shit. Most coders are incompetent. Yada yada. It’s so easy being a zealot. It’s much harder to be a professional.

Mobbing is an objectively superior way of coding.” That statement belongs with “Microsoft sucks“.

It’s negative people projecting their bias without wanting to understand your context. It’s posturing.

A software developer is a problem solver. That means listening to the rest of the company, feeling their pains and figuring out solutions. That means compromising. A lot.

Sure, there are bad compromises and flat out wrong choices, but in my 18 years in this industry, I’ve learned this: we’re doing rather fine when it comes to software quality.

Seriously. It’s not that bad out there.

Dismiss the zealots

New techniques have value. Outlandish ideas can work. Learn and get inspired. But by all means, ignore the outsiders who tell you you’re doing it all wrong. Ain’t nobody got time for that.

Be an optimist

It’s easy to look at a product and pick out the things you don’t like. It’s so easy that most developers will do just that. Being an optimist means looking at what went right. Most software is not as bad as we think. If you open a repository and can’t find any redeeming qualities, it’s because you’re not looking.

Compromise all the time

If you want to write perfect code, side projects are your thing. Professionals compromise. Marketing wants a bigger budget. The project manager wants a more relaxed deadline. Software developers want to ditch AngularJs. You can’t always get what you want.

That’s OK. It’s not a tug-o-war. You are building a product together.

Design a way out

This is shit and we need to rewrite it from scratch” is the mating call of the incompetent developer. Professionals come up with a way forward. Gradual improvements over time. That’s not easy. Software development never is.

Take up leadership

Come up with a clear definition of the problem and a plan to get out of it. Sell it to your colleagues. Negotiate. Meet half-way. If you want to improve, build an alliance to achieve that change.

Wherever you see a techie leading, they are making deals and compromises.

Zealots get ignored, leaders get appreciated.

That’s how it works.