Views that 2011 reinforced
If you start an article on New Year’s Day, you have two choices. Look back on the past year or predict what the new one will bring. My past forecasts were about as reliable as the Greek statistical office’s estimates of its country’s debt, so I’ll pass this year. I don’t want to write a recap of 2011 either. I’ll share the views the year reinforced for me.
Life in IT
Methodology, technology and the quality of the people available account for only a small part of most IT problems. The main cause is poor communication, or rather its absence, and unclear responsibility. That also breeds an impulse to cover yourself, which I’d venture is a typically Czech trait, in IT and beyond.
Good news. The Czech knack for making things with our hands is real. The bad news is that it held for our fathers’ generation, which was hardened by socialism and chronic shortages. In IT, our prospects are limited by the price at which we’re seen as cheap labor from the East. If we want to change that, we have to do three things. Work hard, try to innovate, and keep developing our knowledge and skills.
The idea of a Renaissance person is more than one of Filemon’s favorite lines. Anyone who’s looked beyond their own field will back it up. If you specialize narrowly in just one area, heaven forbid only IT, you’ll miss the perspective and inspiration you need to get to the next level. Books and fields of every kind are full of parallels you can apply successfully in IT. It would be a mistake to shut your eyes to them.
One proverb says, “Better to be an eagle for a day than a sheep all your life.” I think it was Steve Jobs who said, “It’s better to be a pirate than to join the navy.” My point is that if you believe in something, a technology or an approach, follow it even when you feel you’re banging your head against a wall.
The best way to put your ideas and opinions to the test is to air them publicly. You might be wrong or right. Staying silent is the worst approach. There’s nothing wrong with disagreeing. The mistake is having no opinion at all. The best exchanges are usually with people who see things entirely differently.
Programming
Programming is a trade like any other. If you want to get really good at it, expect at least ten years of intensive work. Expect to be wrong often and to have to rethink approaches you used to believe were right.
Complex code is hard to unit test. Code without unit tests has poor object-oriented design. Poorly designed object-oriented code is a bucket of manure. Better to kick the bucket over and start again properly. Object-oriented design and API design never come out right the first time. Refactor until you’re completely happy with every detail. Any debt you take on, including technical debt, will catch up with you later.
There’s no such thing as collective code ownership. Every line of code, class and module has one owner responsible for it. Never accept a contribution you wouldn’t put your own name to.
The devil is in the details. Be a perfectionist about the code and everything around it, including structure, internal and public documentation, and consistency.
Work on performance at the design level. Code changes can affect performance by a few percent. Design changes can affect it by tens of percent.
Related articles
Related CZ Podcast episodes
- #261 · Leadership
On leading people and teams. · Czech audio