I’m a huge proponent of designing your code around the data, rather than the other way around […] I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships.
Nobody should start to undertake a large project. You start with a small trivial project, and you should never expect it to get large. If you do, you’ll just overdesign and generally think it is more important than it likely is at that stage. Or worse, you might be scared away by the sheer size of the work you envision. So start small, and think about the details. Don’t think about some big picture and fancy design. If it doesn’t solve some fairly immediate need, it’s almost certainly over-designed. And don’t expect people to jump in and help you. That’s not how these things work. You need to get something half-way useful first, and then others will say “hey, that almost works for me”, and they’ll get involved in the project.
Talk is cheap. Show me the code.
Learn the rules like a pro, so you can break them like an artist.
Enlightenment is probably antithetical to impatience.
People who want to learn are, however, always welcome. People who respect knowledge, know what it costs to acquire it. People who do not know its costs will generally not respect it, either.
The best way to predict the future is to invent it.
I invented the term “object-oriented”, and I can tell you I didn’t have C++ in mind.
There are only two kinds of languages: the ones people complain about and the ones nobody uses.
All language designers are arrogant. Goes with the territory…
The three chief virtues of a programmer are: Laziness, Impatience and Hubris.
Easy things should be easy, and hard things should be possible.
If someone stinks, view it as a reason to help them, not a reason to avoid them.
Yes, I’m afraid chartreuse is one of my favorite colors…
(Note: The below conversation is from an interview published here.)
Jack London wrote 1,000 words every day before talking to anybody. He was totally, “Let me alone until I’ve got my thousand words!” Then he would drink or proofread the rest of the day. No, my scheduling principle is to do the thing I hate most on my to-do list. By week’s end, I’m very happy.
It would be very easy for me to say, “Oh, let me be a genius and never clean the toilet.” But even cleaning toilets is doable. (My wife) Jill and I got uniforms that have a slot where the 409 cleaner fits. You go over there and squirt and feel good cleaning the toilet!
A person’s success in life is determined by having a high minimum, not a high maximum. If you can do something really well but there are other things at which you’re failing, the latter will hold you back. But if almost everything you do is up there, then you’ve got a good life. And so I try to learn how to get through things that others find unpleasant.
Free software is the world’s most advanced technical education system. It allows anybody, anywhere in the world, to get to the state of the art in anything computers can be made to do, by reading what is fully available, by experimenting with it and by sharing the consequences freely.
May you do good and not evil
May you find forgiveness for yourself and forgive others
May you share freely, never taking more than you give.
Blessing found in the SQLite source code.