NDC Oslo 2014 – Takeaways from “Career reboot for the developer mind”

Cory House gave a good talk titled “Becom­ing an Out­lier: Career Reboot for the Devel­op­er Mind“ at this year’s NDC Oslo con­fer­ence (there’s real­ly so many to choose from!) and it’s one that has real­ly res­onat­ed with me as it aligns with many of my per­son­al goals and expe­ri­ences. To help me bet­ter remem­ber these valu­able advices here’s a pret­ty long list of my take­aways from the talk I hope you’ll also find use­ful.

You can also find links to some of Cory’s cours­es on Plu­ral­sight as well as links to the slides and record­ing of the talk at the bot­tom of the page.

 

Career Reboot for the Developer Mind

If you want to be suc­cess, find time to do things that add val­ue to oth­er peo­ple. When you look at peo­ple who are real­ly suc­cess­ful, they spend a mas­sive amount of time adding val­ue to the world.

As devel­op­ers, we’re all on this tech­ni­cal tread­mill where tech­nolo­gies move on so quick­ly that it is frus­trat­ing and chal­leng­ing try­ing to stay cur­rent and rel­e­vant.

Wealth is not about hav­ing mon­ey. It’s about hav­ing options.”

- Chris Rock

Being an out­lier – some­one who stands out from the pack – will give you more options, the option to take dif­fer­ent jobs, or move into new and excit­ing tech­nolo­gies. But being an out­lier is hard, and it’s real­ly hard to keep up with the tech­ni­cal tread­mill, so Cory offers some advices to help you.

 

Command Your Time

I’m not a great pro­gram­mer; I’m a good pro­gram­mer with great habits.”

- Kent Beck

Habits are impor­tant because habits are 40% of our day.

To become an expert in any giv­en field you need 10,000 hours of delib­er­ate prac­tice, and for those of you think­ing that your 8 hours of work­ing day count as delib­er­ate prac­tice the bad news is that delib­er­ate prac­tice is not doing what you already know repet­i­tive­ly. Delib­er­ate prac­tice is when you real­ly chal­lenge your­self and push your bound­aries, like when you learn a new par­a­digm or try­ing to learn func­tion­al pro­gram­ming for the first time – delib­er­ate prac­tice should unnerve you, it should scare you, and if you’re not being chal­lenged then you are prob­a­bly not doing delib­er­ate prac­tice.

I remem­ber when I used to prac­tice Wing Chun (a form of mar­tial arts) we had these 4 hour train­ing ses­sions where by the end of each ses­sion we will be tired, bruised, hun­gry and some­times bare­ly have enough strength to walk out of the dojo. That’s what delib­er­ate prac­tice feels like! And to achieve 10000 hours of that requires ded­i­ca­tion and sac­ri­fice to oth­er areas of your life.

This need for sac­ri­fice is some­thing that real­ly res­onates with me. Sev­er­al years ago I made the con­scious deci­sion to cut down on cer­tain activ­i­ties – going out with friends, watch­ing TV, play­ing com­put­er games, etc. – because I had come to realise that in order to suc­ceed as a devel­op­er I need­ed to learn far more than I was able to on the job.

Hav­ing been a late com­er to pro­gram­ming and com­put­ing in gen­er­al, I was all too painful­ly aware of the extra mile I have to go com­pared to most of my peers. I had my first com­put­er at the age of 15 and although I then stud­ied com­put­er sci­ence at one of the top uni­ver­si­ties in the UK my pas­sion for pro­gram­ming didn’t real­ly spark until a year or so into my first job as a pro­fes­sion­al devel­op­er at Cred­it Suisse when I final­ly ‘get’ the things I was taught at uni­ver­si­ty*.

 

Mul­ti­thread your life

Try and find time to do some learn­ing whilst you’re doing some­thing else that doesn’t require a lot of brain pow­er, e.g.

  • use your dai­ly com­mute time to lis­ten to things that add val­ue (pod­casts, audio books, etc.)
  • use your work­out time (I have man­aged to read 2 books this year whilst on the bike in the gym!)
  • work from home some days to cut out some com­mute time
  • work dif­fer­ent hours avoid rush hours and to have some qui­et time in the office

 

Be Modal

You do some­thing all day long, don’t you? The only dif­fer­ence is that you do a great many things and I do one.”

- Thomas Edi­son

As devel­op­ers we need large chunks of unin­ter­rupt­ed time, so we need to set up our days with that in mind. To help pre­vent inter­rup­tions to your day, you might:

  • Get a pri­vate office if you’re real­ly lucky (in Joel Spolsky’s com­pa­ny Fog Creek, each devel­op­er has an office with slid­ing doors”!)
  • Work from home
  • Work alter­nate sched­ule (go in ear­ly before every­one else comes in)
  • Batch meet­ings so they don’t cause dis­rup­tions through­out the day
  • Write down where you were when you are inter­rupt­ed
  • Get noise can­celling head­phones
  • Track where you’re spend­ing your time (Res­cue­Time is a use­ful tool)
  • Man­age your leisure time
  • Man­i­cure your stream (slow media is not for the dis­tract­ed mass­es, it’s for the focused few)

image

  • Search for life-chang­ing media (like the CODE com­plete book)

 

On con­sump­tion of mass media,


The less news you con­sume, the big­ger the advan­tage you have”

- Rolf Dobel­li

The prob­lem with mass media is that if you spend time on things you can’t change then your realm of influ­ence will nev­er change (you can’t change the things you see on the news).

image

 

Mon­ey is Time

The more mon­ey you earn the more you can del­e­gate oth­er tasks (house keep­ing, lawn mow­ing etc.) to oth­ers so that it frees you up to do more soft­ware devel­op­ment and improve your skillset and there­fore earn more mon­ey so that you can con­tin­ue to spend time doing the things that mat­ters to you.

 

Hacking Your Image

Remem­ber – per­cep­tion is real­i­ty.

As soft­ware devel­op­ers, you need to man­age how peo­ple per­ceive you, and you want to be per­ceived as some­thing that’s pur­pose built (Eric Lip­pert talked about how, as a young devel­op­er he was giv­en the advice to focus and become the world-renowned expert in one area, and the rest as they say, is his­to­ry). Once you do, you no longer need to look for jobs, jobs will come to you and that’s just one of the many ben­e­fits of being an out­lier.

Neil Gaiman said in his grad­u­a­tion speech that there are three things you can do in your job:

  1. Be easy to work with
  2. Do great work
  3. Deliv­er on time

and whilst you only have to pick two but to be an out­lier, try and do all three.

 

The Devel­op­er Image Tri­an­gle

image

Now think about where you stand in this tri­an­gle!

 

As a devel­op­er, prospec­tive employ­ers should be able to find your work on the inter­net, a blog, OSS con­tri­bu­tions, etc, so strive to put your work out there for oth­ers to see and use. And once you’ve done a piece of work, recy­cle it:

  1. write a blog post
  2. tweet about it
  3. do a lunch & learn
  4. speak at a con­fer­ence
  5. answer ques­tions onfo­rums
  6. con­tribute to open source
  7. take a side con­tract using that new tech­nol­o­gy

The most valu­able place to share your infor­ma­tion and knowl­edge is on your blog because you own it!

 

Hav­ing paper books can also be a good phys­i­cal reminder of what you read in the past and the ideas that you learned from them. They can also dou­ble up as a tro­phy of knowl­edge that peo­ple can see, a visu­al sum­ma­ry of what you know and the things that inter­est you.

 

Own Your Career Trajectory

You need to change from a pas­sive mind­set to an active mind­set. How do you know that some­one has a pas­sive mind­set, here are some tell tail signs:

I changed tech because my employ­er required it.”

I inter­viewed because a recruiter called me.”

I stay at my job because chang­ing jobs is risky.”

I learn tech­nol­o­gy when train­ing is pro­vid­ed.”

I read because it’s assigned.”

Where­as out­liers are active, and these are the sort of things they’d say:

I changed tech because I want­ed to.”

I inter­viewed because I found a cause I believe in.”

I stay at my job because I’m val­ued and respect­ed.”

I learn tech­nol­o­gy on my own to achieve spe­cif­ic goals.”

I read because it moves me for­ward.”

Regard­less what tech­nol­o­gy you choose to invest your­self in, the key to suc­cess is to always learn to teach your­self more effi­cient­ly than any insti­tu­tion can.

 

Pro­gram­ming Your Brain

The art of learn­ing in three steps:

  • Watch some­one do some­thing (e.g. plu­ral­sight, pair pro­gram­ming, etc.)
  • Try it and exper­i­ment
  • Teach some­one else

 

Take a look at the learn­ing pyra­mid, and notice how much high­er per­cent­age of things you learn will you retain when you prac­tice doing them or teach oth­ers. Prac­tic­ing and teach­ing oth­ers are the best way to learn.

image

 

Don’t work for mon­ey. Work to learn.

 

Then last­ly, Cory offered some good clos­ing advice, includ­ing:

  • Chase your fear
  • Strive to choose your­self and choose to do the hard­est thing
  • Be care­ful who you spend time with

You are the aver­age of the five peo­ple you spend the most time with.”

- Jim Rohn

Change leads to insight far more often than insight leads to change.”

- Mil­ton Eric­s­son

 

 

* com­put­er sci­ence cours­es over here tend to be so the­o­ry focused that you lose sight of why the things you learn mat­tered and so often you’re sim­ply learn­ing for learn­ing sake (and to pass exams at the end of the term..). Going back to Cory’s point about doing thing that add val­ue to oth­ers, I find that the cur­rent approach to teach­ing com­put­er sci­ence doesn’t help you relate what you’re learn­ing to how they might be used to add val­ue to any­one, even some­thing as small as mak­ing com­put­er pro­grams that exe­cute faster so that their users waste less time wait­ing each day, but that’s anoth­er top­ic for anoth­er day..

 

Links

Plu­ral­sight course – Becom­ing an out­lier: Pro­gram­ming the devel­op­er mind

Plu­ral­sight course – Clean code, writ­ing code for humans

Slides

Record­ing