Explore the wonderful quotes under this tag
After graduation, I took a job with Manufacturers Hanover Trust in software development. I don't think I was there more than a month.
Sep 13, 2025
The greatest risk we face in software development is that of overestimating our own knowledge.
Nine people can't make a baby in a month.
One bad programmer can easily create two new jobs a year.
Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.
We are still in the infancy of naming what is really happening on software development projects.
Linux is only free if your time has no value.
Poor management can increase software costs more rapidly than any other factor. Particularly on large projects, each of the following mismanagement actions has often been responsible for doubling software development costs.
The task of the software development team is to engineer the illusion of simplicity.
I would definitely like to work at Microsoft, since software development and exploring new technologies has always been my passion, and Microsoft is best when it comes to next-generation software technologies.
There are a variety of techniques for breaking software down into pieces and making software development more efficient. Many of these techniques have been sort of... and everybody got excited about but very little benefit was actually derived once the thing was put into practice.
It's harder than you might think to squander millions of dollars, but a flawed software development process is a tool well suited to the job.
To understand recursion, one must first understand recursion.
My definition of an expert in any field is a person who knows enough about what's really going on to be scared.
Software development, like professional sports, has a way of making thirty-year-old men feel decrepit.
In software, consultants sometimes tell you to buy into certain software-development methods to the exclusion of other methods. That’s unfortunate because if you buy into any single methodology 100 percent, you’ll see the whole world in terms of that methodology. In some instances, you’ll miss opportunities to use other methods better suited to your current problem.
No matter how slick the demo is in rehearsal, when you do it in front of a live audience the probability of a flawless presentation is inversely proportional to the number of people watching, raised to the power of the amount of money involved.
Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law
In theory there is no difference between theory and practice. In practice there is.
The most fundamental problem in software development is complexity. There is only one basic way of dealing with complexity: divide and conquer
Design adds value faster than it adds cost.
The trouble with programmers is that you can never tell what a programmer is doing until it's too late.
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. The first method is far more difficult.
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.
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
When debugging, novices insert corrective code; experts remove defective code.
Testing by itself does not improve software quality. Test results are an indicator of quality, but in and of themselves, they don't improve it. Trying to improve software quality by increasing the amount of testing is like trying to lose weight by weighing yourself more often. What you eat before you step onto the scale determines how much you will weigh, and the software development techniques you use determine how many errors testing will find. If you want to lose weight, don't buy a new scale; change your diet. If you want to improve your software, don't test more; develop better.
If the DHS insists, as bureaucracies are apt to do, that open-source must be certified via a sanctioned, formal process, it will interfere with the informal process of open-source itself. It seems to me the DHS is trying to turn an open-source development project into a Microsoft (or IBM or Oracle) software development project. And we know what that means: more, not fewer, errors -- security and otherwise.
If debugging is the process of removing software bugs, then programming must be the process of putting them in.
Considering the current sad state of our computer programs, software development is clearly still a black art, and cannot yet be called an engineering discipline.
Inadequate use of usability engineering methods in software development projects have been estimated to cost the US economy about $30 billion per year in lost productivity.
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.
Software development takes immense intellectual effort. Even the best programmers can rarely sustain that level of effort for more than a few hours a day. Beyond that, they need to rest their brains a bit, which is why they always seem to be surfing the Internet or playing games when you barge in on them.
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.
There is no one "root of all evil" in software development. Design is hard in many ways. People tend to underestimate the intellectual and practical difficulties involved in building a significant system involving software. It is not and will not be reduced to a simple mechanical "assembly line" process. Creativity, engineering principles, and evolutionary change are needed to create a satisfactory large system.
The most important single aspect of software development is to be clear about what you are trying to build.
Any intelligent fool can make things bigger and more complex... It takes a touch of genius - and a lot of courage to move in the opposite direction.
When I'm working on a problem, I never think about beauty. I think only how to solve the problem.
When I am working on a problem, I never think about beauty but when I have finished, if the solution is not beautiful, I know it is wrong.
Imagine the disincentive to software development if after months of work another company could come along and copy your work and market it under its own name...without legal restraints to such copying, companies like Apple could not afford to advance the state of the art.
Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
It takes a touch of genius - and a lot of courage to move in the opposite direction.
Software development is technical activity conducted by human beings.
All collections loaded