When there is no type hierarchy you don't have to manage the type hierarchy.
Not only is UNIX dead, it's starting to smell really bad.
This is a software-powered world.
Our job as the game creators or developers -- the programmers, artists, and whatnot -- is that we have to kind of put ourselves in the user's shoes. We try to see what they're seeing, and then make it, and support what we think they might think.
If you're a musician or actor, you know that if you're successful, some level of fame goes along with that. You're prepared. But how often does that happen to a programmer?
If you think about computer programming, it's as antisocial as it gets.
The trouble with programmers is that you can never tell what a programmer is doing until it's too late.
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.
It's OK to figure out murder mysteries, but you shouldn't need to figure out code. You should be able to read it.
The big optimizations come from refining the high-level design, not the individual routines.
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.
Good code is its own best documentation.
Good code is its own best documentation. As you're about to add a comment, ask yourself, "How can I improve the code so that this comment isn't needed?" Improve the code and then document it to make it even clearer.
Any fool can use a computer. Many do.
When people have options for what they want to see, it forces the quality of programming and content to be higher.
Rewrite and revise. Do not be afraid to seize what you have and cut it to ribbons ... Good writing means good revising.
Programs must be written for people to read, and only incidentally for machines to execute.
SQL, Lisp, and Haskell are the only programming languages that I've seen where one spends more time thinking than typing.
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.
You can Change Your Organization or Change Your Organization.
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
The unavoidable price of reliability is simplicity.
I was eventually persuaded of the need to design programming notations so as to maximize the number of errors which cannot be made, or if made, can be reliably detected at compile time.
You cannot teach beginners top-down programming, because they don't know which end is up.
It's not that Perl programmers are idiots, it's that the language rewards idiotic behavior in a way that no other language or tool has ever done.
I've always had very strong feeling that computer programming is a godlike kind of job. Similar to the Lord creating our material world and whole the Universe, based on molecular techniques such as DNA coding -- developers create the digital world based on IT technologies coding.
BASIC is to computer programming as QWERTY is to typing.
A programming language is like a natural, human language in that it favors certain methaphors, images, and ways of thinking.
Java is C++ without the guns, clubs and knives.
What kind of programmer is so divorced from reality that she thinks she'll get complex software right the first time?
Every programmer is an author.
One bad programmer can easily create two new jobs a year.
To be a programmer is to develop a carefully managed relationship with error. There's no getting around it. You either make your accomodations with failure, or the work will become intolerable.
Programmers seem to be changing the world. It would be a relief, for them and for all of us, if they knew something about it.
Code should run as fast as necessary, but no faster; something important is always traded away to increase speed.
When debugging, novices insert corrective code; experts remove defective code.
The three most important aspects of debugging and real estate are the same: Location, Location, and Location.
A class, in Java, is where we teach objects how to behave.
If you cannot grok the overall structure of a program while taking a shower, you are not ready to code it.
As a programmer, it is your job to put yourself out of business. What you do today can be automated tomorrow.
You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time.
Complexity has nothing to do with intelligence, simplicity does.
Writing code is not production, it's not always craftsmanship though it can be, it's design.
There's a subtle reason that programmers always want to throw away the code and start over. The reason is that they think the old code is a mess. ... The reason that they think the old code is a mess is because of a cardinal, fundamental law of programming: It's harder to read code than to write it.
Listen to your customers, not your competitors.
Something is usable if it behaves exactly as expected.
Nothing works better than just improving your product.
Good software, like wine, takes time.
It's harder to read code than to write it.
Design adds value faster than it adds cost.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning.
The three most dangerous things in the world are a programmer with a soldering iron, a hardware type with a program patch and a user with an idea.
The proper use of comments is to compensate for our failure to express ourself in code.
If the discipline of requirements specification has taught us anything, it is that well-specified requirements are as formal as code and can act as executable tests of that code!
A long descriptive name is better than a short enigmatic name. A long descriptive name is better than a long descriptive comment.
The perfect kind of architecture decision is the one which never has to be made.
Truth can only be found in one place: the code.
An algorithm is like a recipe.
Give a man a program, frustrate him for a day.
Teach a man to program, frustrate him for a lifetime.
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 ever exercised such absolute authority to arrange a stage or field of battle and to command such unswervingly dutiful actors or troops.
Programmers are not to be measured by their ingenuity and their logic but by the completeness of their case analysis.
If, at first, you do not succeed, call it version 1.0.
In the happy land of elegant code and pretty rainbows, there lives a spoil-sport monster called inefficiency.
It has to become second nature, for a programmer, to notice when a concept is begging to be abstracted into a new word.
Higher-order functions allow us to abstract over actions, not just values.
You're building your own maze, in a way, and you might just get lost in it.
There are many terrible mistakes to make in program design, and you should go ahead and make them so that you understand them. A sense of what a good program looks like is developed in practice, not learned from a list of rules.
I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs.
The realization came over me with full force that a good part of the remainder of my life was going to be spent in finding errors in my own programs.
Programming is about managing complexity: the complexity of the problem, laid upon the complexity of the machine. Because of this complexity, most of our programming projects fail.
You darling is my semicolon.
First solve the problem. Then, write the code.
Programming is not easy like Sunday morning, it is silent poetry.
Think twice, code once.
I always suspected that programmers became programmers because they got to play God with the little universe boxes on their desks.
Code is like love, it was created with clear intentions at the beginning, but it can get complicated.
Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defense against complexity.
Programmers are expensive. Hardware is cheap.
The number of lines of code a programmer can write in a fixed period of time is the same independent of the language used.
People who aren't steeped in software often have an unrealistically non-horrified view of software quality.
Code never lies, comments sometimes do.
I am rarely happier than when spending an entire day programming my computer.
I am rarely happier than when spending entire day programming my computer to perform automatically a task that it would otherwise take me a good ten seconds to do by hand.
Example isn't another way to teach, it is the only way to teach.
Software is the magic thing whose importance only goes up over time.
Everybody in this country should learn to program a computer, because it teaches you how to think.
The best way to prepare to be a programmer is to write programs, and to study great programs that other people have written. In my case, I went to the garbage cans at the Computer Science Center and I fished out listings of their operating systems.
In theory, theory and practice are the same. In practice, they are not.
What I cannot create, I do not understand.
The best is the enemy of the good.
The whole point of getting things done is knowing what to leave undone.
Software is a great combination between artistry and engineering.
Software is a great combination between artistry and engineering. When you finally get done and get to appreciate what you have done it is like a part of yourself that you've put together. I think a lot of the people here feel that way.