October 3, 2013
Ladies and Gentlemen of the class of ‘14
If I could offer you only one tip for the future, simplicity would be it. The long term benefits of simplicity have been proven by Rich Hickey whereas the rest of my advice has no basis more reliable than my own meandering experience. I will dispense this advice now.
Beware the over engineered complexity of your code; oh nevermind; you will not understand the over engineered complexity of your code until it bites you in the ass. But trust me, in 2 years you’ll look back at code you’ve written and recall in a way you can’t grasp now how much unnecessary gold plating you added and how little it really achieved.
You are not as smart as you imagine. Don’t worry about designing for the future; or worry, but know that worrying is as effective as trying to solve an algebra equation by chewing bubblegum. The real troubles in your design are apt to be things that never crossed your worried mind; the kind that blindside you at 4pm on some idle Tuesday.
Do one thing everyday that challenges you.
Don’t be reckless with other people’s code, don’t put up with people who are reckless with yours.
Contribute to Open Source.
Don’t waste your time on jealousy; sometimes you’re ahead, sometimes you’re behind the race is long, and in the end, it’s only with yourself.
Remember the compliments you receive, forget the insults; if you succeed in doing this, tell me how.
Keep your old source code, throw away your old performance reviews.
Automate the tests
Don’t feel guilty about not knowing the right way to build software, the best developers I know didn’t know at 22 the best way to build software, the really good ones at 40 still don’t.
Get plenty of sleep.
Be kind to your laptop power supply, you’ll miss it when it’s gone.
Maybe you’ll make MVP, maybe you won’t, maybe you’ll join a startup, maybe you won’t, maybe you’ll go into management at 30, maybe you’ll be pushing code to github on your 75th birthday 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 development tools, whatever they are, use them every way you can, don’t be afraid of them, or what other people think of them, they are the greatest toys you’ll ever own.
Deploy, even if you have nowhere to do it but in your own living room.
Read other people’s code, even if you don’t understand it all.
Do NOT read “The Clean Coder”, it will only make you feel dirty.
Get to know desktop app development, you never know when it’ll be gone for good.
Code in C++ once, but stop before it makes you hard; code in Ruby once, but stop before it makes you soft.
Speak at Conferences.
Accept certain inalienable truths, complexity will rise, frameworks will not meet all your needs, you too will get old, and when you do you’ll fantasize that when you were young code was simple, frameworks were great and developers respected their colleagues.
Respect your colleagues. Don’t expect anyone else to do your work for you. Maybe you have an unspecified deadline, maybe you have a 10X team member; but you never know when either one might run out.
Don’t mess too much with your process, or by the time you get around to writing code there won’t be enough time to write any.
Be careful whose advice you buy, but, be patient with those who supply it. Advice is a form of nostalgia, dispensing it is a way of fishing the past from the disposal, wiping it off, painting over the ugly parts and recycling it for more than it’s worth.
But trust me on the simplicity.