Updated: 2021-11-19
  • You cannot improve what you cannot measure

  • data visualization: "Overview first, zoom and filter, then details-on-demand."

  • Strong cohesion, Low coupling

  • Postel's Law(robustness principle): Be conservative in what you do, be liberal in what you accept from others.

  • Conway's Law: Any organization that designs a system will inevitably produce a design whose structure is a copy of the organization's communication structure.

  • Docker: Batteries Included, But Replaceable

  • LAMPSON’S LAW: “Get it right. Neither abstraction nor simplicity is a substitute for getting it right.” (“Hints for Computer Systems Design”)

  • LESS CODE IS BETTER CODE (LAUER’S LAW) “If the same people had twice as much time, they could produce as good of a system in half the code.”

  • Perl – The only language that looks the same before and after RSA encryption.

  • spullara: I once asked Gordon Moore what the software equivalent of Moore's law was, he responded without pause: "the number of bugs doubles every 18 months".

  • git: porcelain and the plumbing

  • tolerant reader(Martin Fowler): ignore changes we do not care about, e.g. use XPath(xml) or JsonPath(json) to extract the parts we care

  • Erlang creator Mike Williams point: “If you don’t make experiments before starting a project, then your whole project will be an experiment”.

  • Glenn Vanderburg: “Developers should always understand one layer of abstraction below their everyday work.”

  • Donald Knuth: “Premature optimization is the root of all evil.

Perfection is achieved, not when there is nothing left to add, but when there is nothing left to remove. -- Antoine de Saint-Exupery

Everything should be made as simple as possible, but not simpler. -- Albert Einstein

All other things being equal, the simplest solution is the best. -- Occam’s Razor

  • if you’re not embarrassed by the first version, you waited too long to ship it.

  • "as with all software, at times older tools required shims and bridges to make everything work together."

Java = domain-specific language converting large XML files into stacktraces

Software Developers and Programmers Quotes

  1. A good programmer is someone who always looks both ways before crossing a one-way street. (Doug Linder)

  2. Don’t worry if it doesn't work right. If everything did, you’d be out of a job. (Mosher’s Law of Software Engineering)

  3. The trouble with programmers is that you can never tell what a programmer is doing until it’s too late. (Seymour Cray)

  4. Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris. (Larry Wall)

  5. Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. (Martin Golding)

  6. One man’s crappy software is another man’s full time job. (Jessica Gaston)

  7. If builders built buildings the way programmers wrote programs, then the first woodpecker that came along wound destroy civilization. (Gerald Weinberg)

  8. The most likely way for the world to be destroyed, most experts agree, is by accident. That’s where we come in; we’re computer professionals. We cause accidents. (Nathaniel Borenstein)

  9. It’s a curious thing about our industry: not only do we not learn from our mistakes, we also don’t learn from our successes. (Keith Braithwaite)

  10. Once a new technology starts rolling, if you’re not part of the steamroller, you’re part of the road. (Stewart Brand)

  11. If at first you don’t succeed, call it version 1.0 (unknown)

  12. All programmers are playwrights and all computers are lousy actors. (Anonymous Hack Actor)

  13. The sooner you get behind in your work, the more time you have to catch up. (Anonymous Scheduler)

  14. When a programming language is created that allows programmers to program in simple English, it will be discovered that programmers cannot speak English. (Anonymous Linguist)

  15. Why do we never have time to do it right, but always have time to do it over? (Anonymous)

  16. Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

  17. Any code of your own that you haven't looked at for six or more months might as well have been written by someone else. (Eagleson's law)

Programming / Software Development Quotes

  1. Measuring programming progress by lines of code is like measuring aircraft building progress by weight. (Bill Gates)

  2. Programming is like sex. One mistake and you have to support it for the rest of your life. (Michael Sinz)

  3. Walking on water and developing software from a specification are easy if both are frozen. (Edward V Berard)

  4. The first 90 percent of the code accounts for the first 90 percent of the development time…The remaining 10 percent of the code accounts for the other 90 percent of the development time.(Tom Cargill)

  5. Commenting your code is like cleaning your bathroom — you never want to do it, but it really does create a more pleasant experience for you and your guests. (Ryan Campbell)

  6. Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. (Rick Cook)

  7. The hardest part of design … is keeping features out. (Donald Norman)

  8. In order to understand recursion, one must first understand recursion. (Anonymous)

  9. There are only two kinds of programming languages: those people always bitch about and those nobody uses. (Bjarne Stroustrup)

  10. The best thing about a boolean is even if you are wrong, you are only off by a bit. (Anonymous)

  11. If Java had true garbage collection, most programs would delete themselves upon execution. (Robert Swell)

  12. In theory, there is no difference between theory and practice. But, in practice, there is. (Jan L. A. van de Snepscheut)

  13. Ready, fire, aim: the fast approach to software development. Ready, aim, aim, aim, aim: the slow approach to software development. (Anonymous)

  14. Programming is 10% science, 20% ingenuity, and 70% getting the ingenuity to work with the science. (Anonymous)

  15. It is easier to measure something than to understand what you have measured. (Anonymous)

  16. Benchmarks don’t lie, but liars do benchmarks. (Anonymous)

  17. Better train people and risk they leave – than do nothing and risk they stay. (Anonymous)

  18. The goal of Computer Science is to build something that will last at least until we've finished building it. (Anonymous)

  19. Java is to JavaScript what Car is to Carpet. (Chris Heilmann)

  20. It's not at all important to get it right the first time. It's vitally important to get it right the last time. (Andrew Hunt and David Thomas)

  21. Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. (Stan Kelly-Bootle)

  22. Programs must be written for people to read, and only incidentally for machines to execute. (Abelson / Sussman)

  23. Programming can be fun, so can cryptography; however they should not be combined. (Kreitzberg and Shneiderman)

  24. Copy and paste is a design error. (David Parnas)

  25. Computers are good at following instructions, but not at reading your mind. (Donald Knuth)

Software Debugging Quotes

  1. Deleted code is debugged code. (Jeff Sickel)

  2. If debugging is the process of removing software bugs, then programming must be the process of putting them in. (Edsger Dijkstra)

  3. Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are–by definition–not smart enough to debug it.

  4. It's hard enough to find an error in your code when you're looking for it; it's even harder when you've assumed your code is error-free. (Steve McConnel)

Software Bugs Quotes

  1. It’s not a bug – it’s an undocumented feature. (Anonymous)

  2. Without requirements or design, programming is the art of adding bugs to an empty text file. (Louis Srygley)

  3. Bad code isn’t bad, its just misunderstood. (Anonymous Code Behaviorist)

  4. There are two ways to write error-free programs; only the third one works. (Alan J. Perlis)

  5. Beware of bugs in the above code; I have only proved it correct, not tried it. (Donald Knuth)

Software / End Product Quotes

  1. Before software can be reusable it first has to be usable. (Ralph Johnson)

  2. Software undergoes beta testing shortly before it’s released. Beta is Latin for “still doesn't work". (Anonymous)

  3. The best performance improvement is the transition from the nonworking state to the working state. (J. Osterhout)

  4. The cheapest, fastest, and most reliable components are those that aren't there. (Gordon Bell)

  5. I think Microsoft named .Net so it wouldn’t show up in a Unix directory listing. (Oktal)

  6. Software and cathedrals are much the same – first we build them, then we pray. (Sam Redwine)

  7. The software isn’t finished until the last user is dead. (Anonymous)

  8. Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves. (Alan Kay)

@rbranson's tweet

Things I once held as sincere beliefs:

  • Databases are bad queue backends
  • Static typing is a waste of time
  • Monoliths are always worse
  • Strong consistency isn't worth fighting for
  • Using the "right" tool always trumps using the one you know
  • The JVM sucks


  • We just had a discussion in the team, and we decided, that we need add-one microservice that would get a number and return the number increased by one. A nice separation of concerns in modern distributed web application
  • Norvig's Law: Any technology that surpasses 50% penetration will never double again(in any number of months). http://www.norvig.com/norvigs-law.html

In the words of Andrew Tanenbaum

  • “A multithreaded file system is only a performance hack” or, as Tony Hoare remarked, “concurrent programs wait faster”.
  • “However, as every parent of a small child knows, converting a large object into small fragments is considerably easier than the reverse process.”
  • “The nice thing about standards is that you have so many to choose from.”