maradydd: (Default)
[personal profile] maradydd
(to use smartpointers)

Ladies and gentlemen of the Computer Science department Class of 2006 ... use smartpointers.

If I could offer you only one tip for the future, smartpointers would be it.

The long-term benefits of smartpointers have been demonstrated by the Boost developers, whereas the rest of my advice has no basis more reliable than my own meagre hackery.

I will dispense this advice now.

Enjoy the power and beauty of functional programming. Never mind. You will not understand the power and beauty of the functional idiom until you have forgotten what anything else looks like. But trust me, in 20 years you'll look back at procedural and object-oriented code and recall in a way you can't grasp now how weird functional programming was at the time, and how much easier everything else would have been if you'd just broken down and learned it.

Your code is more bloated than you imagine. But it gets better with time and practice.

Don’t worry about optimization; or worry, but know that premature optimization is the root of all evil. The real troubles in your code are apt to be things that you never predicted would bottleneck; the kind that show up in gdb and make you say, "Why are there 10,000 calls to std::less?"

Learn one new technique every day. And actually use it.

Sing. But be prepared for people to look at you funny if you're wearing headphones and they can't hear the background music.

Don’t be reckless with other people’s code repositories, and don’t put up with people who are reckless with yours. A commit bit is a privilege, not a right.

Floss. Your co-workers will thank you for it. And don't forget the deodorant, either.

Don’t waste your time on flamewars; sometimes you’re right, sometimes you're not, sometimes there's no way to tell. Prove it with code -- or math -- if you can, and if not, forget about it; in the end, it's the software you write that matters, not the mailing list posts. (Except as warnings to later generations. The time you save may be that of the next poor bastard who googles the topic.)

Archive the compliments you receive, delete the insults; you will probably remember the insults anyway, but that way you won't re-read them and make yourself feel bad.

Keep your old patches, throw away your old programming assignments.

Stretch. That expensive chair is not as good for your back as you think it is.

Don’t feel guilty if you don’t know what you want to work on. There are a lot of great open-source projects in the world, and contributing to one is a terrific way to gain experience, pick up street cred, and come up with ideas for something else cool. Or think of a problem you have in your own life, come up with a solution for it, implement it, and release it. Release it even if you don't think anyone else in the world is going to use it; packaging software is a valuable skill in its own right, and you never know who else might desperately need the exact widget you just developed.

Get plenty of sunlight. You'll be amazed what it does for your mood.

Be kind to your wrists. You’ll miss them when they’re gone.

Maybe you’ll found a company, maybe you won’t, maybe you’ll do an IPO, maybe you won’t, maybe you’ll tank before you get VC, maybe Google will buy you out for $100 million. Whatever you do, don’t congratulate yourself too much or berate yourself, either. Your choices are half chance, so are everybody else’s. Enjoy your brain, use it every way you can. Don’t be afraid of it, or what other people think of it, it’s the greatest instrument you’ll ever own.

Dance. Even if it's just Stepmania.

Read the documentation, even if you don’t understand it. You'll learn something.

Read journals, as well. Yes, they will make you feel stupid, but remember that everyone with a published article has felt like all his or her colleagues are the competent ones, too.

Get to know your professors. You never know when they’ll take a job elsewhere and leave no forwarding address, which sucks if you need a recommendation letter.

Be nice to underclassmen; they're a good link to the department you're leaving, and you might end up hiring them in the future.

Understand that colleagues come and go, but some small few will be collaborators for a lifetime. Work hard to bridge the gaps in opinion and expertise, because the more of an expert in one area you become, the more you need the people who are experts in their fields and already know how to communicate with you.

Live in Seattle once, but leave before it makes you bitter; live in Silicon Valley once, but leave before it makes you think that everyone wants to give you money just for existing.

Travel. Conferences are a good excuse to get your workplace to pay for it.

Accept certain inalienable truths: interpreted languages will be slow, smart people will sell out, you too will get old, and when you do you’ll fantasize that when you were young, virtual machines weren't memory hogs, everyone was devoted to free software, and young hackers respected their elders.

Respect your elders.

Don’t expect anyone else to support your work. Maybe you have a boss who's happy to let you spend time on your own projects; maybe you have a group of clueful users who kick in patches now and then. But bosses quit or get transferred, and users get busy, so don't rely on them.

Don’t mess too much with your hair, but do wash it a couple of times a week. Your co-workers will thank you for that, too.

Be careful whose technical books you buy, but be patient with those who provide their help for free. This is one of the only fields in which advice is expensive because once you understand something at a very deep level, it's hard to explain it without going into too much detail. Show your appreciation to those who can make their way down from the mountain to show you the path up, and for God's sake, RTFM.

But trust me on the smartpointers.

(no subject)

Date: 2006-05-16 11:14 pm (UTC)
vatine: Generated with some CL code and a hand-designed blackletter font (Default)
From: [personal profile] vatine
slightly partial, I would recommend SBCL, even though the code I wrote for the compiler never got completely committed (it was ugly and used global state, the new code is pretty and uses "exceptions").

Profile

maradydd: (Default)
maradydd

September 2010

S M T W T F S
   1234
567891011
12131415 161718
19202122232425
26 27282930  

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags