Controlling your novelty-seeking behavior

Getting started with a new technology is always exciting. You see all the things that it does right, unlike your current tools. The tutorial is fun, you have new toys to play with and you’re looking forward to cracking open that book or course. The first wins come in fast, giving you a rush of confidence and boosting your ego.

Unfortunately, since you don’t have any experience using that technology on a large, demanding project, you don’t see its flaw yet. If you have a more severe case of novelty-seeking behaviour, chances are that as soon as things get tough you’ll have switched to the next technology anyway for your new project, leaving a large pile of technical debt in your wake.

How do you break this cycle and focus on mastering technologies instead of just skimming?

You have to become a finisher: someone who has realistic goals and a habit of finishing what they start. Finishing projects is a habit like any other and can be trained. But to have a chance to be a good finisher, you need to know where you are going. If you know what is the specialization you want to focus on and what you wish to learn from your current project, you won’t wander aimlessly from technology to technology.

Also, you need to start each project with a deadline and a clear objective or you won’t be able to tell when it’s finished. If you get into the habit of escaping every time things get too hard or stopping projects before you reached your goal, you’ll start thinking that giving up is inevitable.

Becoming a better finisher doesn’t mean that you can’t leave space for experimentation and fun. Curiosity has an important place in learning and helping you discover new things, and playing with new technologies can give you ideas to improve what you’re working on. But if you want to go forward, the majority of what you learn should be hard skills that help you get better at subjects that matters to you.

On the other hand, it’s unwise to finish projects at all cost: if some goals were unrealistic, or you started a course or a book that did not live up to your expectations, it’s a good thing to move on to something that will help you learn better.

Developing your skills also requires getting comfortable with delayed gratification. You need to accumulate many small wins in the same field to reach mastery, even if those wins are not as immediately visible as adding a whole new skill to your resume.

When you start out with a skill, wins comes in quickly since everything is new. As time goes on, you’ll need to work harder since you’ve understood the basis and you’re often using familiar concepts. If you’re moving frequently to new technologies seeking those quick wins, you’ll start over and erase a good part of your progress each time.

Finally, you have to get used to working hard mentally and focusing on a subject. You probably won’t understand everything the first time and will have to absorb the concepts of a new technology or pattern over many learning sessions. It’s normal to feel dumb and struggle many times when you’re really learning, but it’s worth it in the end. You’ll be a better software developer for it.

Every programmer is self-taught

There are many ways to become a programmer beside getting a computer science degree. If you’re on that less conventional path, you may be wondering what you should do to catch up to people who do have a degree. How can you compete with someone who spent many years in a classwork learning about computers and programming?

In my experience, there is no such competition: what matters is what you can do with the skills you have. There are various paths to becoming a developer. In fact, nobody learns how to be a web developer or an Android developer from school, except maybe at bootcamps.

Everybody working with those technologies is largely self-taught and improve on the job and during their free time. I took many classes related to computers during my electric engineering degree, but few of them featured web development specifically. Maybe you’ll get a class or two or an elective on these subjects, but this knowledge will most likely be outdated by the time you use it.

Well, if a degree does not teach you a specific niche like web programming or mobile development, what does it teach you? The role of a degree is to make you a generalist with a broad array of programming and computer-related knowledge. You’ll learn more about subjects such as maths, databases, algorithms, networking, programming patterns and languages.

You won’t be an expert in any of those subjects: you’ll know that they exist, but you will need to perfect these skills and use them in the real world for them to be really useful. On the other hand, all those skills are a useful toolbox you can dig in when you start a project and need to solve new problems. You can use what you learned as a starting point to go deeper and improve your knowledge as needed.

If you didn’t learn this at school, nobody is stopping you from acquiring this knowledge in other ways, such as online classes or books. There is nothing different about the knowledge you get at school: the focus on learning makes it easier to progress at school , but you can learn by yourself.

Those skills will really stick when you start using them to complete real projects. You’ll start specializing a few areas based on your interests, your job or a deliberate plan and grow from there. You’ll be part of a team where everybody has a different mix of skill and knowledge to build on. It would be boring and ineffective if everybody had exactly the same background!

What you learn in school is incomplete anyway. You’ll work on tiny projects to master specific concepts, but in real life you don’t stop after you shipped the first version. You’ll learn how to handle maintenance, bug fixes, deployment and how to work with a team across many disciplines. You will keep learning new skills for every project you start working on and every bug you fix.

What’s important is learning how to learn so you can always catch up on a subject or a new technology as needed. It’s easier if you keep learning a bit all the time and build a habit to learn, but it’s never too late.

Be more productive with my 5 Hacks to Learn New Skills email course

Some people seem to be superhumanly productive: they’re always up to date with the latest technologies and techniques, work on cool projects and contribute to open source without breaking a sweat. You’re envious about the productivity and efficiency of all those great hackers you see on Reddit and Hacker News. Reaching their level of software mastery seems like an insurmountable task from where you stand.

“How can they produce so much consistently, at such a high quality?”

You know you could learn interesting skills, be more productive and take control of your projects with the right tools and techniques, but you don’t know how. Late-night sessions with too much coffee were no help, and you don’t know where to go from there.

What if you become a great software developer that keeps learning and delivering interesting projects? What if you could pick up all the new frameworks and API that arises every week with ease? Learning new skills is hard, so you need all the help you can get to rise to the challenge.

ChallengeAccepted

Subscribe now to receive my 5 Hacks to Learn New Skills email course directly in your inbox and you’ll level up your learning and improve the skills that you care about.

If you plan right and build good habits in your life with the help of my hacks, you’ll have more control over your time and energy. You will be able to learn all those interesting skills on your bucket list that you pushed aside, and finally keep up with all those JavaScript frameworks.