29 January 2016
There is a small cottage industry of producing lists of "falsehoods programmers believe about…". For example:
Falsehoods programmers believe about…
While it’s very instructive reading these, it leads me to question why the most obvious area of ignorance in programming is overlooked: programming. Because really, programmers are pathetic when it comes to knowing about their very own discipline. So without further ado here is a list of falsehoods programmers believe about programming (and themselves). Note, each item on this list is a demonstrable falsehood!
Programming is a single discipline.
OK, so maybe not a single discipline, but a small number of closely-related disciplines.
OK, then, a large number of closely-related disciplines.
Would you believe loosely-related?
There are full-stack developers.
There is a meaningful concept behind the term "full-stack developer".
I am a 10× programmer.
10× programmers exist.
Programming is an engineering discipline.
Programming can be an engineering discipline.
Programming is mathematics.
Writing programs for a living means knowing programming.
Skills picked up working in one problem domain can be easily transported to another problem domain.
Most processors in active use are 32-bit or larger.
16-bit or larger?
8-bit or larger?
OH COME ON!
Programmers have more logical minds than other people.
Programmers are better at picking up disparate knowledge from other domains than other professionals.
Programmers know more about politics than anybody else.
Programmers know more about nutrition than anybody else.
Programmers know more about medicine than anybody else.
Programmers know more about music than anybody else.
Programmers know more about religion than anybody else.
Programmers are professionals.
Static typing guarantees good software.
Dynamic typing guarantees poor software.
Testing guarantees good software.
Programmers can test their own code.
Programmers can document their own code.
The compiler won’t have bugs.
The compiler won’t have show-stopping bugs.
The compiler’s bugs will be fixed quickly.
The compiler’s bugs can be fixed.
The libraries I use won’t have bugs.
The libraries I use won’t have show-stopping bugs.
The libraries I use will have their bugs fixed quickly.
The libraries I use have bugs that can be fixed.
Because the bugs are in their code, not mine.
Writing your own code is superior to using someone else’s.
Using someone else’s code is superior to writing your own.
Big-O performance is the only relevant speed measure; constant factors are unimportant.
It’s easy to make a good UX as long as the core problem domain code is sound.
It’s easy to add security after you’ve made the rest of the software.
It’s easy to add i18n and l10n to a program after you’ve done the core problem domain.
Network-based programs are just like non-networked ones.
My programming language is best.
My programming language is useful in all situations.
My programming language has no flaws.
The term "domain-specific language" has meaning.
The term "framework" has meaning.
It is meaningful to talk about the speed of a programming language.
New programming languages are superior to old ones.
Old programming languages are superior to new ones.
All programming languages are the same because Turing something handwave.
Object-oriented programming is the silver bullet that saved software.
Design patterns are the silver bullet that saved object-oriented programming.
Functional programming is the silver bullet that saved us from patterns.
You have no need for design patterns in functional programming.
Functional programming is the height of programming skill and knowledge.
Programmers should care about coding, not people.
Social problems have technical solutions.
Social problems are solved by slavish rules-following.
Social problems are unimportant to programming.
Social problems are of overriding importance in programming.
Mainframes are dead.
PCs are dead.
Concurrency is new.
Parallelism is new.
High level languages are always slower than low-level languages.
Hand-written assembly is better than compiled code.
Stupid titles like wizard/guru/rockstar/ninja sound cool instead of utterly and dispiritingly vapid.
This list is a joke.