Software Engineering Great Quotes

Software Engineering Great Quotes

Subscribe to my newsletter and never miss my upcoming articles

Listen to this article

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

Make illegal states unrepresentable.

Yaron Minsky


First make the change easy (warning: this might be hard), then make the easy change.

Kent Beck


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


Don’t automate an undisciplined workflow. The computer won’t solve what the customer’s management can’t.

Larry Bernstein


Science is what we understand well enough to explain to a computer. Art is everything else we do.

Donald Knuth


Before you use a method in a legacy system, check to see if there are tests for it. If there aren’t, write them. When you do this consistently, you use tests as a medium of communication.

Michael Feathers


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

Martin Fowler


A programming language is a tool that has a profound influence on our thinking habits.

Edsger Dijkstra


Object thinking focuses our attention on the problem space rather than the solution space.

David West


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

Phil Wadler


Software is like entropy: It is difficult to grasp, weighs nothing, and obeys the Second Law of Thermodynamics; i.e., it always increases.

Norman Augustine


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

Jon Bentley and Douglas McIlroy


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

Robert Martin


PHP is a minor evil perpetrated and created by incompetent amateurs, whereas Perl is a great and insidious evil, perpetrated by skilled but perverted professionals.

Jon Ribbens


At any particular point in time, the features provided by our programming languages reflect our understanding of software and programming.

R. E. Fairley


Programming isn't about what you know; it's about what you can figure out.

Chris Pine


In general, the longer you wait before fixing a bug, the costlier (in time and money) it is to fix.

Joel Spolsky


Nothing is harder than working under a tight deadline and still taking the time to clean up as you go.

Kent Beck


A computer once beat me at chess, but it was no match for me at kick boxing.

Emo Philips


Later Equals Never.

LeBlanc's Law


People think that computer science is the art of geniuses but the actual reality is the opposite, just many people doing things that build on each other, like a wall of mini stones.

Donald Knuth


Your most unhappy customers are your greatest source of learning.

Bill Gates


The danger from computers is not that they will eventually get as smart as men, but that we will meanwhile agree to meet them halfway.

Bernard Avishai


In programming, if someone tells you “you’re overcomplicating it,” they’re either 10 steps behind you or 10 steps ahead of you.

Andrew Clark


The only truly secure system is one that is powered off, cast in a block of concrete and sealed in a lead-lined room with armed guards.

Gene Spafford


Sometimes it pays to stay in bed on Monday, rather than spending the rest of the week debugging Monday's code.

Dan Salomon


Weeks of programming can save you hours of planning.

Anonymous


It’s OK to figure out murder mysteries, but you shouldn’t need to figure out code. You should be able to read it.

Steve McConnell


There is an art to knowing where things should be checked and making sure that the program fails fast if you make a mistake. That kind of choosing is part of the art of simplification.

Ward Cunningham


I've finally learned what 'upward compatible' means. It means we get to keep all our old mistakes.

Dennie van Tassel


The software isn’t finished until the last user is dead.

Sidney Markowitz


An error arises from treating object variables (instance variables) as if they were data attributes and then creating your hierarchy based on shared attributes. Always create hierarchies based on shared behaviors, side.

David West


Information shared by an object might or might not be part of the structure of that object. That is, the object might compute the information, or it might delegate the request for information to another object.

Rebecca Wirfs Brooks


The cheapest, fastest and most reliable components of a computer system are those that aren’t there.

Gordon Bell


You can prove anything by mentioning another computer language.

Larry Wall


Your obligation is that of active participation. You should not act as knowledge-absorbing sponges, but as whetstones on which we can all sharpen our wits.

Edsger W. Dijkstra


Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

Rick Cook


Without requirements or design, programming is the art of adding bugs to an empty text file.

Louis Srygley


Encapsulate the concept that varies.

Erich Gamma


Good programmers never write what they can steal or borrow.

Jeff Atwood


It is very hard to predict, especially the future.

Niels Bohr


You cannot teach beginners top-down programming, because they don't know which end is up.

Tony Hoare


Duplication is far cheaper than the wrong abstraction.

Sandi Metz


Learn not to add too many features right away, and get the core idea built and tested.

Leah Culver


If it doesn’t work, it doesn’t matter how fast it doesn’t work.

Mich Ravera


Writing a class without its contract would be similar to producing an engineering component (electrical circuit, VLSI (Very Large Scale Integration) chip, bridge, engine...) without a spec. No professional engineer would even consider the idea.

Bertrand Meyer


Telling a programmer there's already a library to do X is like telling a songwriter there's already a song about love.

Pete Cordell


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

Rico Mariani


In a purely functional program, the value of a [constant] never changes, and yet, it changes all the time! A paradox!

Joel Spolsky


If you lie to the compiler, it will get its revenge.

Henry Spencer


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


Never spend 6 minutes doing something by hand when you can spend 6 hours failing to automate it.

Zhuowei Zhang


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

Alan Cooper


When someone says, "I want a programming language in which I need only say what I want done," give him a lollipop.

Alan J. Perlis


The real hero of programming is the one who writes negative code.

Douglas McIlroy


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

Richard Hamming


The code you write makes you a programmer. The code you delete makes you a good one. The code you don't have to write makes you a great one.

Mario Fusco


Simple things should be simple, complex things should be possible.

Alan Kay


Final source code is the real software design.

Jack Reeves


If you think good architecture is expensive, try bad architecture.

Brian Foote and Joseph Yoder


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

Oswald Chambers


Object-oriented programming increases the value of these metrics by managing this complexity. The most effective tool available for dealing with complexity is abstraction. Many types of abstraction can be used, but encapsulation is the main form of abstraction by which complexity is managed in object-oriented programming.

Rebecca Wirfs-Brock


Make it correct, make it clear, make it concise, make it fast. In that order.

Wes Dyer


Indeed, the woes of Software Engineering are not due to lack of tools, or proper management, but largely due to lack of sufficient technical competence.

Niklaus Wirth


The last good thing written in C was Franz Schubert's Symphony Number 9.

Erwin Dieterich


There is absolutely no reason to make computers as stupid as people are.

Nigel Jacob


To me programming is more than an important practical art. It is also a gigantic undertaking in the foundations of knowledge.

Grace Hopper


The use of COBOL cripples the mind; its teaching should therefore be regarded as a criminal offense.

Edsger Dijkstra


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

Kent Beck


Hackers are arrogant geek romantics. They lack the attentive spirit of inquiry.

Bruce Sterling


If someone claims to have the perfect programming language, he is either a fool or a salesman or both.

Bjarne Stroustrup


Thinking is not the ability to manipulate language; it's the ability to manipulate concepts.

Leslie Lamport


If you can get today’s work done today, but you do it in such a way that you can’t possibly get tomorrow’s work done tomorrow, then you lose.

Martin Fowler


A computer is a stupid machine with the ability to do incredibly smart things, while computer programmers are smart people with the ability to do incredibly stupid things. They are, in short, a perfect match.

Bill Bryson


Programming is not about typing, it's about thinking.

Rich Hickey


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

Nathaniel S. Borenstein


There’s nothing more permanent than a temporary hack.

Kyle Simpson


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

Seymour Cray


The primary disadvantage of Wrap Method is that it can lead to poor names. In the previous example, we renamed the pay method dispatchPay() just because we needed a different name for code in the original method.

Michael Feathers


Learning to code is useful no matter what your career ambitions are.

Arianna Huffington


Of course bad code can be cleaned up. But it’s very expensive.

Robert C. Martin


Blaming programmers has been the prevailing approach for a half century of software development: It has not solved the problem yet, so it is time to look in different directions.

Boris Beizer


80 percent of my problems are simple logic errors. 80 percent of the remaining problems are pointer errors. The remaining problems are hard.

Mark Donner


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

Pamela Zave


The purpose of computing is insight, not numbers.

Richard Hamming


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

Dave Thomas


Software is a gas; it expands to fill its container.

Nathan Myhrvold


The trick is to fix the problem you have, rather than the problem you want.

Bram Cohen


Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.

Bertrand Meyer


Software and cathedrals are much the same. First we build them, then we pray.

Sam Redwine


A design that doesn’t take change into account risks major redesign in the future.

Erich Gamma


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


Duplication is the primary enemy of a well-designed system.

Robert Martin


Software is a gas; it expands to fill its container.

Nathan Myhrvold


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


One bad programmer can easily create two new jobs a year.

David Parnas


Every great developer you know got there by solving problems they were unqualified to solve until they actually did it.

Patrick McKenzie


Simplicity is prerequisite for reliability.

Edsger W. Dijkstra


Good design adds value faster than it adds cost.

Thomas C. Gale


Types are essentially assertions about a program. And I think it’s valuable to have things be as absolutely simple as possible, including not even saying what the types are.

Dan Ingalls


Some people are good programmers because they can handle many more details than most people. But there are a lot of disadvantages in selecting programmers for that reason — it can result in programs that no one else can maintain.

Butler Lampson


Before software can be reusable it first has to be usable.

Ralph Johnson


Copying skips understanding. Understanding is how you grow. You have to understand why something works or why something is how it is. When you copy it, you miss that. You just repurpose the last layer instead of understanding all the layers underneath.

Jason Fried


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

Alan Kay


Bugs are bugs. You write code with bugs because you do. If it’s a safe language in the sense of run-time safe, the operating system crashes instead of doing a buffer overflow in a way that’s exploitable.

Ken Thompson


The Scrum idea of a separated Scrum Master is good for Scrum, but not appropriate for most projects. Good development requires not just talkers but doers.

Bertrand Meyer


Any sufficiently advanced bug is indistinguishable from a feature.

Bruce Brown


Premature optimization is the root of all evil

Donald Knuth


When in doubt, use brute force.

Ken Thompson


The main activity of programming is not the origination of new independent programs, but in the integration, modification, and explanation of existing ones.

Terry Winograd


Any problem in computer science can be solved with another level of indirection.

David Wheeler


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


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


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


Computer scientists have so far worked on developing powerful programming languages that make it possible to solve the technical problems of computation. Little effort has gone toward devising the languages of interaction.

Don Norman


When the final design seems too simple for the amount of work you've put in, then you know you're done.

Brady Clark


Code generation, like drinking alcohol, is good in moderation.

Alex Lowe


Developers are drawn to complexity like moths to a flame, frequently with the same result.

Neal Ford


I am not terribly dogmatical about the goto statement. I have the uncomfortable feeling that others are making a religion out of it, as if the conceptual problems of programming could be solved by a single trick, by a simple form of coding discipline!

Edsger Dijkstra


No amount of elegant programming or technology will solve a problem if it is improperly specified or understood to begin with.

Milt Bryce


It should be noted that no ethically-trained software engineer would ever consent to write a DestroyBaghdad procedure. Basic professional ethics would instead require him to write a DestroyCity procedure, to which Baghdad could be given as a parameter.

Nathaniel Borenstein


So why was it so hard to tell a computer to do something only mildly complex? Well, it wasn't the "mildly complex" part that was giving me problems; it was the "tell a computer" part.

Chris Pine


There is no code so big, twisted, or complex that maintenance can't make it worse.

Gerald M. Weinberg


First think about what the ultimate would be. Then take a step away from that, and another, until you get something you can build.

Matt Reedy


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

Paul Graham


The key to efficient development is to make interesting new mistakes.

Tom Love


Walking on water and developing software from a specification are easy if both are frozen.

Edward V Berard


The Diagram is Not the Model. The model is not the diagram. It is an abstraction, a set of concepts and relationships between them.

Eric Evans


Eighty percent of all input forms ask questions they have no business asking.

Mike Garey


A primary cause of complexity is that software vendors uncritically adopt almost any feature that users want.

Niklaus Wirth


No crisis inside a computer is worth humiliating a human.

Alan Cooper


I love software, because if you can imagine something, you can build it.

Ray Ozzie


Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defense against complexity.

D. Gelernter


Small minds are concerned with the extraordinary, great minds with the ordinary.

Blaise Pascal


Sometimes it is the people no one can imagine anything of who do the things no one can imagine.

Alan Turing

It can be better to copy a little code than to pull in a big library for one function. Dependency hygiene trumps code reuse.

Rob Pike


Computer Science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.

E. Raymond


Beware of programmers who carry screwdrivers.

Leonard Brandwein


Getting information off the Internet is like taking a drink from a fire hydrant

Mitch Kapor


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

Dave Storer


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


Programs, like people, get old. We can’t prevent aging, but we can understand its causes, limit its effects and reverse some of the damage.

Mario Fusco


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

J. Osterhout


People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years.

Joseph Licklider


Bugs lurk in corners and congregate at boundaries.

Boris Beizer


Take reasonable steps to test, document, and otherwise draw attention to the assumptions made in every module and routine.

Daniel Read


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

Kent Beck


Conceptual integrity is the most important consideration in system design.

Frederick P. Brooks


The workers and professionals of the world will soon be divided into two distinct groups. Those who will control computers and those who will be controlled by computers. It would be best for you to be in the former group.

Lewis D. Eigen


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

C.A.R. Hoare


I can’t be as confident about computer science as I can about biology. Biology easily has 500 years of exciting problems to work on. It’s at that level.

Donald Knuth


We must not forget that the wheel is reinvented so often because it is a very good idea; I've learned to worry more about the soundness of ideas that were invented only once.

David L. Parnas


A data structure is just a stupid programming language.

Bill Gosper


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


Don't worry about design, if you listen to your code a good design will appear...Listen to the technical people. If they are complaining about the difficulty of making changes, then take such complaints seriously and give them time to fix things.

Martin Fowler


The programmer's primary weapon in the never-ending battle against slow system is to change the intramodular structure. Our first response should be to reorganize the modules' data structures.

Frederick P. Brooks


Luck is the residue of design.

Wesley Branch Rickey


That which optimizes one part of the system necessarily undermines the system as a whole.

Eric Ries


Physics is the universe’s operating system.

Steven R Garman


If we wish to count lines of code, we should not regard them as "lines produced" but as "lines spent".

Edsger Dijkstra


Behavior is the most important thing about software. It is what users depend on. Users like it when we add behavior (provided it is what they really wanted), but if we change or remove behavior they depend on (introduce bugs), they stop trusting us.

Michael Feathers


Adapting old programs to fit new machines usually means adapting new machines to behave like old ones.

Alan J. Perlis


Good engineering is the difference between code running in eight minutes or eight hours. It affects real people in real ways. It's not a "matter of opinion." any more than a bird taking a flight is a "matter of opinion."

H. W. Kenton


The whole of arithmetic now appeared within the grasp of mechanism.

Charles Babbage


Technology is dominated by two types of people: those who understand what they do not manage, and those who manage what they do not understand.

Archibald Putt


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


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


In a software project team of 10, there are probably 3 people who produce enough defects to make them net negative producers.

Gordon Schulmeyer


Simplicity before generality, use before reuse.

Kevlin Henney


We live in a world of misconceptions of thinking knowing syntax is at the heart of the problems. A lot of people believe there's a technical solution to every problem and that it would be best for all us to sit in dark rooms working quietly by ourselves.

GeePaw Hill


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


I think test-driven design is great. But you can test all you want and if you don’t know how to approach the problem, you’re not going to get a solution.

Peter Norvig


Code generation, like drinking alcohol, is good in moderation.

Alex Lowe


No amount of testing can prove a software right, a single test can prove a software wrong.

Amir Ghahrai


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 designer of a new system must not only be the implementor and the first large-scale user; the designer should also write the first user manual. If I had not participated fully in all these activities, literally hundreds of improvements would never have been made.

Donald Knuth


First, solve the problem. Then, write the code.

John Johnson


Be careful to preserve the orthogonality of your system as you introduce third-party toolkits and libraries. Choose your technologies wisely.

Andy Hunt


It’s better to wait for a productive programmer to become available than it is to wait for the first available programmer to become productive.

Steve McConnell


A programming language is a system of notation for describing computations. A useful programming language must therefore be suited for both description (i.e., for human writers and readers of programs) and for computation (i.e., for efficient implementation on computers). But human beings and computers are so different that it is difficult to find notational devices that are well suited to the capabilities of both.

R. Tennant


The main activity of programming is not the origination of new independent programs, but in the integration, modification, and explanation of existing ones.

Terry Winograd


BASIC is to computer programming as QWERTY is to typing.

Seymour Papert


Architecture is the tension between coupling and cohesion.

Neal Ford


This ‘users are idiots, and are confused by functionality’ mentality of Gnome is a disease. If you think your users are idiots, only idiots will use it.

Linus Torvalds


The role of a trainer or consultant is to empower the customer, not to make himself indispensable.

Bertrand Meyer


If you automate a mess, you get an automated mess.

Rod Michael


That's the thing about people who think they hate computers. What they really hate is lousy programmers.

Larry Niven


The best programmers write only easy programs.

Michael A. Jackson


There is only one thing more painful than learning from experience, and that is not learning from experience.

Archibald McLeish


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

Mitch Ratcliffe

shahadat-rahman-gnyA8vd3Otc-unsplash.jpg 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


The sooner you start to code, the longer the program will take.

Roy Carlson


In a room full of top software designers, if two agree on the same thing, that's a majority.

Bill Curtis


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

John Moore


Computer science is like engineering; it is all about getting something to do something, rather than just dealing with abstractions, as in the pre-Smith geology.

Richard Feynman


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


There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.

Frederick P. Brooks


The most important property of a program is whether it accomplishes the intention of its user.

C.A.R Hoare


Tests are the Programmer’s stone, transmuting fear into boredom.

Kent Beck


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


A program that produces incorrect results twice as fast is infinitely slower.

John Osterhout


Criticism isn't just disliking things. Arts schools teach the skill & the respect for the work. Computer science schools don't.

Kent Beck


Whenever possible, steal code.

Tom Duff


The problem with using C++... is that there's already a strong tendency in the language to require you to know everything before you can do anything.

Larry Wall


God could create the world in six days because he didn't have to make it compatible with the previous version.

Mark Twain


The danger of standard process is that people will miss chances to take important shortcuts.

T. DeMarco and T. Lister


By relieving the brain of all unnecessary work, a good notation sets it free to concentrate on more advanced problems, and in effect increases the mental power of the race. Before the introduction of the Arabic notation, multiplication was difficult, and division even of integers called into play the highest mathematical faculties. Our modern power of easy reckoning with decimal fractions is the almost miraculous result of the gradual discovery of a perfect notation.

Alfred North Whitehead


Programmers regard themselves as artists. As such they consider keeping accurate records of their handwork on par with washing ashtray.

Otis Port


Incorrect documentation is often worse than no documentation.

Bertrand Meyer


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

Edsger Dijkstra


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


Documentation is the castor oil of programming

Gerald M. Weinberg


We live in a world of misconceptions of thining 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 ourselfs.

GeePaw Hill


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


Programming is not a zero-sum game. Teaching something to a fellow programmer doesn’t take it away from you.

John Carmack


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

Bjarne Stroustrup


There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. And the other way is to make it so complicated that there are no obvious deficiencies.

C. A. R. Hoare


The computers do what you tell them to do, not what you want them to do.

Alexander Atanasov


If you have too many special cases, you are doing it wrong.

Craig Zerouni


If programmers got paid to remove code from software instead of writing new code, software would be a whole lot better.

Nicholas Negroponte


The most disastrous thing that you can ever learn is your first programming language.

Alan Kay


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


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


In essence, engineering is doing what you want with what you have.

J. Carmack


I hired finishers because I’m a good starter and a poor finisher.

Alan Kay


A program is never less than 90% complete, and never more than 95% complete.

Terry Baker


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


If you are choosing a JavaScript library purely based on popularity, I think you deserve what you get.

Tom Dale


A programmable mind embraces mental agility, to practice “de-learning” and “relearning” all the time.

pearl zhu


The most disastrous thing that you can ever learn is your first programming language.

Alan Kay


Today, most software exists, not to solve a problem, but to interface with other software.

I Angell


Computers are good at following instructions, but not at reading your mind.

Donald Knuth


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


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


Computer science is a restless infant and its progress depends as much on shifts in point of view as on the orderly development of our current concepts.

Alan Perlis


Companies should make their own enterprise systems as often as network security companies should manufacture their own aspirin.

Phil Simon


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

Dave Thomas


A complex system that works is invariably found to have evolved from a simple system that worked.

John Gall


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


you-x-ventures-vbxyFxlgpjM-unsplash.jpg 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


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


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


If you make a general statement, a programmer says, 'Yes, but...' while a designer says, 'Yes, and...'

André Bensoussan


The most important single aspect of software development is to be clear about what you are trying to build.

Bjarne Stroustrup


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


Quality is never an accident; it is always the result of intelligent effort.

John Ruskin


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


One of the things I've been trying to do is look for simpler or rules underpinning good or bad design. I think one of the most valuable rules is avoiding duplication. "Once and only once" is the Extreme Programming phrase.

Martin Fowler


Subclasses shouldn’t always share all characteristics of their parent class but will do so with inheritance. This can make a program’s design less flexible. It also introduces the possibility of calling methods on subclasses that don’t make sense or that cause errors because the methods don’t apply to the subclass.

Steve Klabnik


The greatest obstacle to discovery is not ignorance, but the illusion of knowledge.

Daniel Boorstin


The most disastrous thing that you can ever learn is your first programming language.

Alan Kay


Everything will ultimately fail. Hardware is fallible, so we add redundancy. This allows us to survive individuals hardware failures, but increases the likelihood of having at least one failure at any given time.

Michael Nygard


Programmers are as emotional and irrational as normal people.

Douglas Crockford


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

Peter Drucker


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

Alan J. Perlis


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


A language that doesn’t affect the way you think about programming, is not worth knowing.

Alan Perlis


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

Michio Kaku


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


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

Kent Beck


Good programmers use their brains, but good guidelines save us having to think out every case.

Francis Glassborow


bench-accounting-nvzvOPQW0gc-unsplash.jpg 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


Successful software always gets changed.

Fred Brooks


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


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

Martin Fowler


We are still in the infancy of naming what is really happening on software development projects.

Alistair Cockburn


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


Static typing is to reliable programming what a spelling checker is to a good writer.

Peter Van Roy


If you have a procedure with ten parameters, you probably missed some.

Alan Perlis


Redundant comments are just places to collect lies and misinformation.

Robert Martin


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


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


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


Remember, code is your house, and you have to live in it.

Michael C. Feathers


No one hates software more than software developers.

Jeff Atwood


Skilled and motivated programmers can overcome inadequate processes, but perfect processes can never compensate for inadequate programmers or poor software managers.

Dick Fairley


A good enough first version will take longer to produce with $170K than it would have with $0K.

Jason Fried


Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.

Alan Perlis


No matter how slow you are writing clean code, you will always be slower if you make a mess.

Robert Martin


The nice thing about standards is that there are so many to choose from.

Andrew S. Tannenbaum


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


It’s harder to read code than to write it.

Joel Spolsky


Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build and test, it introduces security challenges, and it causes end-user and administrator frustration.

Ray Ozzie


Twenty percent of all input forms filled out by people contain bad data.

Dennis Ritchie


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


If you get tired of writing for loops, take a break and continue later.

David Walker


The most beautiful code, the most beautiful functions, and the most beautiful programs are sometimes not there at all.

Jon Bentley


It is not the language that makes programs appear simple. It is the programmer that make the language appear simple.

Robert Martin


Scientists build to learn; Engineers learn to build.

Fred Brooks


Programmers don't burn out on hard work, they burn out on change-with-the-wind directives and not 'shipping'.

Mark Berry


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

Jeff Atwood


I do not fear computers. I fear lack of them.

Isaac Asimov


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

David Gelernter


The computer programmer is a creator of universes for which he alone is the lawgiver. No playwright, no stage director, no emperor, however powerful, has exercised such absolute authority to arrange a stage or field of battle.

Joseph Weizenbaum


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


A program which perfectly meets a lousy specification is a lousy program.

Cem Kaner


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

Robert Martin


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

Richard Pattis


A good programmer is someone who always looks both ways before crossing a one-way street.

Doug Linder


Alzheimer's Law of Programming: Looking at code you wrote more than two weeks ago is like looking at code you are seeing for the first time.

Dan Hurvitz


The 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


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


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


Complexity has nothing to do with intelligence, simplicity does.

Larry Bossidy


If the code and the comments disagree, then both are probably wrong.

Norm Schryer


Those who can imagine anything, can create the impossible

Alan Turing


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


My computer's so fast it finishes an infinite loop in 5 minutes.

Chisel Wright


I object to doing things that computers can do.

Olin Shivers


The amateur software engineer is always in search of magic.

Grady Booch


Truth can only be found in one place: the code.

Robert C. Martin


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


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


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

Donald Knuth


A programming language is low level when its programs require attention to the irrelevant.

Alan J. Perlis


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


You will fall to ruin because you believe that exceptions to the rule make new rules.

Pierce Brown


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

Robert Martin


Simplicity is the soul of efficiency.

Austin Freeman


Inheritance is surely a good answer but who knows the questions?

Michel Gauthier


Programming can be fun, so can cryptography; however they should not be combined.

Kreitzberg & Shneiderman


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

Ryan Singer


Deleted code is debugged code.

Jeff Sickel


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

Martin Fowler


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


Rather than apply minutes of suspect reasoning, we can just ask the computer by making the change and running the tests.

Kent Beck


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


Automated testing is a safety net that protects the program from its programmers.

Yegor Bugayenko


One day my daughter came in, looked over my shoulder at some Perl 4 code, and said, "What is that, swearing?"

Larry Wall


It´s more about good enough than it is about right or wrong.

James Bach


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


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


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


Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.

Jamie Zawinski


The best way to get accurate information on Stack Overflow is to post something wrong and wait for corrections.

Matthew Austern


Don’t comment bad code — rewrite it.

Brian Kernighan


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

Cory House


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


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

Don Knuth


Smart data structures and dumb code works a lot better than the other way around.

Eric Raymond


raquel-martinez-SQM0sS0htzw-unsplash.jpg

Photo by Raquel Martínez on Unsplash

Software Quality

Legacy code is code without tests.

Michael Feathers


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

J T Wall


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


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


One man's crappy software is another man's full time job.

Jessica Gaston


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


"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


Good software, like wine, takes time.

Joel Spolsky


Pasting code from the internet into production code is like chewing gum found in the street.

Mike Johnson


Discovering the unexpected is more important than confirming the known.

George E. P. Box


Pay attention to zeros. If there is a zero, someone will divide by it.

Cem Kaner


Beta testing is a symptom of weak testing practices and poor communication with customers

Kent Beck


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

Donald Knuth


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


Simplicity, carried to the extreme, becomes elegance.

Jon Franklin


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


Don't patch bad code - rewrite it.

P. J. Plauger


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


A Perl program is correct if it gets the job done before your boss fires you.

Larry Wall


As the Tests get more Specific, the Code gets more Generic.

Robert Martin


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

Amit Kalantri


Quality is free, but only to those who are willing to pay heavily for it.

DeMarco and Lister


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

Kent Beck


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


On the seventh day, God said, "Ship it! We'll release patches later."

Josh Flachsbart


Make it hard to ignore error conditions. Don't bury error codes in return values.

Steve Maguire


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


You haven't mastered a tool until you understand when it should not be used.

Kelsey Hightower


Beyond basic mathematical aptitude, the difference between good programmers and great programmers is verbal ability.

Marissa Mayer


We argue that design practices which take a data-driven approach fail to maximize encapsulation because they focus too quickly on the implementation of objects. We propose an alternative object-oriented design method which takes a responsibility-driven approach.

Rebecca Wirf Brooks


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


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


Nothing makes a system more flexible than a suite of tests.

Robert Martin


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


If you’re afraid to change something it is clearly poorly designed.

Martin Fowler


As a rule, software systems do not work well until they have been used, and have failed repeatedly, in real applications.

David Parnas


There are two ways to write error-free programs; only the third one works.

Alan J. Perlis


kelvyn-ornettte-sol-marte-k6hti1f8WSw-unsplash.jpg

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


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


national-cancer-institute-L7en7Lb-Ovc-unsplash.jpg

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


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.

Original Thread on Twitter

 
Share this