def programming

We crave for new sensations but soon become indifferent to them. Wonders of yesterday are today common occurrences.

Hardware eventually fails. Software eventually works.

That which optimizes one part of the system necessarily undermines the system as a whole.

Every great developer you know got there by solving problems they were unqualified to solve until they actually did it.

Teams are immutable. Every time someone leaves, or joins, you have a new team, not a changed team.

on teams

Start out with finding the right problem to solve. This is a combination of “what customers are asking for”, “what customers don’t even know they want yet” and “what can be solved with something simple to understand and manage”

Like designers, if you give a programmer a problem with parameters, they’ll apply every bit of genius they have to solve it in the best possible way. If you tell them how to do it, you’ll suffer the wrath of an angry God.

There's nothing more permanent than a temporary hack.

It can be better to copy a little code than to pull in a big library for one function. Dependency hygiene trumps code reuse.

A programmer does not primarily write code; rather, he primarily writes to another programmer about his problem solution. The understanding of this fact is the final step in his maturation as technician.

Telling a programmer there's already a library to do X is like telling a songwriter there's already a song about love.

The best error message is the one that never shows up.

on error

Almost without exception, the best products are developed by teams with desire to solve a problem; not a company's need to fulfil a strategy.

A Fallacy of Software: If it works, and we don't change anything, it will keep working.

(...) Thinking this way will teach you two things about computers: One, there’s no magic, no matter how much it looks like there is. There’s just work to make things look like magic. And two, it’s crazy in there.

Programmers are often angry because they’re often scared.

Well-designed components are easy to replace. Eventually, they will be replaced by ones that are not so easy to replace.

Things that are impossible just take longer.

Always bet on JavaScript.

Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.

Good engineers make solutions obsolete. Great engineers make themselves obsolete.

Big data is like teenage sex: everyone talks about it, nobody really knows how to do it, everyone thinks everyone else is doing it, so everyone claims they are doing it...

on data

And the reason these things take a generation is because ultimately we do not change people's minds. We have to wait for the previous generation to retire or die before we can get critical mass on the next idea. So it's like we look around: "Are they gone?"

There is no single development, in either technology or management
technique, which by itself promises even one order-of-magnitude
improvement within a decade in productivity, in reliability, in simplicity.

Treat your code like poetry and take it to the edge of the bare minimum.

Built with using

Source code available @ githubpull requests are more than welcome ;-)