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

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

 

Be Modal

“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)

image

  • 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).

image

 

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:

  1. Be easy to work with
  2. Do great work
  3. 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

image

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:

  1. write a blog post
  2. tweet about it
  3. do a lunch & learn
  4. speak at a conference
  5. answer questions onforums
  6. contribute to open source
  7. 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.

image

 

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..

 

Links

Pluralsight course – Becoming an outlier: Programming the developer mind

Pluralsight course – Clean code, writing code for humans

Slides

Recording

NDC Oslo 2014 – Takeaways from keynote “It’s a write/read web”

So NDC Oslo 2014’s finished, it was the first time I’ve attended the conference and I must say it has been a fantastic experience for me. No only was I given the privilege to see so many smart people talking about interesting topics happening in our field, I was also able to meet quite a few prominent members of the F# and Erlang community.

All the videos are available on the NDC Oslo channel on Vimeo, which you can access here.

Here’s my takeaways from the keynote by Luke Wroblewski, It’s a write/read web, which you can find links to the slides and recording at the bottom of the page.

 

It’s a Write/Read web

What is the write/read web and what do companies like Facebook, Google, Yahoo, Wikipedia, Ebay, Twitter, LinkedIn and YouTube have in common besides being places where people like to spend time on the internet? Well, the experiences they offer only work if people contribute contents to them, hence they all offer what we shall call Write/Read Experiences. In fact, this matches the original vision that Sir Tim Berners-Lee had for the internet:

“The original thing I wanted to do was make [the Web] a place where we could all meet and read & write

– Tim Berners-Lee

It’s a mobile web

In the US, 78% of monthly US Facebook users are on mobile, in the UK it’s 85%. 30% of Facebook India users are mobile only.

75% of all Twitter users are on mobile.

40% of YouTube views are happening on mobile.

image

Whilst global sales of PC has dropped to 281M, smartphone and tablet sales has soared to over 2B! This represents an opportunity that quite simply, dwarfs the one we’ve had in the last 2 decades with the PC. Latest numbers according to Gartner:

image

To illustrate the opportunity that lies before us, Ebay did $13B worth of mobile commerce in 2012, which is up from $4B the previous year.

Mobile is no longer just about games, in fact, games (50% –> 43%) and social networking (30% –> 26%) are down year over year and the big growth area is in the utilities category – find & buy, finances, health, plan, travel, etc.

All these makes the write aspect of the web a big deal because it drives where people spend time on the internet and continues to drive value as it allows people to interact. So the big question for us is, how do we design for mobile creation?

 

Design for One Handed Use

Based on 1333 observations of people using their devices on the street, their postures fall into three categories:

image

and when you look at the two-handed use cases, it breaks down into the use of the thumb or the index finger:

image

which just illustrates the importance of design for use with one thumb.

 

Cross-Device usage

86% of US smartphones used while watching TV.

81% use smartphones and TV at the same time.

20% of time on mobile was in front of the TV.

All and all 68% of consumer smartphone use happens at home. And when people use their mobile devices in front of the TV, they still use the same one-handed posture!

 

Don’t let the keyboard come up (unless there’s no other way)

Typing on mobile devices is painful, so we should try as hard as we can to keep the keyboard away. And here’s some ideas how you might do that:

  1. choose smart default inputs (e.g. use your current location, etc.)
  2. use algorithms to give suggestions (e.g. popular flight destinations from a given airport)
  3. use your locations (e.g. when the default and suggestions fail, use your locations to find nearby airports)
  4. use a map UI
  5. use a touch friendly date picker (like the Google one where you touch start and then end date on one scrollable page)
  6. use sliders

Don’t just put the same mouse interactions onto mobile, target and design for one-handed use!

 

Focused Flows

Think about what your users are trying to do in your application and really make it easy to accomplish those tasks.

“Creativity is people who care enough to keep thinking about something until they find the simplest way to do it.”

– Tim Cook

Making it easier for users to accomplish their tasks also has fundamental business impacts too. For instance, Boingo found a 34% increase in conversion when they dropped the number of input fields by 11!

Try and get down to the core essence of what the users are trying to achieve.

“Booking a hotel happens in 3 taps and a swipe. This is a competitive advantage.”

– Sam Shank, CEO of Hotel Tonight

Sometimes it can take big changes inside an organization for you to really go small on the design of your input forms because companies struggle to let go of the way they had been doing things in the years. As departments built up in the PC-dominated years trying to exert their involvements in the mobile era, you end up with stuff that isn’t focused enough because it’s built off previous models.

 

Cross-Device Usages

52% of US laptop owners have smartphone.

31% of US smartphone owners have a tablet.

13% of Americans own laptop, tablet and smartphone and 90% use multiple screens sequentially and most do so in the same day.

Many people also use different devices at the same time.

image

which means there’s a great opportunity for creating experiences that take multiple-devices into account.

 

Here’s some verbs that map to things that people are trying to do:

  1. Access
  2. Flow
  3. Control
  4. Push

 

Access is the ability to view and interact with contents on multiple devices, e.g. Chrome offers the ability to continue browsing on a new device from where you left over on another, and the back/forward buttons continue to work so that you can transition from one device to another seamlessly. Similarly, Amazon’s whisper sync offers the same seamless transitions with your Kindle-enabled devices.

image

 

But we want more than just seamlessly move content, we also want to seamlessly move our processes, and that’s Flow. E.g. when you search addresses on Google maps on the PC and later on having access to those searches as dropdowns on the phone. This simple example also illustrates how you can use each device for what it’s good for, the PC is good for seeing the big map and entering addresses, whereas the phone is portable, has GPS and audio directions.

image

 

Control allows one device to act as interface for another. E.g. you can turn authentication into a multi-device experience, OneID lets you set one device to unlock only if you send an unlock PIN on another, for instance to log on on the laptop you’ll get a notification on your phone to enter your PIN and unlock the laptop.

image

 

Push is the ability to send stuff between devices. You can use screen mirroring to project contents from your mobile devices to your TV, but experiences of using Chromecast doesn’t take advantage of what each device does well. Instead you want to design experiences that are tailored for each device and how they’re used.

image image

 

As new types of devices such as iWatch and Google Glass start to hit the market, we will have to push even harder to make the user interface simpler to work on those devices.

 

Links

Slides

Recording