complexity


“Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.” - Alan Perlis


“The purpose of software engineering is to control complexity, not to create it.” - Pamela Zave


“The function of good software is to make the complex appear to be simple.” - Grady Booch


“Simplicity is a prerequisite for reliability.” - Edsger W. Dijkstra


“Keep your code absolutely simple. Keep looking at your functions and figure out how you simplify further.” - John Romero


“A primary cause of complexity is that software vendors uncritically adopt almost any feature that users want."- Niklaus Wirth


“Simplicity & elegance are unpopular because they require hard work & discipline to achieve & education to be appreciated.” - Edsger W. Dijkstra


“Complexity is not a goal. I don’t want to be remembered as an engineer of complex systems.” - David Parnas


“Taming complexity is the most important task for any good programmer.” - Stephen Young


“Prostota jest szczytem wyrafinowania.” - Leonardo Da Vinci


“Wszystko powinno być wykonane w sposób tak prosty, jak to tylko możliwe, ale nie prościej.” - Albert Einstein


data structures


“Figure out your data structures, and the code will follow.” - William Laeder


“To me, the most important part of a program is laying out the data structure.” - Dan Bricklin


“Bad programmers worry about the code. Good programmers worry about data structures and their relationships.” - Linus Torvalds


comments


“A common fallacy is to assume authors of incomprehensible code will be able to express themselves clearly in comments.” - Kevlin Henney


“The proper use of comments is to compensate for our failure to express ourselves in code.” - Robert C Martin


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


“When you feel the need to write a comment, first try to refactor the code so that any comment becomes superfluous.” - Martin Fowler


code expressiveness


“Beyond basic mathematical aptitude, the difference between good programmers and great programmers is verbal ability.” - Marissa Mayer


“It is not the language that makes programs appear simple. It is the programmer that make the language appear simple!” - Uncle Bob


“We write code, which communicates our intentions to a machine and documents our thinking for future generations of developers.” - Andrew Hunt


“Say what you mean. Mean what you say.” - Robert C. Martin


“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


debugging


“There’s no better way to debug a web application, than top use it regularly yourself.” - Maya Elhalal


“When debugging, novices insert corrective code; experts remove defective code.” - Richard Pattis


“Deleted code is debugged code.” - Jeff Sickel


old new


“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


“Most papers in computer science describe how their author learned what someone else already knew.” - Peter Landin


iterative


“We get things wrong before we get things right.” - Alistair Cockburn


“Don’t stop with your first draft.” - P. J. Plauger


“When to use iterative development? You should use iterative development only on projects that you want to succeed.” - Martin Fowler


“First do it, then do it right, then do it better.” - Addy Osmani


“Make it correct, make it clear, make it concise, make it fast. In that order.” - Wes Dyer


“Develop algorithms with a motto: Correct, Complete, Small, Secure, Fast.” - Jonathan Lettvin


“Sometimes the problem has to mature before the solution can mature.” - Kent Beck


problem understanding


“You can’t solve someone’s problem with code if you don’t understand their problem.” - Adam Haney, Bellhops


“If you think it’s simple, then you have misunderstood the problem.” - Bjarne Stroustrup


“The most important single aspect of software development is to be clear about what you are trying to build.” - Bjarne Stroustrup


“Software developers fail in two ways: either we build the thing wrong or we build the wrong thing.” - Steve Smith (@ardalis)


“It is not enough to do your best; you must know what to do, and then do your best.” - W. Edwards Deming


“If you can’t write it down in English, you can’t code it.”  - Peter Halpern


“A problem well stated is a problem half solved.” - Charles F. Kettering


“If I had an hour to solve a problem I’d spend 55 minutes thinking about the problem and 5 minutes thinking about solutions.” - Albert Einstein


“If you can’t explain it simply, you don’t understand it well enough.” - Albert Einstein


“Software development is a learning process; working code is a side effect.” - Alberto Brandolini


abstraction


“First you learn the value of abstraction, then you learn the cost of abstraction, then you’re ready to engineer.” - Kent Beck


“So the abstractions save us time working, but they don’t save us time learning.” - Joel Spolsky, The Law of Leaky Abstractions – Joel on Software


productivity


“Sometimes it pays to stay in bed on Monday, rather than spending the rest of the week debugging Monday’s code.” - Christopher Thompson


“The fastest route to a 10X engineer is to give them 0.1X the distractions.” - Eric Meyer


“Steering productivity with deadlines is like steering a car with the gearshift.” - Kent Beck



“The best predictor of how much work a knowledge worker will accomplish is not the hours that he or she spends, but the days. The twelve-hour days don’t accomplish any more than the eight-hour days. Overtime is a wash.” - Tom DeMarco


“One of the most common mistakes I see people make is that they get ideas stuck in their heads, and those ideas block new ideas and new learning from happening. Don’t let that happen to you.” - Eric Elliott


“Walking on water and developing software from a specification are easy if both are frozen.” - Edward V Berard


“How do we convince people that in programming, simplicity and clarity – in short: what mathematicians call “elegance” – are not a dispensable luxury, but a crucial matter that decides between success and failure?” - Edsger W. Dijkstra


“You shouldn’t waste opportunities when they arrive. It’s the same thing in programming. You uncover lots of stone along the way. New doors and unexpected passageways open up as you develop a program.” - Michael Hawley


“Just because people tell you it can’t be done, that doesn’t necessarily mean that it can’t be done. It just means that they can’t do it.” - Anders Hejlsberg


“You see, as a programmer I always liked getting to the bottom of things, working my way down to the most fundamental level and understanding everything about the way a computer works on that level.” - Andy Hertzfeld


“If you aren’t horrified by something you wrote a year ago, you aren’t learning fast enough. 20 years in and I still find things I wrote 8 months ago that I would not do again.” - hinkley on Hacker News


“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


“I tell my programmers to think carefully before they say something can’t be done. There isn’t that much that can’t be done with a little ingenuity.” - Satoru Iwata


“It’s hard enough to find an error in your code when you’re looking for it; it’s even harder when you’ve assumed your code is error-free.” - Steve McConnell


“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 Mills


“If we wish to count lines of code, we should not regard them as ‘lines produced’ but as ‘lines spent’.” – Edsger W. Dijkstra


“One of the best programming skills you can have is knowing when to walk away for a while.” - Oscar Godson


“One accurate measurement is worth a thousand expert opinions.” - Grace Hopper


“I find that writing unit tests actually increases my programming speed.” - Martin Fowler


“If someone claims to have the perfect programming language, he is either a fool or a salesman or both.” - Bjarne Stroustrup


“There are a million ways to lose a work day, but not even a single way to get one back.” - Tom DeMarco


“Write code as if you had to support it for the rest of your life.” - Yuriy Zubarev


“A language that doesn’t have everything is actually easier to program in than some that do.” - Dennis Ritchie


“Everyday life is like programming, I guess. If you love something you can put beauty into it.” - Donald Knuth


“For reliable systems, error handling is more work than the happy path.” - Dan Luu


“Before software can be reusable, it first has to be usable.” - Ralph Johnson


“Programmers don’t burn out on hard work, they burn out on change-with-the-wind directives and not ‘shipping’.” - Mark Berry


“Don’t worry about what anyone else is going to do. The best way to predict the future is to invent it.” - Alan Kay


“No matter how slow you are writing clean code, you will always be slower if you make a mess.” - Uncle Bob Martin


“More good code has been written in languages denounced as ‘bad’ than in languages proclaimed ‘wonderful’ - much more.” - Bjarne Stroustrup


“A language that doesn’t affect the way you think about programming is not worth knowing.” - Alan J. Perlis


“You can’t have great software without a great team, and most software teams behave like dysfunctional families.” - Jim McCarthy


“All software becomes legacy as soon as it’s written.” - Andrew Hunt & David Thomas, The Pragmatic Programmer


“When we use a language, we should commit ourselves to knowing it, being able to read it, and writing it idiomatically.” - Ron Jeffries


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


“Computer science is no more about computers than astronomy is about telescopes.” – Edsger W. Dijkstra


“Optimism is an occupational hazard of programming; feedback is the treatment.” - Kent Beck


“Without requirements or design, programming is the art of adding bugs to an empty text file.” - Louis Srygley


“Unix is simple. It just takes a genius to understand its simplicity.” - Dennis Ritchie


“If something seems wrong but you dismiss it, it will come back to haunt you at the worst possible time” - Joe Zachary


“You can have the project: Done On Time. Done On Budget. Done Properly - Pick two.” - Unknown


“Don’t underestimate little things. A missed semicolon could stop thousands lines of code from running successfully!” - @r_sahafi


“There are only two kinds of languages: the ones people complain about and the ones nobody uses.” - Bjarne Stroustrup


“There’s nothing more permanent than a temporary hack.” - Kyle Simpson


“Computer languages differ not so much in what they make possible, but in what they make easy.” - Larry Wall


“Good code is short, simple, and symmetrical – the challenge is figuring out how to get there.” - Sean Parent


“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


“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 value of a prototype is in the education it gives you, not in the code itself.” - Alan Cooper


“From an artistic standpoint, the best software comes from the realm of intuition.” - Bob Carr


“There is something to learn from every piece of code… even if the lesson is I have nothing to learn from this code.”


“A consistent lexicon is a great boon to the programmers who must use your code.” - Uncle Bob Martin


“If you aren’t sure which way to do something, do it both ways and see which works better.” - John Carmack


“To understand a program you must become both the machine and the program.” - Alan Perlis


“There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.” - Jeff Atwood


“We can be proud of our abilities, but we must be honest about our shortcomings—our ignorance as well as our mistakes.” - A.Hunt & D.Thomas


“Languages that try to disallow idiocy become themselves idiotic.” - Rob Pike


“Software engineering is not about right and wrong but only better and worse.” - Ellen Ullman


“The messiness cannot go into the program; it piles up around the programmer.” - Ellen Ullman


“Telling a programmer there’s already a library to do X is like telling a songwriter there’s already a song about love.” - @petecordell


“If it’s a good idea, go ahead and do it. It is much easier to apologize than it is to get permission.” - Grace Hopper


“Getting moderately good at programming has taken about 20 years longer than I expected.” - @JohnDCook


“I’m not a great programmer; I’m just a good programmer with great habits.” - Kent Beck


“If you don’t have people that care about usability on your project, your project is doomed.” - Jeff Atwood


“The goal of software design should be not to add features but rather to eliminate the need for them.” - Rob Pike


“What I cannot create, I do not understand.” - Richard Feynman


“If you lie to the computer, it will get you.” - Perry Farrar


“Obviously we want to succeed. But on some level, success is irrelevant, because the process is inherently satisfying.” - Jeff Atwood


“Sometimes, the elegant implementation is just a function. Not a method. Not a class. Not a framework. Just a function.” - John Carmack


“Great software today is often preferable to perfect software tomorrow.” - Andrew Hunt & David Thomas, The Pragmatic Programmer


“The amateur software engineer is always in search of magic.” - Grady Booch


“In an ideal system, we incorporate new features by extending the system, not by making modifications to existing code.” - Uncle Bob


“Teaching peers is one of the best ways to develop mastery.” - Jeff Atwood


“A plan is an example of what could happen, not a prediction of what will happen.” - Kent Beck


“Programming is the art of doing one thing at a time.” - Michael Feathers


“Elegance is not a dispensable luxury but a factor that decides between success and failure.” - Edsger W. Dijkstra


“Error handling is important, but if it obscures logic, it’s wrong.” - Robert C. Martin


“Tests that take too long to run end up not being run.” - Michael C. Feathers


“We don’t need an accurate document, we need a shared understanding.” – Jeff Patton


“Another flaw in the human character is that everybody wants to build & nobody wants to do maintenance.” - @Kurt_Vonnegut


“The fact remains: Good design is testable, and design that isn’t testable is bad.” - Michael Feathers


“Program testing can be used to show the presence of bugs, but never to show their absence!” - Edsger W. Dijkstra


“Names are deeply meaningful to your brain, and misleading names add chaos to your code.” - The Pragmatic Programmer


“Functions should do one thing. They should do it well. They should do it only.” - @unclebobmartin


“Master programmers think of systems as stories to be told rather than programs to be written.” - @unclebobmartin


“Don’t assume that just because you can get something to work once, there’s nothing more to understand.” - Bob Frankston


“Learning one language properly, may enable you to learn a new language faster.” - Vaibhav Tulsyan


“Something else that made an impression on me was the realisation that real users work differently than programmers.” - Dan Bricklin


“The first rule of technology used in a business is that automation applied to an efficient operation will magnify the efficiency.

The second rule of technology is that automation applied to an inefficient operation will magnify the inefficiency.” - Bill Gates


“A programmer is ideally an essayist who works with traditional aesthetic & literary forms as well as mathematical concepts.” - Donald Knuth


“If houses were built like software, opening the front door using the wrong hand would cause the fifth floor windows to catch fire.”


“With so much information now online, a strong work ethic and growth mindset, even more than knowledge, predicts your future success.”


“If you ever code something that ‘feels like a hack but it works’, just remember that a CPU is literally a rock that we tricked into thinking.”


“Software is messy because it reflects our evolving understanding of the problem as we wrote it.”


“A good design is not the one that correctly predicts the future, it’s one that makes adapting to the future affordable.” - Venkat Subramaniam