A computer program does what you tell it to do, not what you want it to do.
There are only two industries that refer to their customers as 'users'.
Controlling complexity is the essence of computer programming.
Simple things should be simple, complex things should be possible.
Programming isn't about what you know; it's about what you can figure out.
Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law.
One man's constant is another man's variable.
Computer science is no more about computers than astronomy is about telescopes.
Trying to outsmart a compiler defeats much of the purpose of using one.
The only way to learn a new programming language is by writing programs in it.
The programmers of tomorrow are the wizards of the future.
You should imagine variables as tentacles, rather than boxes. They do not contain values; they grasp them—two variables can refer to the same value.
Code is there to explain the comments to the computer.
Web development is difficult, only then it is fun to do. You just have to set your standards. If it were to be easy, would anyone do it?
Programming is the art of telling another human being what one wants the computer to do.
Weeks of coding can save you hours of planning.
One of the easiest ways to get noticed or hired as a junior developer in the tech industry is by documenting everything you are learning. Build great projects, but don't forget to document your journey along the way.
Programming is the immediate act of producing code. Software engineering is the set of policies, practices, and tools that are necessary to make that code useful for as long as it needs to be used and allowing collaboration across a team.
When he really, really likes a girl, he creates a font and names it after her.
At forty, I was too old to work as a programmer myself anymore; writing code is a young person’s job.
Perl – The only language that looks the same before and after RSA encryption.
You've baked a really lovely cake, but then you've used dog shit for frosting.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
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.
A good programmer is someone who always looks both ways before crossing a one-way street.
Programming is an explanatory activity.
More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason -- including blind stupidity.
Walking on water and developing software from a specification are easy if both are frozen.
No matter which field of work you want to go in, it is of great importance to learn at least one programming language.
Some of the best programming is done on paper, really. Putting it into the computer is just a minor detail.
But while you can always write 'spaghetti code' in a procedural language, object-oriented languages used poorly can add meatballs to your spaghetti.
Don't gloss over a routine or piece of code involved in the bug because you know it works. Prove it. Prove it in this context, with this data, with these boundary conditions.
Delivering good software today is often better than perfect software tomorrow, so finish things and ship.
Virding's First Rule of Programming:
Any sufficiently complicated concurrent program in another language contains an ad hoc informally-specified bug-ridden slow implementation of half of Erlang.
Happiness should be a function without any parameters.
User interface is the process of shifting from chaotic complexity to elegant simplicity.
So if an algorithm is an idealized recipe, a program is the detailed set of instructions for a cooking robot preparing a month of meals for an army while under enemy attack,.
When it comes to writing code, the number one most important skill is how to keep a tangle of features from collapsing under the weight of its own complexity.
Not all roots are buried down in the ground, some are at the top of a tree.
This approach is refreshing because most of the programming books I've read are drier than a camel's fart.
Without requirements and design, programming is the art of adding bugs to an empty text file.
Tests are stories we tell the next generation of programmers on a project.
I'm not saying simple code takes less time to write. You'd think it would since you end up with less total code, but a good solution isn't an accretion of code, it's a distillation of it.
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.
It's a curious thing about our industry: not only do we not learn from our mistakes, we also don't learn from our successes.
The generation of random numbers is too important to be left to chance.
The best programmers are not marginally better than merely good ones. They are an order-of-magnitude better, measured by whatever standard: conceptual creativity, speed, ingenuity of design, or problem-solving ability.
Documentation is like sex: when it is good, it is very, very good; and when it is bad, it is better than nothing.
The only way for errors to occur in a program is by being put there by the author. No other mechanisms are known. Programs can't acquire bugs by sitting around with other buggy programs.
Programmers are not mathematicians, no matter how much we wish and wish for it.
A lot of people want to make badly designed programming languages easier to use by giving them fancy IDE's. This makes sense if you are forced to use a badly designed language. I think it would be better to try making well designed languages instead.
Strings are the favorite data structure of bad programmers.
If Java had true garbage collection, most programs would delete themselves upon execution.
Progress is possible only if we train ourselves to think about programs without thinking of them as pieces of executable code.
Unix is a junk OS designed by a committee of PhDs.
Real programmers don't comment their code. If it was hard to write, it should be hard to understand.
A data structure is just a stupid programming language.
The best performance improvement is the transition from the nonworking state to the working state.
A program that produces incorrect results twice as fast is infinitely slower.
When in doubt, leave it out.
Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.
What I love about both programming and music is that they enable you to build incredibly creative, complex, and beneficial things seemingly from thin air -- no additional materials required, just your brain and a keyboard in front of you.
What I love about both programming and music is that they enable you to build incredibly creative, complex, and beneficial things seemingly from thin air no additional materials required, just your brain and a keyboard in front of you.
Programming and music also both allow for a deep, single-minded immersion in the creative process. They require you to be deeply focused and in the moment for everything to work well, and I find that state of flow to be immensely satisfying.
The happiest moment I felt is that moment when I realized my ability to create.
Platforms don't look like how they work and don't work like how they look.
Developer refracts. Hacker does. Programmer solves.
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.
A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable.
Chefs work with food, artists with oil paint, programmers with code.
Programming is a Dark Art, and it always will be. The programmer is fighting against the two most destructive forces in the universe: entropy and human stupidity. These are not things you can overcome with a methodology or on a schedule.
Computer science is to biology what calculus is to physics. It's the natural mathematical technique that best maps the character of the subject.
No technology that's connected to the internet is unhackable.
If a machine ever gains awareness, it will be not due to our careful programming, but due to an unforeseeable anomaly.
Computer programming is pretty much guaranteed income. I'm good at it, and I like it.
It's not a bug; it's an undocumented feature.
Any sufficiently advanced technology is indistinguishable from magic.
Simplicity is hard to build, easy to use, and hard to charge for. Complexity is easy to build, hard to use, and easy to charge for.
'Programming' is a four-letter word.
A process cannot be understood by stopping it. Understanding must move with the flow of the process, must join it and flow with it.
The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.
Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program.
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.
Successful software always gets changed.
It is a real service to humanity and the world to be a good programmer, particularly if you design great products. You make is easier for everybody, everybody has less headaches.
They know enough who know how to learn.
Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them.
Bad programmers worry about the code. Good programmers worry about data structures and their relationships.
Talk is cheap. Show me the code.
If you think your users are idiots, only idiots will use it.
Software is like sex: It's better when it's free.
Given enough eyeballs, all bugs are shallow.
Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.
Programmers are in the enviable position of not only getting to do what they want to, but because the end result is so important they get paid to do it. There are other professions like that, but not that many.
Beyond basic mathematical aptitude, the difference between good programmers and great programmers is verbal ability.
Whether you're a programmer or a seamstress, it's all about new techniques, simplifying old techniques, and consolidating steps. Making things go faster -- but not worse.
Software is like entropy. It is difficult to grasp, weighs nothing, and obeys the second law of thermodynamics; i.e. it always increases.
From a programmer's point of view, the user is a peripheral that types when you issue a read request.
If you have any trouble sounding condescending, find a Unix user to show you how it's done.
Never trust a computer you can't throw out a window.
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.
FORTRAN is not a flower but a weed -- it is hardy, occasionally blooms, and grows in every computer.
In programming, as in everything else, to be in error is to be reborn.
You think you KNOW when you learn, are more sure when you can write, even more when you can teach, but certain when you can program.
A language that doesn't affect the way you think about programming is not worth knowing.
The best book on programming for the layman is Alice in Wonderland; but that's because it's the best book on anything for the layman.
You can measure a programmer's perspective by noting his attitude on the continuing vitality of FORTRAN.
There are two ways to write error-free programs; only the third one works.
LISP programmers know the value of everything and the cost of nothing.
A programming language is low level when its programs require attention to the irrelevant.
In English every word can be verbed. Would that it were so in our programming languages.
We toast the Lisp programmer who pens his thoughts within nests of parentheses.
If we wish to count lines of code, we should not regard them as lines produced but as lines spent.
The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.
Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer.
If debugging is the process of removing software bugs, then programming must be the process of putting them in.
The computing scientist's main challenge is not to get confused by the complexities of his own making.
Are you quite sure that all those bells and whistles, all those wonderful facilities of your so called powerful programming languages, belong to the solution set rather than the problem set?
The tools we use have a profound and devious influence on our thinking habits, and therefore on our thinking abilities.
Programming in Basic causes brain damage.
Programming is one of the most difficult branches of applied mathematics; the poorer mathematicians had better remain pure mathematicians.
The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.
Object-oriented programming is an exceptionally bad idea which could only have originated in California.
APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums.
The competent programmer is fully aware of the limited size of his own skull. He therefore approaches his task with full humility, and avoids clever tricks like the plague.
If you're as clever as you can be when you write it, how will you ever debug it?
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.
The most effective debugging tool is still careful thought, coupled with judiciously placed print statements.
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?
That's the thing about people who think they hate computers. What they really hate is lousy programmers.
I think that great programming is not all that dissimilar to great art. Once you start thinking in concepts of programming it makes you a better person...as does learning a foreign language, as does learning math, as does learning how to read.
Lisp isn't a language, it's a building material.
The most disastrous thing that you can ever learn is your first programming language.
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.
It has been said that the great scientific disciplines are examples of giants standing on the shoulders of other giants. It has also been said that the software industry is an example of midgets standing on the toes of other midgets.
I love computer programmers. They have a very beautiful definition of complexity as 'the capacity to transmit the maximum information with the minimum data'.
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.
The most important single aspect of software development is to be clear about what you are trying to build.
Design and programming are human activities; forget that and all is lost.
However, when Java is promoted as the sole programming language, its flaws and limitations become serious.
I find languages that support just one programming paradigm constraining.
The standard library saves programmers from having to reinvent the wheel.
The trick is to fix the problem you have, rather than the problem you want.
The mark of a mature programmer is willingness to throw out code you spent time on when you realize it's pointless.
To a programmer, an operating system is defined by its API.
Data is not information, Information is not knowledge, Knowledge is not understanding, Understanding is not wisdom.
Programs are meant to be read by humans and only incidentally for computers to execute.
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.
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.
Premature optimization is the root of all evil.
Premature optimization is the root of all evil in programming.
Computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better.
Beware of bugs in the above code; I have only proved it correct, not tried it.
If you optimize everything, you will always be unhappy.
Everyday life is like programming, I guess. If you love something you can put beauty into it.
The most important thing in the programming language is the name. A language will not succeed without a good name. I have recently invented a very good name and now I am looking for a suitable language.
A language that doesn't have everything is actually easier to program in than some that do.
UNIX is simple and coherent, but it takes a genius (or at any rate, a programmer) to understand and appreciate its simplicity.
C is quirky, flawed, and an enormous success.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity.
All programming is maintenance programming, because you are rarely writing original code.
Programming in different languages is like composing pieces in different keys, particularly if you work at the keyboard. If you have learned or written pieces in many keys, each key will have its own special emotional aura.
As a rule, software systems do not work well until they have been used, and have failed repeatedly, in real applications.
The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better.
Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.
In the beginning, there were Real Programmers.
The intellectual property situation is bad and getting worse. To be a programmer, it requires that you understand as much law as you do technology.
Programming is similar to a game of golf. The point is not getting the ball in the hole but how many strokes it takes.
The most amazing achievement of the computer software industry is its continuing cancellation of the steady and staggering gains made by the computer hardware industry.
Programming graphics in X is like finding the square root of PI using Roman numerals.
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.
One of the big lessons of a big project is you don't want people that aren't really programmers programming, you'll suffer for it!
It is not that uncommon for the cost of an abstraction to outweigh the benefit it delivers. Kill one today!
Programming is not a zero-sum game. Teaching something to a fellow programmer doesn't take it away from you. I'm happy to share what I can, because I'm in it for the love of programming.
Low-level programming is good for the programmer's soul.
Linux is only free if your time has no value.
Computer Science is the only discipline in which we view adding a new wing to a building as being maintenance.
Laziness is a programmer's main virtue.
Programmers can be lazy.
It is easier to port a shell than a shell script.
Real programmers can write assembly code in any language.
The three chief virtues of a programmer are: Laziness, Impatience and Hubris.
When in doubt, use brute force.
Testing is not the point. The point is about responsibility.
The world is changing, and I believe that, if I want to stay employed as a programmer, I'm going to have to change with it.
We could talk, act, and dress funny. We were excused for socially inappropriate behavior: 'Oh, he's a programmer'. It was all because we knew this technology stuff that other people found completely mystifying.
Software is eating the world.
Programming is usually taught by examples.
Software sucks because users demand it to.
Programmers work in bursts of productivity. Then, they let the brain rest and get back into it. A lot about the office world is not a great fit for me.
Object-oriented programming offers a sustainable way to write spaghetti code. It lets you accrete programs as a series of patches.
A programming language is for thinking about programs, not for expressing programs you've already thought of. It should be a pencil, not a pen.
When I'm working on a problem, I never think about beauty. I think only how to solve the problem.
Languages that try to disallow idiocy become themselves idiotic.
Such is modern computing: everything simple is made too complicated because it's easy to fiddle with; everything complicated stays complicated because it's hard to fix.