Cory House gave a good talk titled “Becoming an Outlier: Career Reboot for the Developer Mind“ at this year’s NDC Oslo conference (there’s really so many to choose from!) and it’s one that has really resonated with me as it aligns with many of my personal goals and experiences. To help me better remember these valuable advices here’s a pretty long list of my takeaways from the talk I hope you’ll also find useful.
You can also find links to some of Cory’s courses on Pluralsight as well as links to the slides and recording of the talk at the bottom of the page.
Career Reboot for the Developer Mind
If you want to be success, find time to do things that add value to other people. When you look at people who are really successful, they spend a massive amount of time adding value to the world.
As developers, we’re all on this technical treadmill where technologies move on so quickly that it is frustrating and challenging trying to stay current and relevant.
“Wealth is not about having money. It’s about having options.”
– Chris Rock
Being an outlier – someone who stands out from the pack – will give you more options, the option to take different jobs, or move into new and exciting technologies. But being an outlier is hard, and it’s really hard to keep up with the technical treadmill, so Cory offers some advices to help you.
Command Your Time
“I’m not a great programmer; I’m a good programmer with great habits.”
– Kent Beck
Habits are important because habits are 40% of our day.
To become an expert in any given field you need 10,000 hours of deliberate practice, and for those of you thinking that your 8 hours of working day count as deliberate practice the bad news is that deliberate practice is not doing what you already know repetitively. Deliberate practice is when you really challenge yourself and push your boundaries, like when you learn a new paradigm or trying to learn functional programming for the first time – deliberate practice should unnerve you, it should scare you, and if you’re not being challenged then you are probably not doing deliberate practice.
I remember when I used to practice Wing Chun (a form of martial arts) we had these 4 hour training sessions where by the end of each session we will be tired, bruised, hungry and sometimes barely have enough strength to walk out of the dojo. That’s what deliberate practice feels like! And to achieve 10000 hours of that requires dedication and sacrifice to other areas of your life.
This need for sacrifice is something that really resonates with me. Several years ago I made the conscious decision to cut down on certain activities – going out with friends, watching TV, playing computer games, etc. – because I had come to realise that in order to succeed as a developer I needed to learn far more than I was able to on the job.
Having been a late comer to programming and computing in general, I was all too painfully aware of the extra mile I have to go compared to most of my peers. I had my first computer at the age of 15 and although I then studied computer science at one of the top universities in the UK my passion for programming didn’t really spark until a year or so into my first job as a professional developer at Credit Suisse when I finally ‘get’ the things I was taught at university*.
Multithread your life
Try and find time to do some learning whilst you’re doing something else that doesn’t require a lot of brain power, e.g.
- use your daily commute time to listen to things that add value (podcasts, audio books, etc.)
- use your workout time (I have managed to read 2 books this year whilst on the bike in the gym!)
- work from home some days to cut out some commute time
- work different hours avoid rush hours and to have some quiet time in the office
“You do something all day long, don’t you? The only difference is that you do a great many things and I do one.”
– Thomas Edison
As developers we need large chunks of uninterrupted time, so we need to set up our days with that in mind. To help prevent interruptions to your day, you might:
- Get a private office if you’re really lucky (in Joel Spolsky’s company Fog Creek, each developer has an office with sliding doors”!)
- Work from home
- Work alternate schedule (go in early before everyone else comes in)
- Batch meetings so they don’t cause disruptions throughout the day
- Write down where you were when you are interrupted
- Get noise cancelling headphones
- Track where you’re spending your time (RescueTime is a useful tool)
- Manage your leisure time
- Manicure your stream (slow media is not for the distracted masses, it’s for the focused few)
- Search for life-changing media (like the CODE complete book)
On consumption of mass media,
“The less news you consume, the bigger the advantage you have”
– Rolf Dobelli
The problem with mass media is that if you spend time on things you can’t change then your realm of influence will never change (you can’t change the things you see on the news).
Money is Time
The more money you earn the more you can delegate other tasks (house keeping, lawn mowing etc.) to others so that it frees you up to do more software development and improve your skillset and therefore earn more money so that you can continue to spend time doing the things that matters to you.
Hacking Your Image
Remember – perception is reality.
As software developers, you need to manage how people perceive you, and you want to be perceived as something that’s purpose built (Eric Lippert talked about how, as a young developer he was given the advice to focus and become the world-renowned expert in one area, and the rest as they say, is history). Once you do, you no longer need to look for jobs, jobs will come to you and that’s just one of the many benefits of being an outlier.
Neil Gaiman said in his graduation speech that there are three things you can do in your job:
- Be easy to work with
- Do great work
- Deliver on time
and whilst you only have to pick two but to be an outlier, try and do all three.
The Developer Image Triangle
Now think about where you stand in this triangle!
As a developer, prospective employers should be able to find your work on the internet, a blog, OSS contributions, etc, so strive to put your work out there for others to see and use. And once you’ve done a piece of work, recycle it:
- write a blog post
- tweet about it
- do a lunch & learn
- speak at a conference
- answer questions onforums
- contribute to open source
- take a side contract using that new technology
The most valuable place to share your information and knowledge is on your blog because you own it!
Having paper books can also be a good physical reminder of what you read in the past and the ideas that you learned from them. They can also double up as a trophy of knowledge that people can see, a visual summary of what you know and the things that interest you.
Own Your Career Trajectory
You need to change from a passive mindset to an active mindset. How do you know that someone has a passive mindset, here are some tell tail signs:
“I changed tech because my employer required it.”
“I interviewed because a recruiter called me.”
“I stay at my job because changing jobs is risky.”
“I learn technology when training is provided.”
“I read because it’s assigned.”
Whereas outliers are active, and these are the sort of things they’d say:
“I changed tech because I wanted to.”
“I interviewed because I found a cause I believe in.”
“I stay at my job because I’m valued and respected.”
“I learn technology on my own to achieve specific goals.”
“I read because it moves me forward.”
Regardless what technology you choose to invest yourself in, the key to success is to always learn to teach yourself more efficiently than any institution can.
Programming Your Brain
The art of learning in three steps:
- Watch someone do something (e.g. pluralsight, pair programming, etc.)
- Try it and experiment
- Teach someone else
Take a look at the learning pyramid, and notice how much higher percentage of things you learn will you retain when you practice doing them or teach others. Practicing and teaching others are the best way to learn.
Don’t work for money. Work to learn.
Then lastly, Cory offered some good closing advice, including:
- Chase your fear
- Strive to choose yourself and choose to do the hardest thing
- Be careful who you spend time with
“You are the average of the five people you spend the most time with.”
– Jim Rohn
“Change leads to insight far more often than insight leads to change.”
– Milton Ericsson
* computer science courses over here tend to be so theory focused that you lose sight of why the things you learn mattered and so often you’re simply learning for learning sake (and to pass exams at the end of the term..). Going back to Cory’s point about doing thing that add value to others, I find that the current approach to teaching computer science doesn’t help you relate what you’re learning to how they might be used to add value to anyone, even something as small as making computer programs that execute faster so that their users waste less time waiting each day, but that’s another topic for another day..
I specialise in rapidly transitioning teams to serverless and building production-ready services on AWS.
Are you struggling with serverless or need guidance on best practices? Do you want someone to review your architecture and help you avoid costly mistakes down the line? Whatever the case, I’m here to help.
Check out my new course, Complete Guide to AWS Step Functions. In this course, we’ll cover everything you need to know to use AWS Step Functions service effectively. Including basic concepts, HTTP and event triggers, activities, callbacks, nested workflows, design patterns and best practices.
Here is a complete list of all my posts on serverless and AWS Lambda. In the meantime, here are a few of my most popular blog posts.
- Lambda optimization tip – enable HTTP keep-alive
- You are thinking about serverless costs all wrong
- Many faced threats to Serverless security
- We can do better than percentile latencies
- I’m afraid you’re thinking about AWS Lambda cold starts all wrong
- Yubl’s road to Serverless
- AWS Lambda – should you have few monolithic functions or many single-purposed functions?
- AWS Lambda – compare coldstart time with different languages, memory and code sizes
- Guys, we’re doing pagination wrong