[31 August 2006]
Geeks and hackers of the class of 2007:
Use version control.
If I could offer you only one tip for the future, version control would be it. The long-term benefits of version control have been proved by Real Programmers, whereas the rest of my advice has no basis more reliable than my own psychosis. I will dispense this advice now.
Enjoy the sparseness and simplicity of your libraries. Oh, never mind. You will not understand the sparseness and simplicity of your libraries until you’ve upgraded. But trust me, in 20 years, you’ll look back at those pretty coloured posters of your class hierarchies and recall in a way you can’t grasp now how much time you’ve wasted and how useless Moore’s Law really was. You are not as l33t as you imagine.
Don’t worry about Linux market share. Or worry, but know that worrying is as effective as trying to install Debian from the cover CD on a computer magazine. The real troubles in your life are apt to be things that never crossed the packagers’ minds, the kind that are blindingly obvious to you and everyone else in the world who doesn’t work for Red Hat.
Run one process every day that uses 100% CPU.
Don’t be careless with other people’s email addresses. Don’t put up with websites that are careless with yours.
Don’t waste your time commenting on Slashdot. Sometimes you’re +5 Funny, sometimes you’re -1 Troll. The article page is long and, in the end, it’s only a bunch of 14-year-olds using Dad’s Windows 98 box.
Leave clear, concise, useful comments in your code. Don’t leave pointless ones. If you succeed in doing this, tell me how.
Keep your old copies of Knuth. Throw away your old shell scripts.
Don’t feel guilty if you don’t like Python’s whitespace and can’t get your head around Haskell. The most interesting programs I know weren’t written in trendy languages. Some of the most useful ones were even written in VB.
Get some sunshine occasionally. Don’t bother about your suntan. You won’t miss it when it’s gone.
Maybe you’ll get a degree, maybe you won’t. Maybe you’ll start a startup, maybe you won’t. Maybe you’ll sell the company to Yahoo before you’re 40, maybe you’ll go cap in hand back to your old boss and beg for a phone support job in the last remaining helpdesk megaplex outside the subcontinent. Whatever you do, don’t congratulate yourself too much, or berate yourself either. Paul Graham did it all much younger than you, and he’s still occasionally a bit of a prat.
Enjoy your emacs. Use it every way you can. Always be slightly afraid of it, but not of what other people think of it. It’s the greatest operating system you’ll ever use, and it has some text editing features.
Hack, even if you have nowhere to do it but your basement.
Read the FAQs, even if you then email the site maintainers anyway.
Do not look at Apple screenshots. They will only make you feel ugly.
Get to know Perl. You never know when it’ll be gone for good.
Be nice to COBOL programmers. They’re your best link to the past and the people most likely to sympathise when the next bubble bursts and you’re unemployed again.
Understand that programming fads come and go, but with a precious few you should hold on. Regexps will always be worth learning, regardless of what JWZ may have to say on the matter. Closures, too. And how malloc works, even if every language you ever touch is garbage collected. Monads, however, are just silly.
Work in Visual Basic once, but leave before it makes you soft. Work in Java once, but leave before it makes your frontal lobe liquify and dribble out of your bleeding eyesockets.
Accept certain inalienable truths: Processor speeds will rise. Software will contain bugs. You, too, will spend too much of your day reading Slashdot. And when you do, you’ll fantasize that when you were young, processors were zippy, software was comprehensible, and hackers respected Richard Stallman.
Respect Richard Stallman.
Don’t expect anyone else to give realtime support. Maybe you paid a licensing fee. Maybe you know the lead developer. But you never know when someone on the newsgroup might trick you into deleting your home directory because they forgot their medication this morning.
Don’t mess too much with your config or by the time you need to upgrade it will be unsupportable.
Be careful whose libraries you download, but be patient with those who support them. Software libraries are a form of faith. Open Sourcing them is a way of fishing one’s hard work from the archives, polishing it up, commenting most of the ugly parts and selling it for more than it’s worth, even (or especially) if it’s free.
But trust me on the version control.