Sometimes a short thought can bring amazing ideas.
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
What exactly is a name? — Part I: The Quest
We all agree: a good name is always the most important thing. Let’s find them.medium.com
Code Smell 49 — Caches
Caches are sexy. They are a one-night stand. We need to avoid them in a long-term relationship.mcsee.medium.com
Make illegal states unrepresentable.
Yaron Minsky
The evil powers of mutants
To mutate is to evolve. It was proposed by Sir Charles Darwin and we use it in the software industry. But something is…codeburst.io
First make the change easy (warning: this might be hard), then make the easy change.
Kent Beck
Code Smell 35 — State as Attributes
When an object changes its state the best solution is to change the attribute, isn’t it?mcsee.medium.com
Simple things should be simple, complex things should be possible.
Alan Kay
Code Smell 31 — Accidental Methods on Business Objects
Adding persistence, serialization, displaying, importing, exporting code to an object bloats its protocol and brings…medium.com
Before software can be reusable it first has to be usable.
Ralph Johnson
Simplicity is prerequisite for reliability.
Edsger W. Dijkstra
Smells are certain structures in the code that suggest (sometimes they scream for) the possibility of refactoring.
How to Find the Stinky parts of your Code
The code smells bad. Let’s see how to change the aromas.medium.com
Object thinking focuses our attention on the problem space rather than the solution space.
David West
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
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
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
If we want users to like our software, we should design it to behave like a likeable person.
Alan Cooper
Conceptual integrity is the most important consideration in system design.
Frederick P. Brooks
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
Code Smell 37 — Protected Attributes
Protected attributes are great for encapsulating and controlling access to our properties. They might be warning us for…mcsee.medium.com
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
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
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
You cannot teach beginners top-down programming, because they don’t know which end is up.
Tony Hoare
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
Code Smell 84 — Max < Min (Javascript)
Some functions do not behave as expected. Sadly, most programmers accept them.blog.devgenius.io
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
Code Smell 83 — Variables Reassignment
Variable reuse is something we see in big chunks of code.blog.devgenius.io
Duplication is the primary enemy of a well-designed system.
Robert Martin
Code Smell 66 — Shotgun Surgery
Say it only oncemcsee.medium.com
Optimism is an occupational hazard of programming: feedback is the treatment.
Kent Beck
The trick is to fix the problem you have, rather than the problem you want.
Bram Cohen
Singleton: The Root of all Evil
Allowed global variables and supposed memory savingscodeburst.io
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
Code Smell 28 — Setters
The first exercise junior programmers do. IDEs, tutorial and senior developers keep teaching them this anti-pattern.mcsee.medium.com
The biggest issue on software teams is making sure everyone understands what everyone else is doing. -
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
Code Smell 58 — Yo-yo Problem
Searching for a concrete method implementation? Go back and forth, up and down.mcsee.medium.com
You can prove anything by mentioning another computer language.
Larry Wall
The purpose of computing is insight, not numbers.
Richard Hamming
Code Smell 71 — Magic Floats Disguised as Decimals
mcsee.medium.com
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
In a purely functional program, the value of a [constant] never changes, and yet, it changes all the time! A paradox!
Joel Spolsky
When someone says, “I want a programming language in which I need only say what I want done,” give him a lollipop.
Alan Perlis
A data structure is just a stupid programming language.
Bill Gosper
Hackers are arrogant geek romantics. They lack the attentive spirit of inquiry.
Bruce Sterling
Code Smell 44 — Magic Corrections
Compilers are smarter than us. On a Friday night production deploy they betray us.medium.com
Software is a gas; it expands to fill its container.
Nathan Myhrvold
Code Smell 43 — Concrete Classes Subclassified
Inheritance. Concrete classes. Reuse. A fantastic mix up.medium.com
Science is what we understand well enough to explain to a computer. Art is everything else we do.
Donald Knuth
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
Final source code is the real software design.
Jack Reeves
Code Smell 99 — First Second
How many times do we see lazy argument names?blog.devgenius.io
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
Code Smell 101 — Comparison Against Booleans
When comparing to booleans, we perform magic castings and get unexpected resultsblog.devgenius.io
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
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
Code Smell 12 — Null
Null is using as different flags. It can hint an absence, an undefined value, en error etc. Multiple semantics lead to…mcsee.medium.com
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
Programming is not about typing, it’s about thinking.
Rich Hickey
There’s nothing more permanent than a temporary hack.
Kyle Simpson
Code Smell 27 — Associative Arrays
[Key, values], magic, fast, malleable and error prune.mcsee.medium.com
Architecture is the tension between coupling and cohesion.
Neal Ford
Code Smell 16 — Ripple Effect
Small changes yield unexpected problems.medium.com
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
No amount of elegant programming or technology will solve a problem if it is improperly specified or understood to begin with.
Milt Bryce
Learning to code is useful no matter what your career ambitions are.
Arianna Huffington
Complexity has nothing to do with intelligence, simplicity does.
Larry Bossidy
Later Equals Never.
LeBlanc’s Law
When in doubt, use brute force.
Ken Thompson
Computer Science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.
E. Raymond
The Diagram is Not the Model. The model is not the diagram. It is an abstraction, a set of concepts and relationships between them.
Code Smell 47 — Diagrams
Diagrams are not code. They cannot be a code smell. They are just Diagram Smells.mcsee.medium.com
Thinking is not the ability to manipulate language; it’s the ability to manipulate concepts.
Leslie Lamport
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
If someone claims to have the perfect programming language, he is either a fool or a salesman or both.
Bjarne Stroustrup
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
Walking on water and developing software from a specification are easy if both are frozen.
Edward V Berard
Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.
Bertrand Meyer
To me programming is more than an important practical art. It is also a gigantic undertaking in the foundations of knowledge.
Grace Hopper
A programming language is a tool that has a profound influence on our thinking habits.
Edsger Dijkstra
Good design adds value faster than it adds cost.
Thomas C. Gale
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
I’ve finally learned what ‘upward compatible’ means. It means we get to keep all our old mistakes.
Dennie van Tassel
Code Smell 104 — Assert True
Asserting against booleans makes error tracking more difficult.blog.devgenius.io
Make it hard to ignore error conditions. Don’t bury error codes in return values.
Steve Maguire
Premature optimization is the root of all evil
Donald Knuth
Code Smell 20 — Premature Optimization
Planning ahead of time needs a crystal ball no developer has.mcsee.medium.com
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
Code Smell 21 — Anonymous Functions Abusers
Functions, lambdas, closures. So high order, nondeclarative, and hot.mcsee.medium.com
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
Code Smell 65 — Variables Named After Types
Names should always indicate role.mcsee.medium.com
I’m not a great programmer; I’m just a good programmer with great habits.
Don’t automate an undisciplined workflow. The computer won’t solve what the customer’s management can’t.
Larry Bernstein
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
Whenever possible, steal code.
Tom Duff
Today, most software exists, not to solve a problem, but to interface with other software.
I Angell
A true professional does not 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 does not meet the specifications and requirements; that is gold-plated with unnecessary features; or that looks like junk
Daniel Read
Beware of programmers who carry screwdrivers.
Leonard Brandwein
God could create the world in six days because he didn’t have to make it compatible with the previous version.
Mark Twain
BASIC is to computer programming as QWERTY is to typing.
Seymour Papert
At any particular point in time, the features provided by our programming languages reflect our understanding of software and programming.
R. E. Fairley
Every great developer you know got there by solving problems they were unqualified to solve until they actually did it.
Patrick McKenzie
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
Any problem in computer science can be solved with another level of indirection.
David Wheeler
Code Smell 50 — Object Keys
Primary keys, IDs, references. The first attribute we add to our objects. They don’t exist in the real world.mcsee.medium.com
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
A computer once beat me at chess, but it was no match for me at kick boxing.
Emo Philips
Scientists build to learn; Engineers learn to build.
Fred Brooks
The greatest obstacle to discovery is not ignorance, but the illusion of knowledge.
Daniel Boorstin
Remember, code is your house, and you have to live in it.
Michael C. Feathers
The best performance improvement is the transition from the nonworking state to the working state.
J. Osterhout
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
The whole of arithmetic now appeared within the grasp of mechanism.
Charles Babbage
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
If you think good architecture is expensive, try bad architecture.
Brian Foote and Joseph Yoder
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
Code Smell 56 — Preprocessors
We want our code to behave different on different environments, operating systems, so taking decisions at compile time…medium.com
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
Bugs lurk in corners and congregate at boundaries.
Boris Beizer
In programming, the hard part isn’t solving problems, but deciding what problems to solve.
Paul Graham
Code Smell 39 — new Date()
70s first tutorial: getCurrentDate(). Piece of Cake. We are in the 20s Time is global no more.medium.com
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
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
One bad programmer can easily create two new jobs a year.
David Parnas
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
Code Smell 111 — Modifying Collections While Traversing
Changing a collection while traversing might lead to unexpected errorsblog.devgenius.io
Temporary solutions often become permanent problems.
Craig Bruce
Science is what we understand well enough to explain to a computer, Art is all the rest
Donald Knuth
Those who can imagine anything, can create the impossible
Alan Turing
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
Weeks of programming can save you hours of planning.
Anonymous
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
A design that doesn’t take change into account risks major redesign in the future.
Erich Gamma
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
The objective of cleaning is not just to clean, but to feel happiness living within that environment.
Marie Kondo
Your most unhappy customers are your greatest source of learning.
Bill Gates
Technology is anything invented after you were born.
Alan Kay
I do not fear computers. I fear lack of them.
Isaac Asimov
The key to performance is elegance, not battalions of special cases.
Jon Bentley and Douglas McIlroy
The fundamental problem with program maintenance is that fixing a defect has a substantial chance of introducing another.
Fred Brooks
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
The software isn’t finished until the last user is dead.
Sidney Markowitz
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
No one in the brief history of computing has ever written a piece of perfect software. It’s unlikely that you’ll be the first.
Andy Hunt
The real hero of programming is the one who writes negative code.
Douglas McIlroy
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
Simplicity before generality, use before reuse.
Kevlin Henney
Code Smell 107 — Variables Reuse
Reusing variables makes scopes and boundaries harder to followblog.devgenius.io
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
Incorrect documentation is often worse than no documentation.
Bertrand Meyer
Write shy code — modules that don’t reveal anything unnecessary to other modules and that don’t rely on other modules’ implementations.
Dave Thomas
Code Smell 60 — Global Classes
Classes are handy. We can call them and invoke them any time. Is this good?mcsee.medium.com
Inside every well-written large program is a well-written small program.
C.A.R. Hoare
Code Smell 98 — Speling Mistakes
Spelling and readability are very important for humans and not important for machines.blog.devgenius.io
The most unsuccessful three years in the education of cost estimators appears to be fifth-grade arithmetic.
Norman R. Augustine
All models are wrong but some models are useful
George Box
Code generation, like drinking alcohol, is good in moderation.
Alex Lowe
Laziness II: Code Wizards
Code generators do our hard work. But we don’t need them anymore.codeburst.io
Simplicity, carried to the extreme, becomes elegance.
Jon Franklin
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
You must have long-range goals to keep you from being frustrated by short-range failures.
Charles C. Noble
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
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
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
The essence of XML is this: the problem it solves is not hard, and it does not solve the problem well.
Phil Wadler
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
Discovery consists of seeing what everyone else has seen and thinking what no one else has thought.
Albert Szent-Gyorgi
The most dangerous kind of waste is the waste we do not recognize.
Shigeo Shingo
The optimum committee has no members.
Norman Ralph Augustine
No one hates software more than software developers.
Jeff Atwood
In a software project team of 10, there are probably 3 people who produce enough defects to make them net negative producers.
Gordon Schulmeyer
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
A well installed microcode bug will be almost impossible to detect.
Ken Thompson
As the size and complexity of software systems increase, the design, specification, and analysis of overall system structure becomes a critical issue.
David Garlan
Playing with pointers is like playing with fire. Fire is perhaps the most important tool known to man. Carefully used, fire brings enormous benefits; but when fire gets out of control, disaster strikes.
J Barnes
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
If programmers got paid to remove code from software instead of writing new code, software would be a whole lot better.
Nicholas Negroponte
Forget this world and all its troubles and if possible its multitudinous Charlatans — everything in short but the Enchantress of Numbers.
Ada Lovelace
Software is a gas; it expands to fill its container.
Nathan Myhrvold
Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris.
Larry Wall
Controlling complexity is the essence of computer programming.
Brian W. Kernighan
Playfully doing something difficult, whether useful or not, that is hacking.
Richard M. Stallman
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
Code Smell 105 — Comedian Methods
Use professional and meaningful namesblog.devgenius.io
Simple systems are not feasible because they require infinite testing.
Norman Ralph Augustine
One of the best programming skills you can have is knowing when to walk away for awhile.
Oscar Godson
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
The cheapest, fastest and most reliable components of a computer system are those that aren’t there.
Gordon Bell
Developers are drawn to complexity like moths to a flame, frequently with the same result.
Neal Ford
My belief is still, if you get the data structures and their invariants right, most of the code will kind of write itself.
Peter Deustch
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
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
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 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
Whether you draw diagrams that generate code or you type at a browser, you are coding.
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
The good news is: Anything is possible on your computer. The bad news is: Nothing is easy.
Ted Nelson
I know testers who make good devs. I know devs who make good testers. I know Scrum Masters who make good coffee.
David Evans
Don’t get suckered in by the comments, they can be terribly misleading: Debug only the code.
Dave Storer
Code Smell 75 — Comments Inside a Method
Comments are often a code smell. Inserting them inside a method calls for an urgent refactor.mcsee.medium.com
The purpose of software engineering is to control complexity, not to create it.
Pamela Zave
Code Smell 102 — Arrow Code
Nested IFs and Elses are very hard to read and testblog.devgenius.io
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
Code Smell 97 — Error Messages Without Empathy
We should take special care with error descriptions for the users (and ourselves).blog.devgenius.io
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
Code Smell 92 — Isolated Subclasses Names
If your classes are globals, use fully qualified namesblog.devgenius.io
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
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
Most of the biggest problems in software are problems of misconception.
Rich Hickey
If the mind really is the finest computer, then there are a lot of people out there who need to be rebooted.
Tim Bryce
Absence of evidence is not evidence of absence.
Carl Sagan
Rules of Optimization: Rule 1: Don’t do it. Rule 2 (for experts only): Don’t do it yet.
Michael A. Jackson
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
Before you say you can’t do something, try it.
Sakichi Toyoda
A complex system that works is invariably found to have evolved from a simple system that worked.
John Gall
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
Architecture is just regular software design
Robert Martin
It is very hard to predict, especially the future.
Niels Bohr
Code Smell 54 — Anchor Boats
Code is there. Just in case. We might need it soon.mcsee.medium.com
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
Objects are abstractions of processing. Threads are abstractions of schedule.
James O. Coplien
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
A Fallacy of Software: If it works, and we don’t change anything, it will keep working.
Jessica Kerr
At some point software design becomes less about what and more about when
Kent Beck
When in doubt, leave it out.
Joshua Bloch
Memory is like an orgasm. It’s a lot better if you don’t have to fake it.
Seymour Cray
Don’t have good ideas if you aren’t willing to be responsible for them.
Alan J. Perlis
If you’re a technical lead, you need to be coding.
Martin Fowler
Getting information off the Internet is like taking a drink from a fire hydrant
Mitch Kapor
Don’t Gather Requirements, Dig for Them
Andrew Hunt
Hardware eventually fails. Software eventually works.
Michael Hartung
If the code and the comments disagree, then both are probably wrong.
Norm Schryer
Blame the implementation, not the technique.
Tim Kadlec
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
Programmers don’t burn out on hard work, they burn out on change-with-the-wind directives and not ‘shipping’.
Mark Berry
If you’re afraid to change something it is clearly poorly designed.
The best way to get the right answer on the Internet is not to ask a question, it’s to post the wrong answer.
Ward Cunningham
Mathematicians stand on each others’ shoulders and computer scientists stand on each others’ toes.
Richard Hamming
Bubbles don’t crash.
Bertrand Meyer
Standards are always out of date. That’s what makes them standards.
Alan Bennett
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
Adapting old programs to fit new machines usually means adapting new machines to behave like old ones.
Alan J. Perlis
Dijkstra will be happy to tell you that 95% of computer science faculty members can’t program a binary search correctly, which doesn’t give us much hope for the students they teach.
Ed Yourdon
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
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
I hope the field of computer science never loses its sense of fun.
Alan J Perlis
Voluminous documentation is part of the problem, not part of the solution.
Tom DeMarco
It is hard to write even the smallest piece of code correctly.
Joshua Bloch
It’s a lot easier to talk about code than it is to write code.
John O’Nolan
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
Recognizing the need is the primary condition for design.
Charles Eames
The computers do what you tell them to do, not what you want them to do.
Alexander Atanasov
Get out of the way of your developers or lose them to someone who will.
Adrian Cockcroft
The best way to get accurate information on Stack Overflow is to post something wrong and wait for corrections.
Matthew Austern
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
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
Good programmers don’t just write programs. They build a working vocabulary.
Guy Steele
I object to doing things that computers can do.
Olin Shivers
An error doesn’t become a mistake until you refuse to correct it.
Orlando Aloysius Battista
Good code is its own best documentation.
Steve McConnell
No amount of testing can prove a software right, a single test can prove a software wrong.
Amir Ghahrai
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
Most of the effort in the software business goes into the maintenance of code that already exists.
Wietse Venema
If you have a procedure with ten parameters, you probably missed some.
Alan Perlis
Physics is the universe’s operating system.
Steven R Garman
Simplicity does not precede complexity, but follows it
Alan Perlis
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
Eighty percent of all input forms ask questions they have no business asking.
Mike Garey
Programmers have to fight against the two most destructive forces in the universe: entropy and stupidity.
Damian Conway
Always implement things when you actually need them, never when you just foresee that you need them.
Ron Jeffries
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
Errors have occurred.
We won’t tell you where or why.
Lazy programmers.
Charlie Gibbs
Criticism isn’t just disliking things. Arts schools teach the skill & the respect for the work. Computer science schools don’t.
Kent Beck
Biology is the most powerful technology ever created. DNA is software, protein are hardware, cells are factories.
Arvind Gupta
Formal education will make you a living. Self-education will make you a fortune.
Jim Rohn
This fascination with computer models is something I understand very well. Richard Feynman called it a disease. I fear he is right.
Michael Crichton
If you make a general statement, a programmer says, ‘Yes, but…’ while a designer says, ‘Yes, and…’
André Bensoussan
The longer it takes for a bug to surface, the harder it is to find.
Roedy Green
Traditional technical interviews are terrible for everyone. They’re a bad way for companies to evaluate candidates. They’re a bad way for candidates to evaluate companies. They waste time and generate stress on both sides.
Jon Evans
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
Code Smell 112 — Testing Private Methods
If you work on unit testing, sooner or later you will face this dilemmablog.devgenius.io
The problem is, in software design, often the consequences of your decisions don’t become apparent for years.
Kent Beck
Innovation distinguishes between a leader and a follower.
Steve Jobs
Another effective technique is to explain your code to someone else. This will often cause you to explain the bug to yourself. Sometimes it takes no more than a few sentences, followed by an embarrassed “Never mind, I see what’s wrong. Sorry to bother you.”
Brian Kernighan
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 try to find the best design in software architecture , instead , strive for the least worst combination of trade-offs
Neal Ford
Programmers regard themeselves as artists. As such they consider keeping accurate records of their handiwork on par with washing ash tray.
Otis Port
Simplify, don’t complicate — especially processes, procedures and policies.
Richard A. Moran
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
Optimization hinders evolution. Everything should be built top-down, except the first time. Simplicity does not precede complexity, but follows it.
Alan Perlis
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
If we wish to count lines of code, we should not regard them as “lines produced” but as “lines spent”.
Edsger Dijkstra
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
If you do a big bang rewrite, the only thing you’re certain of is a big bang
Martin Fowler
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
Software design is a contact sport
Tom Wujec
As software began to be sold to people who would never consider themselves technical, it suddenly became clear that you needed people who spoke their language.
Marc Randolph
Simplicity is about subtracting the obvious and adding the meaningful.
John Maeda
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
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
Programming is similar to a game of golf. The point is not getting the ball in the hole but how many strokes it takes.
Harlan D. Mills
In software systems it is often the early bird that makes the worm.
Alan Perlis
Giving pointers and threads to programmers is like giving whisky and car keys to teenagers.
P. J. O’Rourke
When the final design seems too simple for the amount of work you’ve put in, then you know you’re done.
Brady Clark
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
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
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
Those hours of practice, and failure, are a necessary part of the learning process.
Gina Sipley
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
Rather than apply minutes of suspect reasoning, we can just ask the computer by making the change and running the tests.
Kent Beck
Encoded names are seldom pronounceable and are easy to miss-type.
Robert C. Martin
When you are stuck in a traffic jam with a Porsche, all you do is burn more gas in idle. Scalability is about building wider roads, not about building faster cars.
Steve Swartz
You do not really understand something unless you can explain it to your grandmother.
Albert Einstein
Programmers must avoid leaving false clues that obscure the meaning of code.
Robert C. Martin
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
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
It is easier to optimize correct code than to correct optimized code.
Bill Harlan
Don’t Live with Broken Windows
Andy Hunt
The central enemy of reliability is complexity.
Daniel Geer
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
Antoine de Saint-Exupery
C++ : Where friends have access to your private members.
Gavin Russell Baker
If you put fences around people, you get sheep. GIve people the room they need.
William L. McKnight
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
The amount of energy necessary to refute bullshit is an order of magnitude bigger than to produce it.
Alberto Brandolini
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.
A model is a selectively simplified and consciously structured form of knowledge.
Eric Evans
Adding functionality is not just a matter of adding code.
Wietse Venema
A computer lets you make more mistakes faster than any other invention with the possible exceptions of handguns and Tequila.
Mitch Ratcliffe
Fail Fast
Failure is fashionable. Making is much easier than thinking and failures are not stigma, let’s take this idea to our…codeburst.io
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
The only programs that don’t get changed are those that are so bad that nobody wants to use them.
David Parnas
More good code has been written in languages denounced as “bad” than in languages proclaimed “wonderful” — much more.
Bjarne Stroustrup
Tell me and I forget. Teach me and I remember. Involve me and I learn.
Benjamin Franklin
Just because something is easy to measure doesn’t mean it’s important.
David Heinemeier Hansson
He who hasn’t hacked assembly language as a youth has no heart. He who does as an adult has no brain.
John Moore
Every craftsman starts his or her journey with a basic set of good-quality tools.
Andrew Hunt
Clearly, programming courses should teach methods of design and construction, and the selected examples should be such that a gradual development can be nicely demonstrated.
Niklaus Wirth
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
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
Don’t waste time learning the “tricks of the trade.” Instead, learn the trade.
James Charlton
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
That’s the thing about people who think they hate computers. What they really hate is lousy programmers.
Larry Niven
Everything in software architecture is a trade-off.
Neal Ford
Documentation is the castor oil of programming
Gerald M. Weinberg
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
In the end, regardless of where you are on the development hierarchy, keep coding. It’s where you’re most valuable.
Ka Wai Cheung
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.
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
GoF patterns might better be called implementation patterns than design (or thinking) patterns.
David West
The strength of JavaScript is that you can do anything. The weakness is that you will.
Reg Braithwaite
After you finish the first 90% of a project, you have to finish the other 90%.
Michael Abrash
Any man can make mistakes, but only an idiot persists in his error.
Marcus Cicero
Write code every day.
John Resig
Good engineers make solutions obsolete. Great engineers make themselves obsolete.
Jordan W
I think you should always bear in mind that entropy is not on your side.
Elon Musk
A computer would deserve to be called intelligent if it could deceive a human into believing that it was human.
Alan Turing
Design is choosing how you will fail.
Ron Fein
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
Code Smell 61 — Coupling to Classes
Classes are handy. We can call them and invoke them any time. Is this good?mcsee.medium.com
It is easier to write an incorrect program than understand a correct one.
Alan J Perlis
Code Smell 69 — Big Bang (JavaScript Ridiculous Castings)
mcsee.medium.com
Skilled and motivated programmers can overcome inadequate processes, but perfect processes can never compensate for inadequate programmers or poor software managers.
Dick Fairley
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
It would be nice if products and programming languages were designed to have only good parts.
Douglas Crockford
Teamwork was more accepted 40 years ago.
Ken Olsen
The primary duty of an exception handler is to get the error out of the lap of the programmer and into the surprised face of the user.
Verity Stob
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
Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.
Stan Kelly-Bootle
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
Antoine de Saint Exupéry
The key to efficient development is to make interesting new mistakes
Tom Love
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 use of COBOL cripples the mind; its teaching should therefore be regarded as a criminal offense.
Edsger Dijkstra
“Don’t fix it if it ain’t broke” presupposed that you can’t improve something that works reasonably well already. If the world’s inventors had believed this, we’d still be driving Model A Fords and using outhouses.
H. W. Kenton
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
A single human brain has about a hundred million nerve cells… and a computer program that throws light on the mind/brain problem will have to incorporate the deepest insights of biologists, nerve scientists, psychologists, physiologists, linguists, social scientists, and even philosophers.
Tony Hoare
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
God made the natural numbers; all else is the work of man.
Leopold Kronecker
Code Smell 108 — Float Assertions
Asserting two float numbers are the same is a very difficult problemblog.devgenius.io
A data structure is just a stupid programming language.
Bill Gosper
Code Smell 55 — Object Orgy
If you see your objects as data holders you will violate their encapsulation but you shouldn’t, as in real life, you…medium.com
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
Languages that try to disallow idiocy become themselves idiotic.
Rob Pike
The key is to acknowledge from the start that you have no idea how this will grow. Accepting that you don’t know everything, you begin to design the system defensively… You should spend most of your time thinking about interfaces rather than implementations.”,
Nicholas Zakas
There are only two kinds of languages: the ones people complain about and the ones nobody uses.
Bjarne Stroustrup
In almost all cases, I’m opposed to setting aside time for refactoring. In my view refactoring is not an activity you set aside time to do. Refactoring is something you do all the time in little bursts.
Martin Fowler
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
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. Pairing
Kent Beck
When I write software, I know that it will fail, either due to my own mistake, or due to some other cause.
Wietse Venema
Encapsulate the concept that varies.
Erich Gamma
Code Smell 103 — Double Encapsulation
Calling our own accessor methods might seem a good encapsulation idea. But it is not.blog.devgenius.io
If you can’t explain it simply, you don’t understand it well enough.
Albert Einstein
A program is never less than 90% complete, and never more than 95% complete.
Terry Baker
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
Technology is nothing. What’s important is that you have a faith in people, that they’re basically good and smart, and if you give them tools, they’ll do wonderful things with them.
Steve Jobs
Imagination is more important than knowledge. For knowledge is limited, whereas imagination embraces the entire world, stimulating progress, giving birth to evolution.
Albert Einstein
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
Whatever the device you use for getting your information out, it should be the same information.
Tim Berners-Lee
Any sufficiently advanced bug is indistinguishable from a feature.
Bruce Brown
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
Extraordinary claims require extraordinary evidence
Carl Sagan
No matter how slick the demo is in rehearsal, when you do it in front of a live audience the probability of a flawless presentation is inversely proportional to the number of people watching, raised to the power of the amount of money involved.
Mark Gibbs
A refund for defective software might be nice, except it would bankrupt the entire software industry in the first year.
Andrew S. Tanenbaum
Don’t wait until you have a bug to step through your code.
Steve Maguire
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
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
I like to say that in the old days, if you reinvented the wheel, you would get your wrist slapped for not reading. But nowadays people are reinventing the flat tire. I’d personally be happy if they reinvented the wheel, because at least we’d be moving forward.
Alan Kay
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
Program construction consists of a sequence of refinement steps.
Niklaus Wirth
Simply put, when you have very large pieces of software, most of the tools look at the individual lines of code as text. It is often extremely powerful to look not at individual pieces of code but at a system as a whole.
James Gosling
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
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
In 2031, lawyers will be commonly a part of most development teams.
Grady Booch
I get into the meanest, nastiest frame of mind I can manage, and I write the nastiest (testing) code I can think of. Then I turn around and embed that in even nastier constructions that are nearly obscene.
Donald E. Knuth
The whole point of getting things done is knowing what to leave undone.
Oswald Chambers
The fruit we wish to pick tomorrow lies hidden in the seed of today. The goals we are to read and the problems we are to solve tomorrow depend upon today’s diligence, hope and faith, today’s conviction of the almightiness of good.
Ralph Johnson
Passwords are like underwear: you don’t let people see it, you should change it very often, and you shouldn’t share it with strangers.
Chris Pirillo
Good programmers never write what they can steal or borrow.
Jeff Atwood
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
The object-oriented model makes it easy to build up programs by accretion. What this often means, in practice, is that it provides a structured way to write spaghetti code.
Paul Graham
Why do most developers fear to make continuous changes to their code? They are afraid they’ll break it! Why are they afraid they’ll break it? Because they don’t have tests.
Robert Martin
All programmers are optimists.
Fred Brooks
My real criticism with Null is that it brings back again unnecessarily all the agony of having to choose whether to run your program fast without checking or run it slow with checking.
Tony Hoare
I think it is important for software to avoiding imposing a cognitive style on workers and their work.
Edward Tufte
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
Design activities certainly do take up time and effort, but they payoff because they make it easier to evolve the software into the future. You can save short-term time by neglecting design, but this accumulates TechDebt, which will slow your productivity later.
Martin Fowler
There’s no obfuscated Perl contest because it’s pointless.
Jeff Polk
If you are choosing a JavaScript library purely based on popularity, I think you deserve what you get.
Tom Dale
A good threat is worth a thousand tests.
Boris Beizer
Being forced to write comments actually improves code, because it is easier to fix a crock than to explain it.
G. Steele
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
I think it is inevitable that people program poorly. Training will not substantially help matters. We have to learn to live with it.
Alan Perlis
Tests are the Programmer’s stone, transmuting fear into boredom.
Kent Beck
Good code is its own best documentation. As you’re about to add a comment, ask yourself, ‘How can I improve the code so that this comment isn’t needed?’
Steve McConnell
Brilliance in a scientist does not consist in being right more often but in being wrong about more interesting topics.
Kent Beck
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
These machines have no common sense; they have not yet learned to “think,” and they do exactly as they are told, no more and no less. This fact is the hardest concept to grasp when one first tries to use a computer.
Don Knuth
It is far easier to design a class to be thread-safe than to retrofit it for thread safety later.
Brian Goetz
Science is a way of thinking much more than it is a body of knowledge.
Carl Sagan
The billion dollar mistake of having null in the language. And since JavaScript has both null and undefined, it’s the two billion dollar mistake.
Anders Hejlsberg
Code generation, like drinking alcohol, is good in moderation.
Alex Lowe
TDD developed code tends to have low cyclomatic complexity
Neal Ford
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
Come to think of it, there are already a million monkeys on a million typewriters, and Usenet is nothing like Shakespeare.
Blair Houghton
Software as an asset isn’t stable over time; it needs to be maintained.
Brian Behlendorf
As a program is evolved its complexity increases unless work is done to maintain or reduce it.
Lehman’s law of Increasing Complexity
Both real and imaginary numbers have exactly the same logical status. They are human concepts that model reality, but they are not themselves real
Ian Stewart
Programming is usually taught by examples.
Niklaus Wirth
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
Software engineering is not the same as bridge building, but what most software developers think of as bridge building isn’t like real bridge building, either. This conversation is really a form of confusion between production engineering and design engineering.
Dave Farley
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
In the one and only true way. The object-oriented version of ‘Spaghetti code’ is, of course, ‘Lasagna code’. (Too many layers).
Roberto Waltman
Design patterns should not be applied indiscriminately. Often they achieve flexibility and variability by introducing additional levels of indirection. A design pattern should only be applied when the flexibility it affords is actually needed.
Erich Gamma
The first rule of functions is that they should be small. The second rule of functions is that they should be smaller than that
Robert C. Martin
Good programmers use their brains, but good guidelines save us having to think out every case.
Francis Glassborow
Tests should be even more readable then the code they cover
Shaun Wessel
The critical thing in developing software is not the program, it’s the design. It is translating understanding of user needs into something that can be realized as a computer program.
Mitch Kapor
One broken window, left unrepaired for any substantial length of time, instills in the inhabitants of the building a sense of abandonment — a sense that the powers that be don’t care about the building. So another window gets broken. People start littering. Graffiti appears. Serious structural damage begins. In a relatively short span of time, the building becomes damaged beyond the owner’s desire to fix it, and the sense of abandonment becomes reality.
Andrew Hunt
Anytime you put a challenge out there, people come up with a creative solution on the software side.
Henry Samueli
it is not the most intellectual of the species that survives; it is not the strongest that survives; but the species that survives is the one that is able best to adapt and adjust to the changing environment in which it finds itself.
Charles Darwin
All programming languages are shit. But the good ones fertilize your mind.
Reg Braithwaite
Thinking like an object will lead to a greater degree of isomorphism between objects found in the problem space (the enterprise domain) and those employed in a solution space (the computer program) than thinking like a computer.
David West
When you choose a language, you’re choosing more than a set of technical trade-offs-you’re choosing a community.
Joshua Bloch
Coding is about writing code while programming is coding and thinking.
Leslie Lamport
90% of the functionality delivered now is better than 100% delivered never.
Brian W. Kernighan
Objects are there for the picking.
Bertrand Meyer
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
Code Smell 74 — Empty Lines
mcsee.medium.com
In a room full of top software designers, if two agree on the same thing, that’s a majority.
Bill Curtis
Bugs will happen. They cannot be eliminated, so they must be survived instead.
Michael T. Nygard
We are still in the infancy of naming what is really happening on software development projects.
Alistair Cockburn
Programmers are often angry because they’re often scared.
Paul Ford
Rarely is anyone thanked for the work they did to prevent the disaster that didn’t happen.
Mikko Hypponen
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
No crisis inside a computer is worth humiliating a human.
Alan Cooper
Temporary variables can be a problem. They are only useful within their own routine, and therefore they encourage long, complex routines.
Martin Fowler
The danger of computers becoming like humans is not as great as the danger of humans becoming like computers.
Konrad Zuse
Effective leadership is not about making speeches or being liked; leadership is defined by results not attributes.
Peter Drucker
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
Code Smell 100 — GoTo
GOTO was considered harmful 50 years agoblog.devgenius.io
We have persistant objects, they’re called files.
Ken Thompson
For us, the real goal is to make it so that the software ecosystem is as healthy as possible.
James Gosling
An organization that treats its programmers as morons will soon have programmers that are willing and able to act like morons only.
Bjarne Stroustrup
Hubris:
Excessive pride, the sort of thing Zeus zaps you for. Also the quality that makes you write (and maintain) programs that other people won’t want to say bad things about. Hence, the third great virtue of a programmer
Larry Wall
Organizing our work into a series of tiny steps gives us more opportunities to reflect on our progress and steer our designs toward better outcomes.
Dave Farley
Don’t document the problem, fix it.
Atli Björgvin Oddsson
Good judgement comes from experience, and experience comes from bad judgement.
Frederick P. Brooks
Software is Too Important to be Left to Programmers.
Meilir Page-Jones
The key to making programs fast is to make them do practically nothing.
Mike Haertel
We live in a world of misconceptions of thinking knowing syntax is at the heart of the problems. 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
TDD Conference 2021 — Want More Value Faster? Take Many More Much Smaller Steps — GeePaw Hill
First International Test Driven Development took place on July 30th.blog.devgenius.io
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
Code Smell 95 — Premature Classification
We are over generalizers. We shouldn’t create abstractions until we see enough concretions.mcsee.medium.com
The problem with quick and dirty, is that the dirty remains long after the quick has been forgotten
Steve C. McConnell
Teams are immutable. Every time someone leaves, or joins, you have a new team, not a changed team.
Richard Dalton
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 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
Non-technical questions sometimes don’t have an answer at all.
Linus Torvalds
The earlier you catch defects, the cheaper they are to fix.
David Farley
C is quirky, flawed, and an enormous success.
Dennis M. Ritchie
Of course bad code can be cleaned up. But it’s very expensive
Robert C. Martin
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
Fighting patents one by one will never eliminate the danger of software patents, any more than swatting mosquitoes will eliminate malaria.
Richard Stallman
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
Don’t ask whether you can do something, but how to do it
Adele Goldberg
You can’t communicate complexity, only an awareness of it.
Alan Perlis
A programmable mind embraces mental agility, to practice “de-learning” and “relearning” all the time.
pearl zhu
There is only one thing more painful than learning from experience, and that is not learning from experience.
Archibald McLeish
C++: an octopus made by nailing extra legs onto a dog.
Steve Taylor
Twenty percent of all input forms filled out by people contain bad data.
Dennis Ritchie
Code Smell 113 — Data Naming
Use entity domain names to model entity domain objects.mcsee.medium.com
Reducing a product’s definition to a list of features and functions ignores the real opportunity — orchestrating technological capability to serve human needs and goals.
Alan Cooper
Let there be no doubt that object-oriented design is fundamentally different than traditional structured design approaches: it requires a different way of thinking about decomposition, and it produces software architectures that are largely outside the realm of the structured design culture.
Grady Booch
You have to refactor when you run into ugly code — but excellent code needs plenty of refactoring too.
Martin Fowler
Most of us don’t invent ideas. We take the best ideas from someone else.
Sam Walton
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
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
Education makes machines which act like men and produces men who act like machines
Erich Fromm
Comprehensiveness is the enemy of comprehensibility.
Martin Fowler
With good program architecture debugging is a breeze, because bugs will be where they should be.
David May
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
I found out that most programmers don’t like to test their software as intensely as I do.
Kent Beck
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
Code Smell 106 — Production Dependent Code
Don’t add IFs checking for production environment.blog.devgenius.io
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
First do it, then do it right, then do it better.
Addy Osmani
If you’re willing to restrict the flexibility of your approach, you can almost always do something better.
John Carmack
The proper use of comments is to compensate for our failure to express ourselves in code.
Robert C. Martin
The best error message is the one that never shows up.
Thomas Fuchs
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
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
I think another good principle is separating presentation or user interface (UI) from the real essence of what your app is about. By following that principle I have gotten lucky with changes time and time again. So I think that’s a good principle to follow.
Martin Fowler
If I have seen further than others, it is by standing upon the shoulders of giants.
Isaac Newton
Continuous deployment came before continuous delivery. We need to learn from it.
Neal Ford
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
If you can improve just one thing in your software development, make it getting faster feedback.
Dave Farley
I would suggest an approach to an eventual “really nice” statically typed language by first making a dynamic language that can use objects as “semantic type definers and guards” to be installed in variables and to make a number of sample systems with it to find what level of static type-safety really pays for itself, and to then do co-evolution passes to get the dynamic types in good enough semantic shape so that all (or most) of what they do dynamically can be done at code writing time.
Alan Kay
If you lie to the compiler, it will get its revenge.
Henry Spencer
Code Smell 62 — Flag Variables
Flags indicate what happened. Unless their name is too generic.mcsee.medium.com
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
Code Smell 110 — Switches With Defaults
Default means ‘everything we don’t know yet’. We cannot foresee the future.blog.devgenius.io
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
No Silver Bullet
The phrase “No Silver Bullet” is widely used in the industry. In this article we will revisit the classic paper by Fred…medium.com
You can mass-produce hardware; you cannot mass-produce software; you cannot mass-produce the human mind.
Michio Kaku
The last thing you wanted any programmer to do is mess with internal state
Alan Kay
The first step of any project is to grossly underestimate its complexity and difficulty.
Nicoll Hunt
The best software architecture “knows” what changes often and makes that easy.
Paul Clements.
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
It’s hard enough to find an error in your code when you’re looking for it; its even harder when you’ve assumed your code is error-free.
Steve McConnell
You won’t get anything done by planning.
Karl Pilkington
Quality is never an accident; it is always the result of intelligent effort.
John Ruskin
The danger of standard process is that people will miss chances to take important shortcuts.
T. DeMarco and T. Lister
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 question of whether a computer can think is no more interesting than the question of whether a submarine can swim.
Edsger W. Dijkstra
The payoff of a customer-centric approach to software and digital product design is substantial and long-lasting for both companies and their customers.
Alan Cooper
There is nothing so useless as doing efficiently that which should not be done at all.
Peter Drucker
Software eventually and necessarily gained the same respect as any other discipline.
Margaret H. Hamilton
There is no code so big, twisted, or complex that maintenance can’t make it worse.
Gerald M. Weinberg
Great software today is often preferable to perfect software tomorrow.
Andrew Hunt
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 solving problems, dig at the roots instead of just hacking at the leaves.
Anthony J. D’Angelo
Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.
Alan Perlis
An ultimate joint challenge for the biological and the computational sciences is the understanding of the mechanisms of the human brain, and its relationship with the human mind.
Tony Hoare
Small minds are concerned with the extraordinary, great minds with the ordinary.
Blaise Pascal
A primary cause of complexity is that software vendors uncritically adopt almost any feature that users want.
Niklaus Wirth
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
Inheritance is surely a good answer but who knows the questions?
Michel Gauthier
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
A language that doesn’t have everything is actually easier to program in than some that do.
Dennis M. Ritchie
There is nothing in the programming field more despicable than an undocumented program.
Ed Yourdon
A program that produces incorrect results twice as fast is infinitely slower.
John Osterhout
Code Smell 76 - Generic Assertions
Your browser does not support the audio element. Don't make weak tests to create a false sensation of coverage. TL;DR…maximilianocontieri.com
Programmers are as emotional and irrational as normal people.
Douglas Crockford
Blame the implementation, not the technique.
Tim Kadlec
A bad system will beat a good person every time.
W. Edwards Deming
Agile methods derive much of their agility by relying on the tacit knowledge embodied in the team, rather than writing the knowledge down in plans.
Barry Boehm
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
Changes in software design will eventually mean “one step forward, two steps back”. It is inevitable.
Salman Arshad
The sooner you start to code, the longer the program will take.
Roy Carlson
A good enough first version will take longer to produce with $170K than it would have with $0K.
Jason Fried
In software design, it’s all about making a guess, trying it, and then learning from the experience.
Stewart Butterfield
This will surprise some of your readers, but my primary interest is not with computer security. I am primarily interested in writing software that works as intended.
Wietse Venema
Writing in C or C++ is like running a chain saw with all the safety guards removed.
Bob Gray
Be careful to preserve the orthogonality of your system as you introduce third-party toolkits and libraries. Choose your technologies wisely.
Andy Hunt
I’m a victim of Developaralysis: the crippling sense that the software industry is evolving so fast that no one person can possibly keep up.
Jon Evans
In pioneer days they used oxen for heavy pulling, and when one ox couldn’t budge a log, they didn’t try to grow a larger ox. We shouldn’t be trying for bigger computers, but for more systems of computers.
Grace Hopper
Don’t patch bad code — rewrite it.
P. J. Plauger
The benefits of a truly effective new technology are foregone when, in the rush to try out the next shiny whiz-bang tool, we abandon the current one.
Scott Guthrie
If you have too many special cases, you are doing it wrong.
Craig Zerouni
To iterate is human, to recurse divine
Peter Deutsch
Be curious. Read widely. Try new things. I think a lot of what people call intelligence boils down to curiosity.
Aaron Swartz
My computer’s so fast it finishes an infinite loop in 5 minutes.
Chisel Wright
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
People enjoy the interaction on the Internet, and the feeling of belonging to a group that does something interesting: that’s how some software projects are born.
Linus Torvalds
Nothing is harder than working under a tight deadline and still taking the time to clean up as you go.
Kent Beck
Code Smell 109 — Automatic Properties
What happens if you combine 4 code smells?blog.devgenius.io
Sometimes it is the people no one can imagine anything of who do the things no one can imagine.
Alan Turing
You haven’t mastered a tool until you understand when it should not be used.
Kelsey Hightower
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 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
Redundant comments are just places to collect lies and misinformation.
Robert Martin
One of the most valuable things about TDD is that it lets us concentrate on one thing at a time. We are either writing code or refactoring; we are never doing both at once.
Michael Feathers
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 the feedback is too late, it is useless. If it is misleading or wrong, the decisions that we make on its basis will be wrong, too
David Farley
The most delicate and the most essential piece of mechanism that a man has to deal with is the human machine.
Andrew Carnegie
A program which perfectly meets a lousy specification is a lousy program.
Cem Kaner
Defect-free software does not exist.
Wietse Venema
The “naive” or “natural” expectations of objects represent a kind of integrity — what Alan Kay called a user illusion — that must be respected.
David West
Bugs are often characteristic of a bad interface between subsystems, frequently a result of inadequate communication among people when they design the subsystems. When a bug is found, there is a tendency to handle it within the subsystem and not look at the program as a whole.
Ray Ozzie
Beyond basic mathematical aptitude, the difference between good programmers and great programmers is verbal ability.
Marissa Mayer
Code Smell 90 — Implementative Callback Events
When creating events, we should decouple the trigger from the action.mcsee.medium.com
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
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
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.
Code Smell 63 — Feature Envy
If your method is jealous and don’t trust in delegation you should start to do it.mcsee.medium.com
On the seventh day, God said, “Ship it! We’ll release patches later.”
Josh Flachsbart
Automated testing is a safety net that protects the program from its programmers.
Yegor Bugayenko
Syntactic sugar causes cancer of the semicolon.
Alan J. Perlis
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
Code Smell 93 — Send me Anything
Magic functions that can receive a lot of different (and not polymorphic arguments)mcsee.medium.com
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
Defects are not free. Somebody makes them, and gets paid for making them.
W Deming
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
.. one of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs.
Robert Firth
The methodologies and best practices used to develop software can be applied successfully to any challenge in life.
Walter O’Brien
Software never was perfect and won’t get perfect. But is that a license to create garbage? The missing ingredient is our reluctance to quantify quality.
Boris Beizer
Software is a great combination between artistry and engineering.
Bill Gates
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
Luck is the residue of design.
Wesley Branch Rickey
The most important property of a program is whether it accomplishes the intention of its user.
C.A.R Hoare
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
You might not think that programmers are artists, but programming is an extremely creative profession. It’s logic-based creativity.
John Romero
A language that doesn’t affect the way you think about programming, is not worth knowing.
Alan Perlis
Hardware: the parts of a computer system that can be kicked.
Jeff Pesis
The computer is simply an instrument whose music is ideas.
Alan Kay
Symmetry is a complexity-reducing concept (co-routines include subroutines); seek it everywhere.
Alan J. Perlis
Duplication is far cheaper than the wrong abstraction.
Sandi Metz
Watch the little things; a small leak will sink a great ship.
Benjamin Franklin
Successful software always gets changed.
Fred Brooks
Not all eyes that notice bugs in Open Source code belong to saints who will report or repair them in the interest of the public good.
Martin Fowler
We crave for new sensations but soon become indifferent to them. Wonders of yesterday are today common occurrences.
Nikola Tesla
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
Code Smell 79 — TheResult
If a name is already used, we can always prefix it with ‘the’.mcsee.medium.com
Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure.
Melvin Conway
We’re entering a new world in which data may be more important than software.
Tim O’Reilly
The most disastrous thing that you can ever learn is your first programming language.
Alan Kay
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
First, solve the problem. Then, write the code.
John Johnson
Compatibility means deliberately repeating other people’s mistakes.
David Wheeler
Sometimes it pays to stay in bed on Monday, rather than spending the rest of the week debugging Monday’s code.
Dan Solomon
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
It´s more about good enough than it is about right or wrong.
James Bach
A year spent in artificial intelligence is enough to make one believe in God.
Alan Perlis
Smart data structures and dumb code works a lot better than the other way around.
Eric Raymond
A person without data is just another person with an opinion
William Edwards Deming
It’s easy to cry “bug” when the truth is that you’ve got a complex system and sometimes it takes a while to get all the components to co-exist peacefully.
D. Vargas
Static typing is to reliable programming what a spelling checker is to a good writer.
Peter Van Roy
The secret to fast software, in all but hard real-time contexts, is to write tunable software first and then tune it for sufficient speed.
Martin Fowler
Optimism is an occupational hazard of programming: feedback is the treatment.
Kent Beck
Clean Code
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
John Woods
Code Smell 91 — Test Asserts without Description
We are big fans of xUnit. But we don’t care much for the programmers.mcsee.medium.com
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
Martin Fowler
Good programming is good writing.
John Shore
The trouble with programmers is that you can never tell what a programmer is doing until it’s too late.
Seymour Cray
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
Thinking about my experience of modifying code, I see that I spend much more time reading the existing code than I do writing new code. If I want to make my code cheap, therefore, I should make it easy to read.
Kent Beck
Code Smell 96 — My Objects
You don’t own objects.mcsee.medium.com
If you automate a mess, you get an automated mess.
Rod Michael
There is absolutely no reason to make computers as stupid as people are.
Nigel Jacob
Programming is a skill best acquired by practice and example rather than from books.
Alan Turing
Programs are meant to be read by humans and only incidentally for computers to execute.
Donald Knuth
Code Smell 03 — Functions Are Too Long
Humans get bored beyond line 10.medium.com
You will fall to ruin because you believe that exceptions to the rule make new rules.
Pierce Brown
Code Smell 26 — Exceptions Polluting
It is very nice to have lots of different exceptions. Your code is declarative and robust. Or not?mcsee.medium.com
The ratio of time spent reading (code) versus writing is well over 10 to 1 … (therefore) making it easy to read makes it easier to write.
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
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
Does experience help? NO! Not if we are doing the wrong things.
Edwards Deming
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
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
Code Smell 85 — And Functions
Do not perform more than requested.mcsee.medium.com
Take reasonable steps to test, document, and otherwise draw attention to the assumptions made in every module and routine.
Daniel Read
The most effective debugging tool is still careful thought, coupled with judiciously placed print statements.
Brian W. Kernighan
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
Code Smell 59 — Basic / Do Functions
sort, doSort, basicSort, doBasicSort, primitiveSort, superBasicPrimitiveSort, who does the real work?mcsee.medium.com
A heuristic we follow is that whenever we feel the need to comment something, we write a method instead.
Martin Fowler
We are not nouns, we are verbs. I am not a thing — an actor, a writer — I am a person who does things — I write, I act — and I never know what I’m going to do next. I think you can be imprisoned if you think of yourself as a noun.
Stephen Fry
When debugging, novices insert corrective code; experts remove defective code.
Richard Pattis
Code Smell 73 — Exceptions for Expected Cases
mcsee.medium.com
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
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
That’s why I write, because life never works except in retrospect. You can’t control life, at least you can control your version.
Chuck Palahniuk
Code Smell 57 — Versioned Functions
sort, sortOld, sort20210117, workingSort, It is great to have them all. Just in casemedium.com
A programming language is low level when its programs require attention to the irrelevant.
Alan Perlis
No matter how slow you are writing clean code, you will always be slower if you make a mess.
Robert Martin
Code Smell 64 — Inappropriate Intimacy
Two classes entangled in love.mcsee.medium.com
The last good thing written in C was Franz Schubert’s Symphony Number 9.
Erwin Dieterich
The most beautiful code, the most beautiful functions, and the most beautiful programs are sometimes not there at all.
Jon Bentley
Code Smell 77 — Timestamps
Timestamps are widely used. They have a central issuing authority and do not go back, do they?blog.devgenius.io
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
I’ve been a software engineer, a novelist, a journalist, and a manager — and managing developers is easily the trickiest thing I’ve ever done.
Jon Evans
The language in which we express our ideas has a strong influence on our thought processes.
Don Knuth
That which optimizes one part of the system necessarily undermines the system as a whole.
Eric Ries
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
Code Smell 78 — Callback Hell
Processing an algorithm as a sequence of nested callbacks is not clever.blog.devgenius.io
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
Most developers hate testing. They tend to test gently, subconsciously knowing where the code will break and avoiding the weak spots. Pragmatic Programmers are different. We are driven to find our bugs now, so we don’t have to endure the shame of others finding our bugs later.
Andy Hunt
We have to stop optimizing for programmers and start optimizing for users.
Jeff Atwood
Code Smell 88 — Lazy Initialization
Yet another premature optimization patternmcsee.medium.com
Error handling is important, but if it obscures logic, it’s wrong.
Robert Martin
Code Smell 72 — Return Codes
blog.devgenius.io
I hired finishers because I’m a good starter and a poor finisher.
Alan Kay
If you get tired of writing for loops, take a break and continue later.
David Walker
Code Smell 53 — Explicit Iteration
We learned loops back in school. But enumerators and iterators are the next generation.mcsee.medium.com
The nice thing about standards is that there are so many to choose from.
Andrew S. Tannenbaum
Code Smell 48 — Code Without Standards
Working on a solo project is easy. Unless you go back to it after some months. Working with many other developers…mcsee.medium.com
Deleted code is debugged code.
Jeff Sickel
A good programmer is someone who always looks both ways before crossing a one-way street.
Doug Linder
The cleaner and nicer the program, the faster it’s going to run. And if it doesn’t, it’ll be easy to make it fast.
Joshua Bloch
The best programmers write only easy programs.
Michael A. Jackson
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
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
Prolific developers don’t always write a lot of code, instead they solve a lot of problems. The two things are not the same.
J. Chambers
Software and cathedrals are much the same. First we build them, then we pray.
Sam Redwine
In essence, engineering is doing what you want with what you have.
J. Carmack
I love software, because if you can imagine something, you can build it.
Ray Ozzie
Copy and paste is a design error.
David Parnas
Code Smell 46 — Repeated Code
DRY is our mantra. Teachers tell us to remove duplication. We need to go beyond.mcsee.medium.com
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
Code Smell 45 — Not Polymorphic
Methods should be interchangeable if they do the same.mcsee.medium.com
The best smells are something that’s easy to spot and most of time lead you to really interesting problems. Data classes (classes with all data and no behavior) are good examples of this. You look at them and ask yourself what behavior should be in this class.
Martin Fowler
Code Smell 70 — Anemic Model Generators
TL;DR: Do not create anemic objects. Much less with automatic tools.blog.devgenius.io
Writing software as if we are the only person that ever has to comprehend it is one of the biggest mistakes and false assumptions that can be made.
Karolina Szczur
Code Smell 80 — Nested Try/Catch
Exceptions are a great way of separating happy path versus trouble path. But we tend to over-complicate our solutions.blog.devgenius.io
A cache with a bad policy is another name for a memory leak.
Rico Mariani
Companies should make their own enterprise systems as often as network security companies should manufacture their own aspirin.
Phil Simon
DRY — Don’t Repeat Yourself — Every piece of knowledge must have a single, unambiguous, athoritative representation within a system.
Andy Hunt
Simplicity is the soul of efficiency.
Austin Freeman
Code Smell 29 — Settings/Configs
Changing system behavior in a control board is the customer’s dream. And the software engineer’s nightmare.mcsee.medium.com
Every time you write a comment, you should grimace and feel the failure of your ability of expression
The value of a prototype is in the education it gives you, not in the code itself.
Alan Cooper
Code Smell 68 — Getters
Getting things is widespread and safe. But it is a very bad practice.mcsee.medium.com
Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.
Jamie Zawinski
Write shy code — modules that don’t reveal anything unnecessary to other modules and that don’t rely on other modules’ implementations.
Dave Thomas
It is not the language that makes programs appear simple. It is the programmer that make the language appear simple.
Robert Martin
If you have to spend effort looking at a fragment of code and figuring out what it’s doing, then you should extract it into a function and name the function after the what.
Martin Fowler
Code Smell 05 — Comment Abusers
Code has lots of comments. Comments are coupled to implementation and hardly maintained.medium.com
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.
Brian Kernighan
Without requirements or design, programming is the art of adding bugs to an empty text file.
Louis Srygley
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
Tests should be coupled to the behavior of code and decoupled from the structure of code
Kent Beck
Never spend 6 minutes doing something by hand when you can spend 6 hours failing to automate it.
Zhuowei Zhang
Make it correct, make it clear, make it concise, make it fast. In that order.
Wes Dyer
Programming is not a zero-sum game. Teaching something to a fellow programmer doesn’t take it away from you.
John Carmack
It is not the language that makes programs appear simple. It is the programmer that make the language appear simple!
Code Smell 24 — Boolean Coercions
Booleans should be just True and falsemedium.com
Programming can be fun, so can cryptography; however they should not be combined.
Kreitzberg & Shneiderman.
Code Smell 06 — Too Clever Programmer
Code difficult to read. Tricky with names without semantic. Sometimes using language’s accidental complexity.medium.com
The amateur software engineer is always in search of magic.
Grady Booch
Code Smell 52 — Fragile Tests
Tests are our safety nets. If we don’t trust on their integrity we will be in great danger.mcsee.medium.com
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
Don’t comment bad code — rewrite it.
Brian Kernighan
What exactly is a name? — Part II: Rehab
We all agree: a good name is always the most important thing. Let’s find them.medium.com
Code is like humor. When you have to explain it, it’s bad.
Cory House
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
Truth can only be found in one place: the code.
Robert C. Martin
If you say “I told you so”, you are the one who has failed. Because you knew, but did not manage to stop the train wreck.
Robert Martin
It’s harder to read code than to write it.
Joel Spolsky
Code Smell 51 — Double Negatives
Not operator is our friend. Not not operator is not our friendmcsee.medium.com
So much complexity in software comes from trying to make one thing do two things.
Ryan Singer
Code Smell 34 — Too Many Attributes
A class defines objects with lots of attributes.mcsee.medium.com
One day my daughter came in, looked over my shoulder at some Perl 4 code, and said, “What is that, swearing?”
Larry Wall
A long descriptive name is better than a short enigmatic name. A long descriptive name is better than a long descriptive comment. -
Code Smell 33 — Abbreviations
Abbreviating is very important so that we look smart and save memory and mind spacemcsee.medium.com
Talk is cheap. Show me the code.
Linus Torvalds
Software Quality
Legacy code is code without tests.
Michael Feathers
How to Decouple a Legacy System
An exercise improving legacy codemedium.com
Software testing is not only ensuring absence of bugs but also ensuring presence of value.
Amit Kalantri
It is easier to change the specification to fit the program than vice versa.
Alan Perlis
Beware of bugs in the above code; I have only proved it correct, not tried it.
Donald Knuth
Stop Calling them ‘Bugs’
Let’s name things the right waymcsee.medium.com
Regardless of your plans, production is the ultimate testing environment.
J T Wall
One man’s crappy software is another man’s full time job.
Jessica Gaston
Code Smell 42 — Warnings/Strict Mode Off
Compilers and warnings lights are there for help. Don’t ignore them.mcsee.medium.com
Good software, like wine, takes time.
Joel Spolsky
Pay attention to zeros. If there is a zero, someone will divide by it.
Cem Kaner
Somebody will say they have a program that’s verified and it’s only verified because it met its specification according to some verifier. But the verifier might have bugs in it. The specifications might have bugs in them.
Donald Knuth
Beta testing is a symptom of weak testing practices and poor communication with customers.
Kent Beck
Discovering the unexpected is more important than confirming the known.
George E. P. Box
Pasting code from the internet into production code is like chewing gum found in the street.
Mike Johnson
The most important single aspect of software development is to be clear about what you are trying to build.
Bjarne Stroustrup
A Perl program is correct if it gets the job done before your boss fires you.
Larry Wall
Code Smell 41 — Regular Expression Abusers
RegEx are a wonderful tool, we should to use them carefully and not to look smart.mcsee.medium.com
If debugging is the process of removing software bugs, then programming must be the process of putting them in.
Edsger Dijkstra
Code Smell 36 — Switch/case/elseif/else/if statements
First programming lesson: Control structures. Senior developer lesson: avoid them.mcsee.medium.com
The key to building a great product is building a great team first. To me, great teams aren’t bound by roles, but they’re driven by moving forward.
Alan Page
Precise language is not the problem. Clear language is the problem.
R. Feynman
The pesticide paradox. Every method you use to prevent or find bugs leaves a residue of subtler bugs against which those methods are ineffective.
Boris Beizer
Code Smell 30 — Mocking Business
Mocking is a great aid when testing behavior. Like with many other tools, we are abusing them.mcsee.medium.com
I try to think mostly in terms of preconditions, and checking things in the constructor and the beginning of a function.
Learning the art of programming, like most other disciplines, consists of first learning the rules and then learning when to break them.
Joshua Bloch
Developer testing is an important step towards accountability. It gives developers a way to demonstrate the quality of the software they produce.
Kent Beck
The role of a trainer or consultant is to empower the customer, not to make himself indispensable.
Bertrand Meyer
Correctness is clearly the prime quality. If a system does not do what it is supposed to do, then everything else about it matters little.
Bertrand Meyer
Code Smell 86 — Mutable Const Arrays
Const declares something to be constant. Can it mutate?mcsee.medium.com
Quality is free, but only to those who are willing to pay heavily for it.
DeMarco and Lister
Nothing makes a system more flexible than a suite of tests -
Code Smell 82 — Tests Violating Encapsulation
Objects work fine and fulfill business objectives. But we need to test them. Let’s break them.blog.devgenius.io
With tests, we can change the behavior of our code quickly and verifiably.
Without them, we really don’t know if our code is getting better or worse.”
How to Squeeze Test Driven Development on Legacy Systems
We all love T.D.D. We know its benefits, we have read a thousand tutorials on how to build a system using this…mcsee.medium.com
There are two ways to write error-free programs; only the third one works.
Alan J. Perlis
As a rule, software systems do not work well until they have been used, and have failed repeatedly, in real applications.
David Parnas
As the Tests get more Specific, the Code gets more Generic.
Refactoring
Whenever I have to think to understand what the code is doing, I ask myself if I can refactor the code to make that understanding more immediately apparent.
Martin Fowler
Medium
Edit descriptionmcsee.medium.com
Object Oriented
Let there be no doubt that object-oriented design is fundamentally different than traditional structured design approaches: it requires different ways of thinking about decomposition, and it produces software architectures that are largely outside the realm of the structured design culture.
Grady Booch
I invented the term ‘object oriented’, and C++ was not what I had in mind
Alan Kay
Computers are good at following instructions, but not at reading your mind
Donald Knuth
Code Smell 87 — Inconsistent Parameters Sorting
Be consistent with the parameters you use. Code is prose.mcsee.medium.com
Part of the objective of this series of articles is to generate spaces for debate and discussion on software design.
Object Design Checklist
This is an index to already published articles on software design.medium.com
We look forward to comments and suggestions on this article.
This article is also available in Spanish here.
Original Thread on Twitter
Wow. This is a really long list of quotes. Thank you for sharing this as an article, Maxi. I'm a fan of quotes. I'm going to bookmark this post for future reference.