def programming

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

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.

The best reaction to "this is confusing, where are the docs" is to rewrite the feature to make it less confusing, not write more docs.

Data dominates. If you’ve chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming. 

on data

No code is faster than no code.

When in doubt, leave it out.

Languages that try to disallow idiocy become themselves idiotic.

Security is a state of mind.

A program is like a poem: you cannot write a poem without writing it.

The key is to acknowledge from the start that you have no idea how this will grow. When you accept that you don't know everything, you begin to design the system defensively... You should spend most of your time thinking about interfaces rather than implementations.

It's important to remember that when you start from scratch there is absolutely no reason to believe that you are going to do a better job than you did the first time. First of all, you probably don't even have the same programming team that worked on version one, so you don't actually have "more experience". You're just going to make most of the old mistakes again, and introduce some new problems that weren't in the original version.

I hate code, and I want as little of it as possible in our product.

The craft of programming begins with empathy, not formatting or languages or tools or algorithms or data structures.

Writing software as if we are the only person that ever has to comprehend it is one of the biggest mistakes and false assumptions that can be made.

Scrum is like the rules of soccer. Following them does not make you a good player.

The art of programming is the art of organizing complexity, of mastering multitude and avoiding its bastard chaos as effectively as possible.

Built with using

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