The Pragmatic Programmer Quotes

Rate this book
Clear rating
The Pragmatic Programmer: From Journeyman to Master The Pragmatic Programmer: From Journeyman to Master by Andy Hunt
23,877 ratings, 4.33 average rating, 1,503 reviews
The Pragmatic Programmer Quotes Showing 31-60 of 240
“Providing a comfortable transition through familiar metaphors is one way to help get buy-in.”
Andrew Hunt, The Pragmatic Programmer: From Journeyman to Master
“...maintaining good regression tests is the key to refactoring with confidence.”
Andrew Hunt, The Pragmatic Programmer: From Journeyman to Master
“the only way to determine the timetable for a project is by gaining experience on that same project. This needn't be a paradox if you practice incremental development, repeating the following steps. Check requirements Analyze risk Design, implement, integrate Validate with the users”
Andrew Hunt, The Pragmatic Programmer
“Great software today is often preferable to perfect software tomorrow. If you give your users something to play with early, their feedback will often lead you to a better eventual solution”
Andrew Hunt, The Pragmatic Programmer
“Have you noticed how some project teams are efficient, with everyone knowing what to do and contributing fully, while the members of other teams are constantly bickering and don't seem able to get out of each other's way? Often this is an orthogonality issue. When teams are organized with lots of overlap, members are confused about responsibilities. Every change needs a meeting of the entire team, because any one of them might be affected.”
Andrew Hunt, The Pragmatic Programmer: From Journeyman to Master
“In an abstract sense, an application is successful if it correctly implements its specifications. Unfortunately, this pays only abstract bills. In reality, the success of a project is measured by how well it meets the expectations of its users.”
Andrew Hunt, The Pragmatic Programmer: From Journeyman to Master
“Don't Gather Requirements—Dig for Them”
Andrew Hunt, The Pragmatic Programmer: From Journeyman to Master
“As a programmer, you are part listener, part advisor, part interpreter, and part dictator.”
Andrew Hunt, The Pragmatic Programmer: From Journeyman to Master
“Responsibility is something you actively agree to.”
Andrew Hunt, The Pragmatic Programmer: From Journeyman to Master
“We can be proud of our abilities, but we must be honest about our shortcomings—our ignorance as well as our mistakes.”
Andrew Hunt, The Pragmatic Programmer: From Journeyman to Master
“More testing should be done automatically. It's important to note that by "automatically" we meant that the test /results/ are interpreted automatically as well.”
Andrew Hunt, The Pragmatic Programmer: From Journeyman to Master
“Just be aware that you reach a point of diminishing, or even negative, returns as the specifications get more and more detailed.”
Andrew Hunt, The Pragmatic Programmer: From Journeyman to Master
“Documenting the reasons behind requirements will give your team invaluable information when making daily implementation decisions.”
Andrew Hunt, The Pragmatic Programmer: From Journeyman to Master
“Unfortunately, the most common metaphor for software development is building construction. [...] Well, software doesn’t quite work that way. Rather than construction, software is more like gardening—it is more organic than concrete. You plant many things in a garden according to an initial plan and conditions. Some thrive, others are destined to end up as compost. You may move plantings relative to each other to take advantage of the interplay of light and shadow, wind and rain. Overgrown plants get split or pruned, and colors that clash may get moved to more aesthetically pleasing locations. You pull weeds, and you fertilize plantings that are in need of some extra help. You constantly monitor the health of the garden, and make adjustments (to the soil, the plants, the layout) as needed.

Business people are comfortable with the metaphor of building construction: it is more scientific than gardening, it’s repeatable, there’s a rigid reporting hierarchy for management, and so on. But we’re not building skyscrapers—we aren’t as constrained by the boundaries of physics and the real world.

The gardening metaphor is much closer to the realities of software development. Perhaps a certain routine has grown too large, or is trying to accomplish too much—it needs to be split into two. Things that don’t work out as planned need to be weeded or pruned.”
Andrew Hunt, The Pragmatic Programmer: From Journeyman to Master
“Look for the important requirements, the ones that define the system. Look for the areas where you have doubts, and where you see the biggest risks. Then prioritize your development so that these are the first areas you code.”
David Thomas, The Pragmatic Programmer: Your Journey to Mastery, 20th Anniversary Edition
“Ruthless and Continuous Testing Many developers test gently, subconsciously knowing where the code will break and avoiding the weak spots. Pragmatic Programmers are different. We are driven to find our bugs now, so we don’t have to endure the shame of others finding our bugs later.”
David Thomas, The Pragmatic Programmer: Your Journey to Mastery, 20th Anniversary Edition
“not just asking questions, having discussions, and taking notes, but asking questions and having discussions while you’re actually coding.”
David Thomas, The Pragmatic Programmer: Your Journey to Mastery, 20th Anniversary Edition
“Finding an answer that happens to fit is not the same as the right answer.”
David Thomas, The Pragmatic Programmer: Your Journey to Mastery, 20th Anniversary Edition
“The native islanders had never seen an airplane before, or met people such as these strangers. In return for use of their land, the strangers provided mechanical birds that flew in and out all day long on a “runway,” bringing incredible material wealth to their island home. The strangers mentioned something about war and fighting. One day it was over and they all left, taking their strange riches with them. The islanders were desperate to restore their good fortunes, and re-built a facsimile of the airport, control tower, and equipment using local materials: vines, coconut shells, palm fronds, and such. But for some reason, even though they had everything in place, the planes didn’t come. They had imitated the form, but not the content. Anthropologists call this a cargo cult. All too often, we are the islanders.”
Andrew Hunt, The Pragmatic Programmer: Your Journey to Mastery, 20th Anniversary Edition
“All programs transform data, converting an input into an output. And yet when we think about design, we rarely think about creating transformations. Instead we worry about classes and modules, data structures and algorithms, languages and frameworks.”
Andrew Hunt, The Pragmatic Programmer: Your Journey to Mastery, 20th Anniversary Edition
“The best way to start fixing a bug is to make it reproducible. After all, if you can’t reproduce it, how will you know if it is ever fixed?”
Andrew Hunt, The Pragmatic Programmer: Your Journey to Mastery, 20th Anniversary Edition
“Before you start to look at the bug, make sure that you are working on code that built cleanly—without warnings. We routinely set compiler warning levels as high as possible. It doesn’t make sense to waste time trying to find a problem that the computer could find for you! We need to concentrate on the harder problems at hand.”
Andrew Hunt, The Pragmatic Programmer: Your Journey to Mastery, 20th Anniversary Edition
“Delivering good software today is often better than perfect software tomorrow, so finish things and ship.”
David Thomas, The Pragmatic Programmer: From Journeyman to Master
“Despite the best laid plans and the best people, a project can still experience ruin and decay during its lifetime. Yet there are other projects that, despite enormous difficulties and constant setbacks, successfully fight nature's tendency toward disorder and manage to come out pretty well. What makes the difference? In inner cities, some buildings are beautiful and clean, while others are rotting hulks. Why? Researchers in the field of crime and urban decay discovered a fascinating trigger mechanism, one that very quickly turns a clean, intact, inhabited building into a smashed and abandoned derelict [WK82]. A broken window. One broken window, left unrepaired for any substantial length of time, instills in the inhabitants of the building a sense of abandonment—a sense that the powers that be don't care about the building. So another window gets broken. People start littering. Graffiti appears. Serious structural damage begins. In a relatively short space of time, the building becomes damaged beyond the owner's desire to fix it, and the sense of abandonment becomes reality. The "Broken Window Theory" has inspired police departments in New York and other major cities to crack down on the small stuff in order to keep out the big stuff. It works: keeping on top of broken windows, graffiti, and other small infractions has reduced the serious crime level.”
Andrew Hunt, The Pragmatic Programmer
“Don't be like the frog. Keep an eye on the big picture. Constantly review what's happening around you, not just what you personally are doing.”
Andrew Hunt, The Pragmatic Programmer
“Often this is an orthogonality issue. When teams are organized with lots of overlap, members are confused about responsibilities. Every change needs a meeting of the entire team, because any one of them might be affected.”
Andrew Hunt, The Pragmatic Programmer
“Nothing is more dangerous than an idea if it's the only one you have.”
Andrew Hunt, The Pragmatic Programmer
“There is a luxury in self-reproach. When we blame ourselves we feel no one else has a right to blame us.”
Andrew Hunt, The Pragmatic Programmer
“perfect software doesn't exist. No one in the brief history of computing has ever written a piece of perfect software.”
Andrew Hunt, The Pragmatic Programmer
“In the same way a woodworker invests the time in a jig, a programmer can build a code generator. Once built, it can be used throughout the life of the project at virtually no cost.”
Andrew Hunt, The Pragmatic Programmer