Software Engineering Great Quotes
19 July, 2022
4
4
1
Contributors
There are some great quotes I’ve been collecting.
I use them as inspiration or motto for some articles.
Software Design
There are only two hard things in Computer Science: cache invalidation and naming things.
Phil Karlton
https://maximilianocontieri.com/what-exactly-is-a-name-part-i-the-quest
https://maximilianocontieri.com/code-smell-49-caches
Make illegal states unrepresentable.
Yaron Minsky
https://maximilianocontieri.com/the-evil-powers-of-mutants
First make the change easy (warning: this might be hard), then make the easy change.
Kent Beck
https://maximilianocontieri.com/code-smell-35-state-as-properties
Object-oriented programming languages support encapsulation, thereby improving the ability of software to be reused, refined, tested, maintained, and extended. The full benefit of this support can only be realized if encapsulation is maximized during the design process.
Rebecca Wirfs-Brock
https://maximilianocontieri.com/code-smell-28-setters
Don’t automate an undisciplined workflow. The computer won’t solve what the customer’s management can’t.
Larry Bernstein
Science is what we understand well enough to explain to a computer. Art is everything else we do.
Donald Knuth
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
In software systems it is often the early bird that makes the worm.
Alan Perlis
The biggest issue on software teams is making sure everyone understands what everyone else is doing.
Martin Fowler
A programming language is a tool that has a profound influence on our thinking habits.
Edsger Dijkstra
Object thinking focuses our attention on the problem space rather than the solution space.
David West
The essence of XML is this: the problem it solves is not hard, and it does not solve the problem well.
Phil Wadler
Software is like entropy: It is difficult to grasp, weighs nothing, and obeys the Second Law of Thermodynamics; i.e., it always increases.
Norman Augustine
The key to performance is elegance, not battalions of special cases.
Jon Bentley and Douglas McIlroy
We comfort ourselves with the belief that if the customers had just been happy with what they said they needed, the design would have been fine. It’s the customer’s fault for changing the requirements on us.
Robert Martin
PHP is a minor evil perpetrated and created by incompetent amateurs, whereas Perl is a great and insidious evil, perpetrated by skilled but perverted professionals.
Jon Ribbens
At any particular point in time, the features provided by our programming languages reflect our understanding of software and programming.
R. E. Fairley
Programming isn't about what you know; it's about what you can figure out.
Chris Pine
In general, the longer you wait before fixing a bug, the costlier (in time and money) it is to fix.
Joel Spolsky
Nothing is harder than working under a tight deadline and still taking the time to clean up as you go.
Kent Beck
https://maximilianocontieri.com/code-smell-109-automatic-properties
When I’m studying code, refactoring leads me to higher levels of understanding that I would otherwise miss. Those who dismiss comprehension refactoring as useless fiddling with the code don’t realize they never see the opportunities hidden behind the confusion.
Martin Fowler
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
A computer once beat me at chess, but it was no match for me at kick boxing.
Emo Philips
Later Equals Never.
LeBlanc's Law
People think that computer science is the art of geniuses but the actual reality is the opposite, just many people doing things that build on each other, like a wall of mini stones.
Donald Knuth
Your most unhappy customers are your greatest source of learning.
Bill Gates
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
In programming, if someone tells you “you’re overcomplicating it,” they’re either 10 steps behind you or 10 steps ahead of you.
Andrew Clark
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
https://maximilianocontieri.com/code-smell-120-sequential-ids
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
https://maximilianocontieri.com/code-smell-118-return-false
Sometimes it pays to stay in bed on Monday, rather than spending the rest of the week debugging Monday's code.
Dan Salomon
Weeks of programming can save you hours of planning.
Anonymous
It’s OK to figure out murder mysteries, but you shouldn’t need to figure out code. You should be able to read it.
Steve McConnell
https://maximilianocontieri.com/code-smell-74-empty-lines
There is an art to knowing where things should be checked and making sure that the program fails fast if you make a mistake. That kind of choosing is part of the art of simplification.
Ward Cunningham
I've finally learned what 'upward compatible' means. It means we get to keep all our old mistakes.
Dennie van Tassel
https://maximilianocontieri.com/code-smell-104-assert-true
The software isn’t finished until the last user is dead.
Sidney Markowitz
An error arises from treating object variables (instance variables) as if they were data attributes and then creating your hierarchy based on shared attributes. Always create hierarchies based on shared behaviors, side.
David West
https://maximilianocontieri.com/code-smell-114-empty-class
Information shared by an object might or might not be part of the structure of that object. That is, the object might compute the information, or it might delegate the request for information to another object.
Rebecca Wirfs Brooks
The cheapest, fastest and most reliable components of a computer system are those that aren’t there.
Gordon Bell
You can prove anything by mentioning another computer language.
Larry Wall
Your obligation is that of active participation. You should not act as knowledge-absorbing sponges, but as whetstones on which we can all sharpen our wits.
Edsger W. Dijkstra
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
https://maximilianocontieri.com/code-smell-84-max-less-min-javascript
Without requirements or design, programming is the art of adding bugs to an empty text file.
Louis Srygley
Encapsulate the concept that varies.
Erich Gamma
https://maximilianocontieri.com/code-smell-103-double-encapsulation
Good programmers never write what they can steal or borrow.
Jeff Atwood
It is very hard to predict, especially the future.
Niels Bohr
https://maximilianocontieri.com/code-smell-54-anchor-boats
You cannot teach beginners top-down programming, because they don't know which end is up.
Tony Hoare
Duplication is far cheaper than the wrong abstraction.
Sandi Metz
Learn not to add too many features right away, and get the core idea built and tested.
Leah Culver
If it doesn’t work, it doesn’t matter how fast it doesn’t work.
Mich Ravera
https://maximilianocontieri.com/code-smell-101-comparison-against-booleans
Writing a class without its contract would be similar to producing an engineering component (electrical circuit, VLSI (Very Large Scale Integration) chip, bridge, engine...) without a spec. No professional engineer would even consider the idea.
Bertrand Meyer
Telling a programmer there's already a library to do X is like telling a songwriter there's already a song about love.
Pete Cordell
A cache with a bad policy is another name for a memory leak.
Rico Mariani
In a purely functional program, the value of a [constant] never changes, and yet, it changes all the time! A paradox!
Joel Spolsky
https://www.showwcase.com/show/15974/code-smell-02-constants-and-magic-numbers
If you lie to the compiler, it will get its revenge.
Henry Spencer
https://maximilianocontieri.com/code-smell-62-flag-variables
When your code depends on an interface, that dependency is usually very minor and unobtrusive. Your code doesn’t have to change unless the interface changes, and interfaces typically change far less often than the code behind them. When you have an interface, you can edit classes that implement that interface or add new classes that implement the interface, all without impacting code that uses the interface.
For this reason, it is better to depend on interfaces or abstract classes than it is to depend on concrete classes. When you depend on less volatile things, you minimize the chance that particular changes will trigger massive recompilation.
Michael Feathers
https://maximilianocontieri.com/code-smell-61-coupling-to-classes
Never spend 6 minutes doing something by hand when you can spend 6 hours failing to automate it.
Zhuowei Zhang
The value of a prototype is in the education it gives you, not in the code itself.
Alan Cooper
https://maximilianocontieri.com/code-smell-68-getters
When someone says, "I want a programming language in which I need only say what I want done," give him a lollipop.
Alan J. Perlis
Changes in software design will eventually mean "one step forward, two steps back". It is inevitable.
Salman Arshad
The real hero of programming is the one who writes negative code.
Douglas McIlroy
https://maximilianocontieri.com/code-smell-119-stairs-code
Mathematicians stand on each others' shoulders and computer scientists stand on each others' toes.
Richard Hamming
The code you write makes you a programmer. The code you delete makes you a good one. The code you don't have to write makes you a great one.
Mario Fusco
Simple things should be simple, complex things should be possible.
Alan Kay
https://maximilianocontieri.com/code-smell-31-accidental-methods-on-business-objects
Final source code is the real software design.
Jack Reeves
https://maximilianocontieri.com/code-smell-99-first-second
If you think good architecture is expensive, try bad architecture.
Brian Foote and Joseph Yoder
The whole point of getting things done is knowing what to leave undone.
Oswald Chambers
Object-oriented programming increases the value of these metrics by managing this complexity. The most effective tool available for dealing with complexity is abstraction. Many types of abstraction can be used, but encapsulation is the main form of abstraction by which complexity is managed in object-oriented programming.
Rebecca Wirfs-Brock
https://maximilianocontieri.com/code-smell-21-anonymous-functions-abusers
Make it correct, make it clear, make it concise, make it fast. In that order.
Wes Dyer
Indeed, the woes of Software Engineering are not due to lack of tools, or proper management, but largely due to lack of sufficient technical competence.
Niklaus Wirth
The last good thing written in C was Franz Schubert's Symphony Number 9.
Erwin Dieterich
There is absolutely no reason to make computers as stupid as people are.
Nigel Jacob
To me programming is more than an important practical art. It is also a gigantic undertaking in the foundations of knowledge.
Grace Hopper
The use of COBOL cripples the mind; its teaching should therefore be regarded as a criminal offense.
Edsger Dijkstra
Optimism is an occupational hazard of programming: feedback is the treatment.
Kent Beck
Hackers are arrogant geek romantics. They lack the attentive spirit of inquiry.
Bruce Sterling
https://maximilianocontieri.com/code-smell-44-magic-corrections
If someone claims to have the perfect programming language, he is either a fool or a salesman or both.
Bjarne Stroustrup
Thinking is not the ability to manipulate language; it's the ability to manipulate concepts.
Leslie Lamport
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
A computer is a stupid machine with the ability to do incredibly smart things, while computer programmers are smart people with the ability to do incredibly stupid things. They are, in short, a perfect match.
Bill Bryson
Programming is not about typing, it's about thinking.
Rich Hickey
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 S. Borenstein
There’s nothing more permanent than a temporary hack.
Kyle Simpson
https://maximilianocontieri.com/code-smell-27-associative-arrays
The trouble with programmers is that you can never tell what a programmer is doing until it’s too late.
Seymour Cray
The primary disadvantage of Wrap Method is that it can lead to poor names. In the previous example, we renamed the pay method dispatchPay() just because we needed a different name for code in the original method.
Michael Feathers
https://maximilianocontieri.com/code-smell-59-basic-do-functions
Learning to code is useful no matter what your career ambitions are.
Arianna Huffington
It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
Edsger Dijkstra
https://maximilianocontieri.com/code-smell-100-goto
Of course bad code can be cleaned up. But it’s very expensive.
Robert C. Martin
Blaming programmers has been the prevailing approach for a half century of software development: It has not solved the problem yet, so it is time to look in different directions.
Boris Beizer
80 percent of my problems are simple logic errors. 80 percent of the remaining problems are pointer errors. The remaining problems are hard.
Mark Donner
The purpose of software engineering is to control complexity, not to create it.
Pamela Zave
https://maximilianocontieri.com/code-smell-102-arrow-code
The purpose of computing is insight, not numbers.
Richard Hamming
https://maximilianocontieri.com/code-smell-71-magic-floats-disguised-as-decimals
Write shy code — modules that don't reveal anything unnecessary to other modules and that don't rely on other modules' implementations.
Dave Thomas
https://maximilianocontieri.com/code-smell-60-global-classes
Software is a gas; it expands to fill its container.
Nathan Myhrvold
The trick is to fix the problem you have, rather than the problem you want.
Bram Cohen
https://maximilianocontieri.com/singleton-the-root-of-all-evil
Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.
Bertrand Meyer
Software and cathedrals are much the same. First we build them, then we pray.
Sam Redwine
A design that doesn’t take change into account risks major redesign in the future.
Erich Gamma
https://maximilianocontieri.com/code-smell-124-divergent-change
Either way you look at it (DRY or laziness), the idea is the same: make your program flexible. When change comes (and it always does), you'll have a much easier time changing with it.
Chris Pine
https://maximilianocontieri.com/code-smell-83-variables-reassignment
Duplication is the primary enemy of a well-designed system.
Robert Martin
https://maximilianocontieri.com/code-smell-66-shotgun-surgery
Software is a gas; it expands to fill its container.
Nathan Myhrvold
https://maximilianocontieri.com/code-smell-43-concrete-classes-subclassified
I couldn't resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years.
Tony Hoare
https://maximilianocontieri.com/code-smell-12-null
One bad programmer can easily create two new jobs a year.
David Parnas
Every great developer you know got there by solving problems they were unqualified to solve until they actually did it.
Patrick McKenzie
Simplicity is prerequisite for reliability.
Edsger W. Dijkstra
Good design adds value faster than it adds cost.
Thomas C. Gale
Types are essentially assertions about a program. And I think it’s valuable to have things be as absolutely simple as possible, including not even saying what the types are.
Dan Ingalls
https://maximilianocontieri.com/code-smell-65-variables-named-after-types
Some people are good programmers because they can handle many more details than most people. But there are a lot of disadvantages in selecting programmers for that reason — it can result in programs that no one else can maintain.
Butler Lampson
Before software can be reusable it first has to be usable.
Ralph Johnson
Copying skips understanding. Understanding is how you grow. You have to understand why something works or why something is how it is. When you copy it, you miss that. You just repurpose the last layer instead of understanding all the layers underneath.
Jason Fried
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
Bugs are bugs. You write code with bugs because you do. If it’s a safe language in the sense of run-time safe, the operating system crashes instead of doing a buffer overflow in a way that’s exploitable.
Ken Thompson
https://maximilianocontieri.com/code-smell-111-modifying-collections-while-traversing
The Scrum idea of a separated Scrum Master is good for Scrum, but not appropriate for most projects. Good development requires not just talkers but doers.
Bertrand Meyer
Any sufficiently advanced bug is indistinguishable from a feature.
Bruce Brown
Premature optimization is the root of all evil
Donald Knuth
https://maximilianocontieri.com/code-smell-20-premature-optimization
When in doubt, use brute force.
Ken Thompson
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
Any problem in computer science can be solved with another level of indirection.
David Wheeler
https://maximilianocontieri.com/code-smell-50-object-keys
Computer science is not about machines, in the same way that astronomy is not about telescopes. There is an essential unity of mathematics and computer science.
Michael R. Fellows
https://maximilianocontieri.com/code-smell-89-math-feature-envy
There are two ways to write code: write code so simple there are obviously no bugs in it, or write code so complex that there are no obvious bugs in it.
Tony Hoare
https://maximilianocontieri.com/code-smell-78-callback-hell
Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do.
Donald E. Knuth
https://maximilianocontieri.com/code-smell-95-premature-classification
Computer scientists have so far worked on developing powerful programming languages that make it possible to solve the technical problems of computation. Little effort has gone toward devising the languages of interaction.
Don Norman
When the final design seems too simple for the amount of work you've put in, then you know you're done.
Brady Clark
Developers are drawn to complexity like moths to a flame, frequently with the same result.
Neal Ford
We have persistant objects, they're called files.
Ken Thompson
I am not terribly dogmatical about the goto statement. I have the uncomfortable feeling that others are making a religion out of it, as if the conceptual problems of programming could be solved by a single trick, by a simple form of coding discipline!
Edsger Dijkstra
No amount of elegant programming or technology will solve a problem if it is improperly specified or understood to begin with.
Milt Bryce
Discovery consists of seeing what everyone else has seen and thinking what no one else has thought.
Albert Szent-Gyorgi
The longer it takes for a bug to surface, the harder it is to find.
Roedy Green
It should be noted that no ethically-trained software engineer would ever consent to write a DestroyBaghdad procedure. Basic professional ethics would instead require him to write a DestroyCity procedure, to which Baghdad could be given as a parameter.
Nathaniel Borenstein
So why was it so hard to tell a computer to do something only mildly complex? Well, it wasn't the "mildly complex" part that was giving me problems; it was the "tell a computer" part.
Chris Pine
There is no code so big, twisted, or complex that maintenance can't make it worse.
Gerald M. Weinberg
First think about what the ultimate would be. Then take a step away from that, and another, until you get something you can build.
Matt Reedy
You must have long-range goals to keep you from being frustrated by short-range failures.
Charles C. Noble
In programming, the hard part isn't solving problems, but deciding what problems to solve.
Paul Graham
https://maximilianocontieri.com/code-smell-39-new-date
The key to efficient development is to make interesting new mistakes.
Tom Love
The frog just doesn’t notice the change. Don’t be like the frog. Keep an eye on the big picture. Constantly review what’s happening around you, not just what you personally are doing.
Andrew Hunt
Walking on water and developing software from a specification are easy if both are frozen.
Edward V Berard
The Diagram is Not the Model. The model is not the diagram. It is an abstraction, a set of concepts and relationships between them.
Eric Evans
https://maximilianocontieri.com/code-smell-47-diagrams
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
No crisis inside a computer is worth humiliating a human.
Alan Cooper
I love software, because if you can imagine something, you can build it.
Ray Ozzie
Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defense against complexity.
D. Gelernter
Small minds are concerned with the extraordinary, great minds with the ordinary.
Blaise Pascal
Sometimes it is the people no one can imagine anything of who do the things no one can imagine.
Alan Turing
It can be better to copy a little code than to pull in a big library for one function. Dependency hygiene trumps code reuse.
Rob Pike
I think you should always bear in mind that entropy is not on your side.
Elon Musk
Computer Science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.
E. Raymond
Beware of programmers who carry screwdrivers.
Leonard Brandwein
Getting information off the Internet is like taking a drink from a fire hydrant
Mitch Kapor
Don't get suckered in by the comments, they can be terribly misleading: Debug only the code.
Dave Storer
https://maximilianocontieri.com/code-smell-75-comments-inside-a-method
C++ is designed to allow you to express ideas, but if you don't have ideas or don't have any clue about how to express them, C++ doesn't offer much help.
Bjarne Stroustrup
https://maximilianocontieri.com/code-smell-56-preprocessors
Less than 10% of the code has to do with the ostensible purpose of the system; the rest deals with input-output, data validation, data structure maintenance, and other housekeeping.
Mary Shaw
https://maximilianocontieri.com/code-smell-121-string-validations
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
The best performance improvement is the transition from the nonworking state to the working state.
J. Osterhout
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years.
Joseph Licklider
Don't be (too) clever. My point was to discourage overly clever code because "clever code" is hard to write, easy to get wrong, harder to maintain, and often no faster than simpler alternatives because it can be hard to optimize.
Bjarne Stroustrup
Optimization hinders evolution. Everything should be built top-down, except the first time. Simplicity does not precede complexity, but follows it.
Alan Perlis
Computer science inverts the normal. In normal science, you're given a world, and your job is to find out the rules. In computer science, you give the computer the rules, and it creates the world.
Alan Kay
The good news is: Anything is possible on your computer. The bad news is: Nothing is easy.
Ted Nelson
https://maximilianocontieri.com/code-smell-115-return-true
Bugs lurk in corners and congregate at boundaries.
Boris Beizer
Take reasonable steps to test, document, and otherwise draw attention to the assumptions made in every module and routine.
Daniel Read
Simple systems are not feasible because they require infinite testing.
Norman Ralph Augustine
I’m not a great programmer; I’m just a good programmer with great habits.
Kent Beck
All programming languages are shit. But the good ones fertilize your mind.
Reg Braithwaite
Conceptual integrity is the most important consideration in system design.
Frederick P. Brooks
The workers and professionals of the world will soon be divided into two distinct groups. Those who will control computers and those who will be controlled by computers. It would be best for you to be in the former group.
Lewis D. Eigen
Inside every well-written large program is a well-written small program.
C.A.R. Hoare
https://maximilianocontieri.com/code-smell-98-speling-mistakes
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
We must not forget that the wheel is reinvented so often because it is a very good idea; I've learned to worry more about the soundness of ideas that were invented only once.
David L. Parnas
A data structure is just a stupid programming language.
Bill Gosper
https://maximilianocontieri.com/code-smell-55-object-orgy
The Analytical Engine has no pretensions whatever to originate anything. It can do whatever we know how to order it to perform… But it is likely to exert an indirect and reciprocal influence on science itself.
Ada Lovelace
Every craftsman starts his or her journey with a basic set of good-quality tools.
Andrew Hunt
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
The programmer's primary weapon in the never-ending battle against slow system is to change the intramodular structure. Our first response should be to reorganize the modules' data structures.
Frederick P. Brooks
https://maximilianocontieri.com/code-smell-92-isolated-subclasses-names
Luck is the residue of design.
Wesley Branch Rickey
The most dangerous kind of waste is the waste we do not recognize.
Shigeo Shingo
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”.
Radia Perlman
It is far easier to design a class to be thread-safe than to retrofit it for thread safety later.
Brian Goetz
https://maximilianocontieri.com/code-smell-112-testing-private-methods
Defect-free software does not exist.
Wietse Venema
If you want to do interesting software, you have to have a bunch of people do it, because the amount of software that one person can do isn't that interesting.
Nathan Myhrvold
Just because something is easy to measure doesn't mean it's important.
David Heinemeier Hansson
That which optimizes one part of the system necessarily undermines the system as a whole.
Eric Ries
If you're willing to restrict the flexibility of your approach, you can almost always do something better.
John Carmack
Physics is the universe’s operating system.
Steven R Garman
Good programming is good writing.
John Shore
Temporary solutions often become permanent problems.
Craig Bruce
If we wish to count lines of code, we should not regard them as "lines produced" but as "lines spent".
Edsger Dijkstra
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
Adapting old programs to fit new machines usually means adapting new machines to behave like old ones.
Alan J. Perlis
If you can't explain it simply, you don't understand it well enough.
Albert Einstein
Good engineering is the difference between code running in eight minutes or eight hours. It affects real people in real ways. It's not a "matter of opinion." any more than a bird taking a flight is a "matter of opinion."
H. W. Kenton
The whole of arithmetic now appeared within the grasp of mechanism.
Charles Babbage
Technology is dominated by two types of people: those who understand what they do not manage, and those who manage what they do not understand.
Archibald Putt
The most important factor in software work is not the tools and techniques used by the programmers but rather the quality of the programmers themselves.
Robert Glass
I know testers who make good devs. I know devs who make good testers. I know Scrum Masters who make good coffee.
David Evans
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
Don’t document the problem, fix it.
Atli Björgvin Oddsson
The secret to building large apps is never build large apps. Break your applications into small pieces. Then, assemble those testable, bite-sized pieces into your big application.
Justin Meyer
One of the best programming skills you can have is knowing when to walk away for awhile.
Oscar Godson
Hardware eventually fails. Software eventually works.
Michael Hartung
The fundamental problem with program maintenance is that fixing a defect has a substantial chance of introducing another.
Fred Brooks
You won't get anything done by planning.
Karl Pilkington
The amount of energy necessary to refute bullshit is an order of magnitude bigger than to produce it.
Alberto Brandolini
I think the lack of reusability comes in object-oriented languages, not in functional languages. Because the problem with object-oriented languages is they've got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.
Joe Armstrong
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.
Jeff Weiner
Science is a way of thinking much more than it is a body of knowledge.
Carl Sagan
Telling a programmer there's already a library to do X is like telling a songwriter there's already a song about love.
Pete Cordell
The flip side of the coin was that even good programmers and language designers tended to do terrible extensions when they were in the heat of programming, because design is something that is best done slowly and carefully.
Alan Kay
An error doesn't become a mistake until you refuse to correct it.
Orlando Aloysius Battista
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
https://maximilianocontieri.com/code-smell-106-production-dependent-code
In a software project team of 10, there are probably 3 people who produce enough defects to make them net negative producers.
Gordon Schulmeyer
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
https://maximilianocontieri.com/code-smell-123-mixed-what-and-how
Simplicity before generality, use before reuse.
Kevlin Henney
https://maximilianocontieri.com/code-smell-107-variables-reuse
Puzzling over some text to understand what’s going on is a great thing if you’re reading a detective novel, but not when you’re reading code. We may fantasize about being International Men of Mystery, but our code needs to be mundane and clear.
Martin Fowler
You start digging in the code. The more you dig, the more stuff you turn up. Eventually you dig yourself into a hole you can’t get out of. To avoid digging your own grave, refactoring must be done systematically.
Eric Gamma
We live in a world of misconceptions of thinking knowing syntax is at the heart of the problems. A lot of people believe there's a technical solution to every problem and that it would be best for all us to sit in dark rooms working quietly by ourselves.
GeePaw Hill
Do not 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
Objects are abstractions of processing. Threads are abstractions of schedule.
James O. Coplien
We know about as much about software quality problems as they knew about the Black Plague in the 1600s. We've seen the victims' agonies and helped burn the corpses. We don't know what causes it; we don't really know if there is only one disease. We just suffer -- and keep pouring our sewage into our water supply.
Tom Van Vleck
Temporary variables can be a problem. They are only useful within their own routine, and therefore they encourage long, complex routines.
Martin Fowler
Don't have good ideas if you aren't willing to be responsible for them.
Alan J. Perlis
I think test-driven design is great. But you can test all you want and if you don’t know how to approach the problem, you’re not going to get a solution.
Peter Norvig
Code generation, like drinking alcohol, is good in moderation.
Alex Lowe
https://maximilianocontieri.com/lazyness-ii-code-wizards
No amount of testing can prove a software right, a single test can prove a software wrong.
Amir Ghahrai
As someone who was basically a software engineer for many years, I became fascinated with how the brain functions and is put together and works in such a different fashion than computers do.
Paul Allen
These days, the problem isn't how to innovate; it's how to get society to adopt the good ideas that already exist.
Douglas Engelbart
The art of debugging is figuring out what you really told your program to do rather than what you thought you told it to do.
Andrew Singer
Forget this world and all its troubles and if possible its multitudinous Charlatans - everything in short but the Enchantress of Numbers.
Ada Lovelace
A generalist is a jack-of-all-trades but a master of none, whereas a generalizing specialist is a jack-of-all-trades and master of a few. Big difference.
Scott Ambler
The art of programming is the art of organizing complexity, of mastering multitude and avoiding its bastard chaos as effectively as possible.
E. W. Dijkstra
The programs that live best and longest are those with short functions. You learn just how valuable all those little functions are. All of the payoffs of indirection—explanation, sharing, and choosing—are supported by small functions.
Martin Fowler
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
https://maximilianocontieri.com/code-smell-97-error-messages-without-empathy
Absence of evidence is not evidence of absence.
Carl Sagan
The best error message is the one that never shows up.
Thomas Fuchs
There have been people that suggest that we should have a back door. But the reality is if you put a back door in, that back door's for everybody - for good guys and bad guys.
Tim Cook
The designer of a new system must not only be the implementor and the first large-scale user; the designer should also write the first user manual. If I had not participated fully in all these activities, literally hundreds of improvements would never have been made.
Donald Knuth
First, solve the problem. Then, write the code.
John Johnson
Be careful to preserve the orthogonality of your system as you introduce third-party toolkits and libraries. Choose your technologies wisely.
Andy Hunt
It’s better to wait for a productive programmer to become available than it is to wait for the first available programmer to become productive.
Steve McConnell
A programming language is a system of notation for describing computations. A useful programming language must therefore be suited for both description (i.e., for human writers and readers of programs) and for computation (i.e., for efficient implementation on computers). But human beings and computers are so different that it is difficult to find notational devices that are well suited to the capabilities of both.
R. Tennant
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
All models are wrong but some models are useful
George Box
https://maximilianocontieri.com/code-smell-126-fake-null-object
The best way to prepare is to write programs, and to study great programs that other people have written. In my case, I went to the garbage cans at the Computer Science Center and fished out listings of their operating system.
Bill Gates
BASIC is to computer programming as QWERTY is to typing.
Seymour Papert
Before you say you can’t do something, try it.
Sakichi Toyoda
Anytime you put a challenge out there, people come up with a creative solution on the software side.
Henry Samueli
Programmers have to fight against the two most destructive forces in the universe: entropy and stupidity.
Damian Conway
Simplify, don’t complicate – especially processes, procedures and policies.
Richard A. Moran
When in doubt, leave it out.
Joshua Bloch
It's a lot easier to talk about code than it is to write code.
John O'Nolan
Architecture is the tension between coupling and cohesion.
Neal Ford
https://maximilianocontieri.com/code-smell-16-ripple-effect
JavaScript is the only language that I'm aware of that people feel they don't need to learn before they start using it.
Douglas Crockford
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
https://maximilianocontieri.com/code-smell-105-comedian-methods
The role of a trainer or consultant is to empower the customer, not to make himself indispensable.
Bertrand Meyer
At some point software design becomes less about what and more about when
Kent Beck
Writing software is a very intense, very personal thing. You have to have time to work your way through it, to understand it. Then debug it.
Vint Cerf
If you automate a mess, you get an automated mess.
Rod Michael
That's the thing about people who think they hate computers. What they really hate is lousy programmers.
Larry Niven
When solving problems, dig at the roots instead of just hacking at the leaves.
Anthony J. D'Angelo
Syntactic sugar causes cancer of the semicolon.
Alan J. Perlis
Iteration allows us to progressively approach some goal. We can discard the steps that take us further away and prefer the steps that move us nearer. This is in essence how evolution works. It is also at the heart of how modern machine learning (ML) works.
Dave Farley
https://maximilianocontieri.com/code-smell-122-primitive-obsession
The best programmers write only easy programs.
Michael A. Jackson
There is only one thing more painful than learning from experience, and that is not learning from experience.
Archibald McLeish
Precise language is not the problem. Clear language is the problem.
R. Feynman
Encoded names are seldom pronounceable and are easy to miss-type.
Robert C. Martin
A computer lets you make more mistakes faster than any other invention with the possible exceptions of handguns and Tequila.
Mitch Ratcliffe
https://maximilianocontieri.com/fail-fast
Programming Languages
Many people tend to look at programming styles and languages like religions: if you belong to one, you cannot belong to others. But this analogy is another fallacy.
Niklaus Wirth
Promoting a good developer to management is often a twofold bad move: you'll lose a good developer and get a poor manager.
Mario Fusco
Tell me and I forget. Teach me and I remember. Involve me and I learn.
Benjamin Franklin
Hardware: the parts of a computer system that can be kicked.
Jeff Pesis
We have to learn again that science without contact with experiments is an enterprise which is likely to go completely astray into imaginary conjecture.
Hannes Alfven
The sooner you start to code, the longer the program will take.
Roy Carlson
Imagination is more important than knowledge. For knowledge is limited, whereas imagination embraces the entire world, stimulating progress, giving birth to evolution.
Albert Einstein
In a room full of top software designers, if two agree on the same thing, that's a majority.
Bill Curtis
Good engineers make solutions obsolete. Great engineers make themselves obsolete.
Jordan W
He who hasn't hacked assembly language as a youth has no heart. He who does as an adult has no brain.
John Moore
Computer science is like engineering; it is all about getting something to do something, rather than just dealing with abstractions, as in the pre-Smith geology.
Richard Feynman
A Fallacy of Software: If it works, and we don't change anything, it will keep working.
Jessica Kerr
Quality is the ally of schedule and cost, not their adversary. If we have to sacrifice quality to meet schedule, it's because we are doing the job wrong from the very beginning.
James A. Ward
A human organization is just as much an information system as any computer system. It is almost certainly more complex, but the same fundamental ideas apply. Things that are fundamentally difficult, like concurrency and coupling, are difficult in the real world of people, too.
Dave Farley
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.
Jeff Atwood
Software is a great combination between artistry and engineering.
Bill Gates
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.
Frederick P. Brooks
The most important property of a program is whether it accomplishes the intention of its user.
C.A.R Hoare
Tests are the Programmer’s stone, transmuting fear into boredom.
Kent Beck
Rules of Optimization: Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet.
Michael A. Jackson
Language designers are not intellectuals. They're not as interested in thinking as you might hope. They just want to get a language done and start using it.
Dave Moon
Writing in C or C++ is like running a chain saw with all the safety guards removed.
Bob Gray
Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris.
Larry Wall
That’s what’s cool about working with computers. They don’t argue, they remember everything, and they don’t drink all your beer.
Paul Leary
A good threat is worth a thousand tests.
Boris Beizer
Architecture is just regular software design.
Robert Martin
The world is changing, and I believe that, if I want to stay employed as a programmer, I'm going to have to change with it.
Kent Beck
Program construction consists of a sequence of refinement steps.
Niklaus Wirth
Most xml i’ve seen makes me think i’m dyslexic. it also looks constipated, and two health problems in one standard is just too much.
Charles Forsyth
A program that produces incorrect results twice as fast is infinitely slower.
John Osterhout
https://maximilianocontieri.com/code-smell-76-generic-assertions
Programming is just saying “I have a meeting in an hour, so better not start on this yet” to yourself until you die.
Alex Engelberg
Technology is anything invented after you were born.
Alan Kay
Most of the effort in the software business goes into the maintenance of code that already exists.
Wietse Venema
Criticism isn't just disliking things. Arts schools teach the skill & the respect for the work. Computer science schools don't.
Kent Beck
Whenever possible, steal code.
Tom Duff
The problem with using C++... is that there's already a strong tendency in the language to require you to know everything before you can do anything.
Larry Wall
You do not really understand something unless you can explain it to your grandmother.
Albert Einstein
https://maximilianocontieri.com/code-smell-117-unrealistic-data
God could create the world in six days because he didn't have to make it compatible with the previous version.
Mark Twain
The danger of standard process is that people will miss chances to take important shortcuts.
T. DeMarco and T. Lister
Controlling complexity is the essence of computer programming.
Brian W. Kernighan
The strength of JavaScript is that you can do anything. The weakness is that you will.
Reg Braithwaite
One of the big lessons of a big project is you don't want people that aren't really programmers programming, you'll suffer for it!
John Carmack
Defects are not free. Somebody makes them, and gets paid for making them.
W Deming
By relieving the brain of all unnecessary work, a good notation sets it free to concentrate on more advanced problems, and in effect increases the mental power of the race. Before the introduction of the Arabic notation, multiplication was difficult, and division even of integers called into play the highest mathematical faculties. Our modern power of easy reckoning with decimal fractions is the almost miraculous result of the gradual discovery of a perfect notation.
Alfred North Whitehead
Programmers regard themselves as artists. As such they consider keeping accurate records of their handwork on par with washing ashtray.
Otis Port
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
Incorrect documentation is often worse than no documentation.
Bertrand Meyer
Referential transparency is a very desirable property: it implies that functions consistently yield the same results given the same input, irrespective of where and when they are invoked.
Edward Garson
https://maximilianocontieri.com/code-smell-93-send-me-anything
If debugging is the process of removing software bugs, then programming must be the process of putting them in.
Edsger Dijkstra
https://maximilianocontieri.com/code-smell-36-switchcaseelseifelseif-statements
We must not blame programmers for their bugs. They belong to them only until the code is merged to the repository. After that, all bugs are ours!
Yegor Bugayenko
It is easier to change the specification to fit the program than vice versa.
Alan Perlis
Documentation is the castor oil of programming
Gerald M. Weinberg
C++ : Where friends have access to your private members.
Gavin Russell Baker
What would happen if you allowed a bug to slip through a module, and it cost your company $10,000? The nonprofessional would shrug his shoulders, say “stuff happens,” and start writing the next module. The professional would write the company a check for $10,000!
Bob Martin
Tests should be coupled to the behavior of code and decoupled from the structure of code
Kent Beck
Any man can make mistakes, but only an idiot persists in his error.
Marcus Cicero
One difference between a smart programmer and a professional programmer is that the professional understands that clarity is king. Professionals use their powers for good and write code that others can understand.
Robert C. Martin
https://maximilianocontieri.com/code-smell-79-theresult
First do it, then do it right, then do it better.
Addy Osmani
A person without data is just another person with an opinion
William Edwards Deming
In software “production” is not our problem! Our product is a sequence of bytes, and we can recreate any sequence of bytes essentially for zero cost. This means that we NEVER have a production problem!
Dave Farley
Programming is not a zero-sum game. Teaching something to a fellow programmer doesn’t take it away from you.
John Carmack
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
The computers do what you tell them to do, not what you want them to do.
Alexander Atanasov
If you have too many special cases, you are doing it wrong.
Craig Zerouni
If you think you are worth what you know, you are very wrong. Your knowledge today does not have much value beyond a couple of years. Your value is what you can learn and how easily you can adapt to the changes this profession brings so often.
Jose M. Aguilar
Innovation distinguishes between a leader and a follower.
Steve Jobs
A programming language is for thinking about programs, not for expressing programs you've already thought of. It should be a pencil, not a pen.
Paul Graham
If programmers got paid to remove code from software instead of writing new code, software would be a whole lot better.
Nicholas Negroponte
Formal education will make you a living. Self-education will make you a fortune.
Jim Rohn
The most disastrous thing that you can ever learn is your first programming language.
Alan Kay
The problem is, in software design, often the consequences of your decisions don't become apparent for years.
Kent Beck
The central enemy of reliability is complexity.
Daniel Geer
Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.
Christopher Alexander
If you're actually doing TDD, you're throwing away tests all the time, as your understanding of what the code is changes.
Kerri Miller
One of the best things to come out of the home computer revolution could be the general and widespread understanding of how severely limited logic really is.
Frank Herbert
I think my software is going to become so ubiquitous, so essential, that if it stops working, there will be riots.
Michael J. Saylor
The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.
E. W. Dijkstra
Simplicity does not precede complexity, but follows it
Alan Perlis
In essence, engineering is doing what you want with what you have.
J. Carmack
I hired finishers because I’m a good starter and a poor finisher.
Alan Kay
A program is never less than 90% complete, and never more than 95% complete.
Terry Baker
The definition I use for a pattern is an idea that has been useful in one practical context and will probably be useful in others.
Martin Fowler
With good program architecture debugging is a breeze, because bugs will be where they should be.
David May
If you are choosing a JavaScript library purely based on popularity, I think you deserve what you get.
Tom Dale
If someone says their code was broken for a couple of days while they are refactoring, you can be pretty sure they were not refactoring.
Martin Fowler
A programmable mind embraces mental agility, to practice “de-learning” and “relearning” all the time.
Pearl Zhu
Don't wait until you have a bug to step through your code.
Steve Maguire
The most disastrous thing that you can ever learn is your first programming language.
Alan Kay
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
https://maximilianocontieri.com/code-smell-87-inconsistent-parameters-sorting
In the end, regardless of where you are on the development hierarchy, keep coding. It’s where you’re most valuable.
Ka Wai Cheung
I'm not saying we purposely introduced bugs or anything, but this is kind of a natural result of any complexities of software... that you can't fully test it.
Will Wright
The wonderful thing about dynamic typing is it lets you express anything that is computable. And type systems don’t. Once you have a type system, you don’t even know what interesting programs are there.
Gilad Bracha
A bad system will beat a good person every time.
Edwards Deming
Most of the biggest problems in software are problems of misconception.
Rich Hickey
The problem with driving development with small scale tests (I call them “unit tests”, but they don’t match the accepted definition of unit tests very well) is that you run the risk of implementing what you think a user wants, but having it turn out to be not what they wanted at all.
Kent Beck
Don't Gather Requirements, Dig for Them
Andrew Hunt
There is the desire of a consumer society to have no learning curves. This tends to result in very dumbed-down products that are easy to get started on, but are generally worthless and/or debilitating.
Alan Kay
DRY - Don't Repeat Yourself - Every piece of knowledge must have a single, unambiguous, athoritative representation within a system.
Andy Hunt
https://maximilianocontieri.com/code-smell-125-is-a-relationship
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
Companies should make their own enterprise systems as often as network security companies should manufacture their own aspirin.
Phil Simon
Write shy code — modules that don't reveal anything unnecessary to other modules and that don't rely on other modules' implementations.
Dave Thomas
Programming is usually taught by examples.
Niklaus Wirth
A complex system that works is invariably found to have evolved from a simple system that worked.
John Gall
Rarely is anyone thanked for the work they did to prevent the disaster that didn't happen.
Mikko Hypponen
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
A well installed microcode bug will be almost impossible to detect.
Ken Thompson
Playfully doing something difficult, whether useful or not, that is hacking.
Richard M. Stallman
There are only two kinds of languages: the ones people complain about and the ones nobody uses.
Bjarne Stroustrup
Planning / Management
The cost of adding a feature isn’t just the time it takes to code it. The cost also includes the addition of an obstacle to future expansion. The trick is to pick the features that don’t fight each other.
John Carmack
https://maximilianocontieri.com/code-smell-110-switches-with-defaults
Science is what we understand well enough to explain to a computer, Art is all the rest
Donald Knuth
Programmers must avoid leaving false clues that obscure the meaning of code.
Robert C. Martin
Programming without an overall architecture or design in mind is like exploring a cave with only a flashlight: You don't know where you've been, you don't know where you're going, and you don't know quite where you are.
Danny Thorpe
For us, the real goal is to make it so that the software ecosystem is as healthy as possible.
James Gosling
When you actually sit down to write some code, you learn things that you didn’t get from thinking about them in modeling terms…there is a feedback process there that you can only really get at from executing some things and seeing what works.
Martin Fowler
The problem with quick and dirty, is that the dirty remains long after the quick has been forgotten
Steve C. McConnell
If you put fences around people, you get sheep. GIve people the room they need.
William L. McKnight
Whether you draw diagrams that generate code or you type at a browser, you are coding.
Kent Beck
If you make a general statement, a programmer says, 'Yes, but...' while a designer says, 'Yes, and...'
André Bensoussan
Blame the implementation, not the technique.
Tim Kadlec
Get out of the way of your developers or lose them to someone who will.
Adrian Cockcroft
Memory is like an orgasm. It's a lot better if you don't have to fake it.
Seymour Cray
The most important single aspect of software development is to be clear about what you are trying to build.
Bjarne Stroustrup
If you're a technical lead, you need to be coding.
Martin Fowler
Einstein repeatedly argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer.
Fred Brooks
https://maximilianocontieri.com/no-silver-bullet
Quality is never an accident; it is always the result of intelligent effort.
John Ruskin
Simplicity is about subtracting the obvious and adding the meaningful.
John Maeda
Software eventually and necessarily gained the same respect as any other discipline.
Margaret H. Hamilton
If it takes more than a sentence to explain what you are doing, it’s almost always a sign that what you are doing is too complicated.
Sam Altman
https://maximilianocontieri.com/code-smell-85-and-functions
There’s no obfuscated Perl contest because it’s pointless.
Jeff Polk
One of the things I've been trying to do is look for simpler or rules underpinning good or bad design. I think one of the most valuable rules is avoiding duplication. "Once and only once" is the Extreme Programming phrase.
Martin Fowler
Subclasses shouldn’t always share all characteristics of their parent class but will do so with inheritance. This can make a program’s design less flexible. It also introduces the possibility of calling methods on subclasses that don’t make sense or that cause errors because the methods don’t apply to the subclass.
Steve Klabnik
https://maximilianocontieri.com/code-smell-37-protected-attributes
The greatest obstacle to discovery is not ignorance, but the illusion of knowledge.
Daniel Boorstin
The most disastrous thing that you can ever learn is your first programming language.
Alan Kay
In 2031, lawyers will be commonly a part of most development teams.
Grady Booch
Everything will ultimately fail. Hardware is fallible, so we add redundancy. This allows us to survive individuals hardware failures, but increases the likelihood of having at least one failure at any given time.
Michael Nygard
Programmers