Lessons learned from Pieter Hintjens

Lessons learned from Pieter Hintjens

The Confessions of a Necromancer is a professional road trip, written by Pieter Hintjens for his fellow programmers. He shares all the lessons that he learned in his life.

Some of them are :

  • Most of the time, most large software projects fail, and this is still true in 2016.
  • The very notion of individual intelligence is a dangerously simplified myth.
  • Technology is a slave to personality.
  • You need to follow the money, and understand how it flows.
  • The more your clients pay you, the more they appreciate you and listen to what you say.
  • To get consistent and fast response in a real time system, you have to work asynchronously.
  • If you have the trust of your client, and s/he has real power, you have done half the work already.
  • Identify the riskiest parts of your architecture and bring them under your full control.
  • Making systems more complex, to try to make them “reliable” will usually make them less reliable.
  • Fail-over automatically and recover manually.
  • Don’t expect random work from random vendors to magically work together.
  • Do not develop and test in your production environment.
  • When things go wrong that even marginally involve you, assume responsibility until you know where the real problem lies
  • When you use hardware and software that bends to your will, you can work significantly faster.
  • When you are a technology company, use your own technology in your projects. Don’t accept client requirements that sabotage your own vision and future. It isn’t worth the short term gains.
  • You can do a lot with little, if you are creative.
  • Don’t take “impossible” as an answer
  • Everyone lies, not always deliberately. We just have our assumptions and ignorance and we believe we’re telling the truth.
  • Build up trust with the client and sometimes they will reward you for it.
  • When you’ve paid for all the mistakes, you should know how to do it right the next time.
  • A good specification lets diverse people work together without confusion or conflict.
  • Don’t be afraid to charge the real cost.
  • It is ironic that a “successful” project can be a “failure”, while catastrophically bad projects can push you through to better things.
  • Breaking into markets you don’t know is probaby impossible.
  • Mobile phone operators are crooks who steal billions
  • Be aware of your expenditure and manage your losses. You can survive a long time with less income if you are in tight control of what you spend.
  • It is no favor to pay people to do idle work.
  • When you hire someone, tell yourself, and them, one day this will be over.
  • Prefer working with self-employed partners because that doesn’t need to be stated, it’s explicit.
  • Don’t try to fix existing organizations. Start new ones.
  • I recommend the Mozilla Public License v2 in general. It allows forks and prohibits dark forks, and is not tainted by Microsoft’s long “viral” campaign against the GPLv3.
  • Good software is used by people to solve real problems. Good software saves people money, or makes them a profit. It can be buggy, incomplete, undocumented, slow. Yet it can also be good. You can always make good software better yet it’s only worth doing when it’s already good.
  • Be patient, don’t give up, and always be learning.
  • You can turn even the most crappy situation into valuable lessons.
  • Don’t let people flatter you into playing their games.
  • When things get weird, keep a log.
  • Love and respect good people.
  • Learn to keep the assholes at a distance.
  • Don’t get hung-up on the past.
  • Be nice to people, even those trying to hurt you.
  • Speak up when things are bad, and tell the truth.
  • Trust your emotions yet check where they come from.
  • Don’t be afraid of taking risks, and learn to identify and manage risks.
  • Solve one problem at a time.
  • Be generous.
  • Teach others whenever you can.
  • Remember Sturgeon’s Law.