Software Engineering Great Quotes

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.

Image for post
Image for post
Photo by Zac Durant on Unsplash

Software Design

There are only two hard things in Computer Science: cache invalidation and naming things.

Phil Karlton

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.

Martin P. Fowler

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

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

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

We comfort ourselves with the belief that if the customers had just been happy with what they said they needed, the design would have been fine. It’s the customer’s fault for changing the requirements on us

Robert Martin

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

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

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

The biggest issue on software teams is making sure everyone understands what everyone else is doing. -

Martin P. Fowler

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

You can prove anything by mentioning another computer language.

Larry Wall

The purpose of computing is insight, not numbers.

Richard Hamming

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

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

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

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

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

Architecture is the tension between coupling and cohesion.

Neal Ford

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

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

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.

Eric Evans

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

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

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

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

Daniel Ingalls

I’m not a great programmer; I’m just a good programmer with great habits.

Kent Beck

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

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

The best performance improvement is the transition from the nonworking state to the working state.

J. Osterhout

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

In programming, the hard part isn’t solving problems, but deciding what problems to solve.

Paul Graham

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

Weeks of programming can save you hours of planning.

Anonymous

The key to performance is elegance, not battalions of special cases.

Jon Bentley and Douglas McIlroy

Write shy code — modules that don’t reveal anything unnecessary to other modules and that don’t rely on other modules’ implementations.

Dave Thomas

Inside every well-written large program is a well-written small program.

C.A.R. Hoare

The essence of XML is this: the problem it solves is not hard, and it does not solve the problem well.

Phil Wadler

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

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

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

Don’t get suckered in by the comments, they can be terribly misleading: Debug only the code.

Dave Storer

The purpose of software engineering is to control complexity, not to create it.

Pamela Zave

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

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.

Martin P. Fowler

Mathematicians stand on each others’ shoulders and computer scientists stand on each others’ toes.

Richard Hamming

A computer lets you make more mistakes faster than any other invention with the possible exceptions of handguns and Tequila.

Mitch Ratcliffe

Image for post
Image for post
Photo by Shahadat Rahman on Unsplash

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

More good code has been written in languages denounced as “bad” than in languages proclaimed “wonderful” — much more.

Bjarne Stroustrup

He who hasn’t hacked assembly language as a youth has no heart. He who does as an adult has no brain.

John Moore

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

It is easier to write an incorrect program than understand a correct one.

Alan J Perlis

Sun Microsystems had the right people to make Java into a first-class language, and I believe it was the Sun marketing people who rushed the thing out before it should have gotten out.

Alan Kay

There are only two kinds of languages: the ones people complain about and the ones nobody uses.

Bjarne Stroustrup

The whole point of getting things done is knowing what to leave undone.

Oswald Chambers

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

Image for post
Image for post
Photo by You X Ventures on Unsplash

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

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

You can mass-produce hardware; you cannot mass-produce software; you cannot mass-produce the human mind.

Michio Kaku

There is nothing so useless as doing efficiently that which should not be done at all.

Peter Drucker

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

Programmers are as emotional and irrational as normal people.

Douglas Crockford

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

Duplication is far cheaper than the wrong abstraction.

Sandi Metz

Successful software always gets changed.

Fred Brooks

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

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

Optimism is an occupational hazard of programming: feedback is the treatment.

Kent Beck

Image for post
Image for post
Photo by Bench Accounting on Unsplash

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

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

Martin Fowler

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

Programs are meant to be read by humans and only incidentally for computers to execute.

Donald Knuth

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.

Robert Martin

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

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

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

A heuristic we follow is that whenever we feel the need to comment something, we write a method instead.

Martin Fowler

When debugging, novices insert corrective code; experts remove defective code.

Richard Pattis

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

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

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

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

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.

Larray Wall

The language in which we express our ideas has a strong influence on our thought processes.

Don Knuth

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

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

We have to stop optimizing for programmers and start optimizing for users.

Jeff Atwood

Error handling is important, but if it obscures logic, it’s wrong.

Robert Martin

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

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

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

If you have three pet dogs, give them names. If you have 10,000 head of cattle, don’t bother. Nowadays, the idea of giving a name to every file on your computer is ridiculous.

David Gelernter

The 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

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

A cache with a bad policy is another name for a memory leak.

Rico Mariani

Every time you write a comment, you should grimace and feel the failure of your ability of expression

Robert Martin

The value of a prototype is in the education it gives you, not in the code itself.

Alan Cooper

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

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

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!

Robert Martin

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

Code is like humor. When you have to explain it, it’s bad.

Cory House

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

So much complexity in software comes from trying to make one thing do two things.

Ryan Singer

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. -

Robert Martin

Talk is cheap. Show me the code.

Linus Torvalds

Image for post
Image for post
Photo by Raquel Martínez on Unsplash

Software Quality

Legacy code is code without tests.

Michael Feathers

Software testing is not only ensuring absence of bugs but also ensuring presence of value.

Amit Kalantri

Beware of bugs in the above code; I have only proved it correct, not tried it.

Donald Knuth

Regardless of your plans, production is the ultimate testing environment.

J T Wall

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

If debugging is the process of removing software bugs, then programming must be the process of putting them in.

Edsger Dijkstra

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

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

I try to think mostly in terms of preconditions, and checking things in the constructor and the beginning of a function.

Brad Fitzpatrick

Developer testing is an important step towards accountability. It gives developers a way to demonstrate the quality of the software they produce.

Kent Beck

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

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 -

Robert Martin

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.”

Michael Feathers

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.

Robert Martin

Image for post
Image for post
Photo by Kelvyn Ornettte Sol Marte on Unsplash

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

Image for post
Image for post
Photo by National Cancer Institute on Unsplash

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

Part of the objective of this series of articles is to generate spaces for debate and discussion on software design.

We look forward to comments and suggestions on this article.

This article is also available in Spanish here.

Original Thread on Twitter

Dev Genius

Coding, Tutorials, News, UX, UI and much more related to development

Sign up for Best Stories

By Dev Genius

The best stories sent monthly to your email. Take a look.

By signing up, you will create a Medium account if you don’t already have one. Review our Privacy Policy for more information about our privacy practices.

Check your inbox
Medium sent you an email at to complete your subscription.

Maximiliano Contieri

Written by

I’m senior software engineer specialized in declarative designs. S.O.L.I.D. and agile methodologies fan.

Dev Genius

Coding, Tutorials, News, UX, UI and much more related to development

Maximiliano Contieri

Written by

I’m senior software engineer specialized in declarative designs. S.O.L.I.D. and agile methodologies fan.

Dev Genius

Coding, Tutorials, News, UX, UI and much more related to development

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store