A short thought can bring amazing ideas
TL;DR: There are some great quotes I've been collecting.
I use them as inspiration or a motto for some articles.
Here we go:
First make the change easy (warning: this might be hard), then make the easy change.
Kent Beck
Good judgement comes from experience, and experience comes from bad judgement.
Frederick P. Brooks
Object thinking focuses our attention on the problem space rather than the solution space. Object thinkers take the advice of Plato, Parnas, Fred Brooks, Christopher Alexander, and many others by letting the problem define its own solution
David West
Voluminous documentation is part of the problem, not part of the solution.
Tom DeMarco
Before you use a method in a legacy system, check to see if there are tests for it. If there aren't, write them. When you do this consistently, you use tests as a medium of communication.
Michael Feathers
The biggest issue on software teams is making sure everyone understands what everyone else is doing.
Martin Fowler
Object thinking focuses our attention on the problem space rather than the solution space.
David West
Programming isn't about what you know; it's about what you can figure out.
Chris Pine
The best way to start fixing a bug is to make it reproducible. After all, if you can't reproduce it, how will you know if it is ever fixed?
Andrew Hunt
The danger from computers is not that they will eventually get as smart as men, but that we will meanwhile agree to meet them halfway.
Bernard Avishai
The only truly secure system is one that is powered off, cast in a block of concrete and sealed in a lead-lined room with armed guards.
Gene Spafford
I've finally learned what 'upward compatible' means. It means we get to keep all our old mistakes.
Dennie van Tassel
If it doesn't work, it doesn't matter how fast it doesn't work.
Mich Ravera
If you lie to the compiler, it will get its revenge.
Henry Spencer
Final source code is the real software design.
Jack Reeves
Make it correct, make it clear, make it concise, make it fast. In that order.
Wes Dyer
If someone claims to have the perfect programming language, he is either a fool or a salesman or both.
Bjarne Stroustrup
If you can get today's work done today, but you do it in such a way that you can't possibly get tomorrow's work done tomorrow, then you lose.
Martin Fowler
There's nothing more permanent than a temporary hack.
Kyle Simpson
The purpose of computing is insight, not numbers.
Richard Hamming
Software and cathedrals are much the same. First we build them, then we pray.
Sam Redwine
Discovery consists of seeing what everyone else has seen and thinking what no one else has thought.
Albert Szent-Gyorgi
Eighty percent of all input forms ask questions they have no business asking.
Mike Garey
A primary cause of complexity is that software vendors uncritically adopt almost any feature that users want.
Niklaus Wirth
Programs, like people, get old. We can't prevent aging, but we can understand its causes, limit its effects and reverse some of the damage.
Mario Fusco
Bugs lurk in corners and congregate at boundaries.
Boris Beizer
Simple systems are not feasible because they require infinite testing.
Norman Ralph Augustine
C is quirky, flawed, and an enormous success.
Dennis M. Ritchie
Conceptual integrity is the most important consideration in system design.
Frederick P. Brooks
I can't be as confident about computer science as I can about biology. Biology easily has 500 years of exciting problems to work on. It's at that level.
Donald Knuth
Don't worry about design, if you listen to your code a good design will appear...Listen to the technical people. If they are complaining about the difficulty of making changes, then take such complaints seriously and give them time to fix things.
Martin Fowler
It is far easier to design a class to be thread-safe than to retrofit it for thread safety later.
Brian Goetz
Defect-free software doesn't exist.
Wietse Venema
Just because something is easy to measure doesn't mean it's important.
David Heinemeier Hansson
Behavior is the most important thing about software. It is what users depend on. Users like it when we add behavior (provided it is what they really wanted), but if we change or remove behavior they depend on (introduce bugs), they stop trusting us.
Michael Feathers
Code should be remarkably expressive to avoid most of the comments. There'll be a few exceptions, but we should see comments as an 'failure of expression' until proven wrong.
Robert Martin
Builder pattern is more verbose than the telescoping constructor pattern, so it should be used only if there are enough parameters, say, four or more.
Joshua Bloch
Complexity is a sign of technical immaturity. Simplicity of use is the real sign of a well design product whether it is an ATM or a Patriot missile.
Daniel T. Ling
We are constantly interfacing with other people's code that might not live up to our high standards and dealing with inputs that may or may not be valid. So we are taught to code defensively. We use assertions to detect bad data and check for consistency.
Andrew Hunt
Don't use humans for jobs computers can do better - this is a waste of human energy and creativity, the only real resource on this planet, and demeans the human spirit.
J. Paul Morrison
On two occasions, I have been asked [by members of Parliament], "if you put into the machine wrong figures, will the right answers come out?"...I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.
Charles Babbage
Forget this world and all its troubles and if possible its multitudinous Charlatans - everything in short but the Enchantress of Numbers.
Ada Lovelace
While it is a known fact that programmers never make mistakes, it is still a good idea to humor the users by checking for errors at critical points in your program.
Robert D. Schneider
First, solve the problem. Then, write the code.
John Johnson
The main activity of programming is not the origination of new independent programs, but in the integration, modification, and explanation of existing ones.
Terry Winograd
This 'users are idiots, and are confused by functionality' mentality of Gnome is a disease. If you think your users are idiots, only idiots will use it.
Linus Torvalds
The best programmers write only easy programs.
Michael A. Jackson
If Mc Donalds were run like a software company, one out of every hundred Big Macs would give you food poisoning — and the response would be, "We're sorry, here's a coupon for two more".
Mark Minasi
Tell me and I forget. Teach me and I remember. Involve me and I learn.
Benjamin Franklin
Programmers are often angry because they're often scared.
Paul Ford
Rules of Optimization: Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet.
Michael A. Jackson
If you think technology can solve your security problems, then you don't understand the problems and you don't understand the technology.
Bruce Schneier
This fascination with computer models is something I understand very well. Richard Feynman called it a disease. I fear he is right.
Michael Crichton
Criticism isn't just disliking things. Arts schools teach the skill & the respect for the work. Computer science schools don't.
Kent Beck
The most effective debugging tool is still careful thought, coupled with judiciously placed print statements.
Brian W. Kernighan
Feedback is essential to our ability to learn. Without fast, effective feedback, we are guessing. Both the speed and the quality of feedback matter. If feedback is too late, it is useless. If it is misleading or wrong, the decisions that we make will be wrong, too
Dave Farley
Defects are not free. Somebody makes them, and gets paid for making them.
Edwards Deming
The heart of software is its ability to solve domain-related problems for its user. All other features, vital though they may be, support this basic purpose.
Eric Evans
Errors have occurred. We won't tell you where or why. Lazy programmers.
Charlie Gibbs
Any man can make mistakes, but only an idiot persists in his error.
Marcus Cicero
If you have to spend effort to decipher code, you should rewrite it.
Martin Golding
More good code has been written in languages denounced as "bad" than in languages proclaimed "wonderful" — much more.
Bjarne Stroustrup
There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. And the other way is to make it so complicated that there are no obvious deficiencies.
C. A. R. Hoare
When I first got into technology I didn't really understand what open source was. Once I started writing software, I realized how important this would be.
Matt Mullenweg
The problem is, in software design, often the consequences of your decisions don't become apparent for years.
Kent Beck
Being forced to write comments actually improves code, because it is easier to fix a crock than to explain it.
G. Steele
We crave for new sensations but soon become indifferent to them. Wonders of yesterday are today common occurrences.
Nikola Tesla
Tests should be even more readable then the code they cover
Shaun Wessel
A function name should be a verb or a verb phrase, and it needs to be meaningful
Robert C. Martin
Pair programmers: Keep each other on task. Brainstorm refinements to the system. Clarify ideas. Take initiative when their partner is stuck, thus lowering frustration. Hold each other accountable to the team's practices.
Kent Beck
Obsolete comments tend to migrate away from the code they once described. They become floating islands of irrelevance and misdirection in the code.
Bob Martin
If you are choosing a JavaScript library purely based on popularity, I think you deserve what you get.
Tom Dale
Today, most software exists, not to solve a problem, but to interface with other software.
I Angell
On almost anything someone does in the computer business, you can go back in the literature and prove someone had done it earlier.
Ken Olsen
Computers are good at following instructions, but not at reading your mind.
Donald Knuth
The question of whether a computer can think is no more interesting than the question of whether a submarine can swim.
Edsger W. Dijkstra
A bad system will beat a good person every time.
Edwards Deming
The fantastic element that explain the appeal of dungeon games to many programmers is neither the fire-breathing monsters nor the milkyskinned, semi-clad sirens; it is the experience of carrying out a task from start to finish without user requirements changing.
Thomas Holaday
Computer science is a restless infant and its progress depends as much on shifts in point of view as on the orderly development of our current concepts.
Alan Perlis
Sun Microsystems had the right people to make Java into a first-class language, and I believe it was the Sun marketing people who rushed the thing out before it should have gotten out.
Alan Kay
Code is design
Ward Cunningham
A well installed microcode bug will be almost impossible to detect.
Ken Thompson
Science is what we understand well enough to explain to a computer, Art is all the rest
Donald Knuth
The cardinal rule of writing unmaintainable code is to specify each fact in as many places as possible and in as many ways as possible.
Roedy Green
Programs must be written for people to read, and only incidentally for machines to execute.
Harold Abelson
Feedback is the breakfast of champions.
Ken Blanchard
If you make a general statement, a programmer says, 'Yes, but...' while a designer says, 'Yes, and...'
André Bensoussan
Every Time you Encounter a Testability Problem, there's an Underlying Design Problem
Michael Feathers
Memory is like an orgasm. It's a lot better if you don't have to fake it.
Seymour Cray
Email is a wonderful thing for people whose role in life is to be on top of things. But not for me; my role is to be on the bottom of things. What I do takes long hours of studying and uninterruptible concentration
Don Knuth
A bug is never just a mistake. It represents something bigger.
Sergey Zefirov
You can't communicate complexity, only an awareness of it.
Alan Perlis
A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable.
Leslie Lamport
The greatest obstacle to discovery is not ignorance, but the illusion of knowledge.
Daniel Boorstin
Programmers are as emotional and irrational as normal people.
Douglas Crockford
There is nothing so useless as doing efficiently that which should not be done at all.
Peter Drucker
Computer science research is different from these more traditional disciplines. It differs from the physical sciences because it seeks not to discover, explain, or exploit the natural world, but instead to study the properties of machines of human creation
Dennis Ritchie
You can mass-produce hardware; you can't mass-produce software; you can't mass-produce the human mind.
Michio Kaku
Coding is about writing code while programming is coding and thinking
Leslie Lamport
Testing leads to failure, and failure leads to understanding.
Burt Rutan
The lesson is: Even if you know exactly what is going on in your system, measure performance, don't speculate. You'll learn something, and nine times out of ten, it won't be that you were right!
Ron Jeffries
Software engineering is not the same thing as computer science, though we often confuse the two. We need both software engineers and computer scientists.
Dave Farley
Languages that try to disallow idiocy become themselves idiotic.
Rob Pike
Watch the little things; a small leak will sink a great ship.
Benjamin Franklin
No one hates software more than software developers.
Jeff Atwood
Come to think of it, there are already a million monkeys on a million typewriters, and Usenet is nothing like Shakespeare.
Blair Houghton
A good enough first version will take longer to produce with $170K than it would have with $0K.
Jason Fried
The objective of cleaning is not just to clean, but to feel happiness living within that environment.
Marie Kondo
When I write software, I know that it will fail, either due to my own mistake, or due to some other cause.
Wietse Venema
Objects are there for the picking.
Bertrand Meyer
Spaghetti code is a program with its logic tangled like spaghetti. Avoid the tangles, and you simplify your life.
Martin Fowler
Instead of working on a feature until it is "finished", CI and its big brother CD demand of us to make changes in small steps and have something ready for use after every small step. This changes how we think about the design of our system in some important ways.
Dave Farley
Don't Live with Broken Windows
Andy Hunt
Programmers don't burn out on hard work, they burn out on change-with-the-wind directives and not 'shipping'.
Mark Berry
It is hard to write even the smallest piece of code correctly.
Joshua Bloch
If you have three pet dogs, give them names. If you have 10,000 head of cattle, don't bother. Nowadays, the idea of giving a name to every file on your computer is ridiculous.
David Gelernter
The computer programmer is a creator of universes for which he alone is the lawgiver. No playwright, no stage director, no emperor, however powerful, has exercised such absolute authority to arrange a stage or field of battle.
Joseph Weizenbaum
It would be nice if products and programming languages were designed to have only good parts.
Douglas Crockford
A good programmer is someone who always looks both ways before crossing a one-way street.
Doug Linder
Alzheimer's Law of Programming: Looking at code you wrote more than two weeks ago is like looking at code you are seeing for the first time.
Dan Hurvitz
The amateur software engineer is always in search of magic.
Grady Booch
Truth can only be found in one place: the code.
Robert C. Martin
So much complexity in software comes from trying to make one thing do two things.
Ryan Singer
Just as it is a good practice to make all fields private unless they need greater visibility, it is a good practice to make all fields final unless they need to be mutable.
Brian Goetz
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
One day my daughter came in, looked over my shoulder at some Perl 4 code, and said, "What is that, swearing?"
Larry Wall
I think it's very important to get more women into computing. My slogan is: Computing is too important to be left to men.
Karen Spärck Jones
Code is like humor. When you have to explain it, it's bad.
Cory House
Code should be written to be read by humans first, and machines second.
Don Laabs
Smart data structures and dumb code works a lot better than the other way around.
Eric Raymond
Legacy code is code without tests.
Michael Feathers
Simplicity is hard to build, easy to use, and hard to charge for. Complexity is easy to build, hard to use, and easy to charge for.
Chris Sacca
I try to think mostly in terms of preconditions, and checking things in the constructor and the beginning of a function.
Brad Fitzpatrick
Developer testing is an important step towards accountability. It gives developers a way to demonstrate the quality of the software they produce.
Kent Beck
We argue that design practices which take a data-driven approach fail to maximize encapsulation because they focus too quickly on the implementation of objects. We propose an alternative object-oriented design method which takes a responsibility-driven approach.
Rebecca Wirfs-Brock
There are two ways to write error-free programs; only the third one works.
Alan J. Perlis
A true professional doesn't waste the time and money of other people by handing over software that is not reasonably free of obvious bugs; that has not undergone minimal unit testing; that doesn't meet the specifications and requirements; that is gold-plated with unnecessary features; or that looks like junk.
Daniel Read
Part of the objective of this series of articles is to generate spaces for debate and discussion on software design.
We look forward to comments and suggestions on this article.