What you are is what you do

We define our work and our skills using various labels. Right now, I could say that I’m a software developer, a programmer, a product owner, a web developer, an Android developer and all those would be true. Still, those labels don’t tell you much about what I really do, or how much experience I have in each of those fields. Some people use labels that sounds way cooler such as ninja, samurai or hacker, but it doesn’t give then more skills.

Dreaming of adding an extra label to the list is an easy shortcut. I like to think that if I had all the time in the world, I would hack hardware and master all the latest buzzwords in web development, but that’s wishful thinking. I’m sure you also have a long list of things you wish you could do. Nobody can do it all: being an expert in many fields is demanding. Just maintaining your skills and keeping up to date takes work, not to mention learning new skills.

You are what you work on and keep practicing. Time is limited, so you can’t lie to yourself and pretend to be something you only do once or twice a year. Fortunately, this is great news if you want to earn a new label: you can do the work and it will come. You just need to do more of what you want to become, and less of what you don’t want to be.

It’s easier said than done, but if you’re aware of this you can use it to keep working toward what you want. You can drop being a Twitter or Instagram specialist and replace it with something more satisfying to you, like being a security specialist or an open source contributor.

This need real work and practice, and not just going through the motions. You must stretch the limits of your knowledge and try new things, not just read about it or listen to podcasts. Good practice is often frustrating and hurts a bit.

To make a skill part of your life, you don’t need to spend hours on it every week, but it needs to be a regular occurrence. Building a habit of doing a bit every day or every week is a perfect way to grow into a new skill. If you keep doing it, you’ll eventually become good.

This also means that some of your skills will decline with time as you use them less. Especially with technology, things evolve so fast that you won’t be up to date in everything that you ever did. You’re allowed to let some skills go, and it doesn’t mean that you can’t get them back as needed, since you won’t be starting from scratch. You can’t focus on everything at once, but all those previous experience will add to your overall knowledge, making you a better developer.

Subscribe now to receive my 5 Hacks to Learn New Skills email course directly in your inbox. You’ll also receive weekly updates about learning and growing as a software developer.

Your job will never be done

As a software developer, you have to become comfortable with the fact that your work is never truly done. The software you create will always be a work in progress. When you code that last feature or fix that last bug, another one will pop up soon enough.

Also, as you keep learning, you’ll find better patterns that you want to use, or new standards that you want to implement. If you don’t stop yourself, you’ll quickly go down the rabbit hole, only waking up after you’ve sunk many hours to refactor your whole code base. At some point, you have to let it go and ship anyway, because it’s never going to be perfect.

Good software is like a garden. You can pull all the weeds and clean up, but be quick to congratulate yourself because it will stay neat for approximately a day. After this, new weeds will have grown and you’ll have to start over again. Perfection is fleeting in software and in gardening: the best you can do is making sure it’s not overrun by weeds and bugs.

Likewise, there are new languages, frameworks and tools coming out all the time, and you need to keep learning to stay up to date. You don’t have to jump on every bandwagon: many skills can be learned as you need them. On the other hand, changes like new browsers and OS versions will force you to adapt even if you would have preferred working on a new feature instead.

It’s humbling to let go if you’re a recovering perfectionist. When you started out, small problems could be “solved”, and a class could be “completed”, but real life is more complex than this. Life will throw you curveballs, and you won’t be able to reach inbox zero. It won’t come easy at first, but stay mindful that you’re doing your best, but can’t do it all. You’ll learn to be at peace with it, but even this is always a work in progress.

What is the next step when learning a new skill?

stairsGetting started with a new skill is hard, but the steps are clear. You’re completing a course or a tutorial , and someone else laid out a list of exercises you have to master as a beginner. But what can do after you’ve finished that first application to keep learning? How can you improve on that new skill instead of letting it gather digital dust?

There is often no clear progression after those first steps, and it’s easy to get discouraged and fall off. A lot of the material you’ll find is focused on the somewhat experienced developer learning a new framework, and not on learning what’s required to become an expert. There is a gap at this point that you need to fill yourself so you have new material to learn when you’re ready to continue.

You have to trust that you can build your own path at this point. Nobody can tell you everything you must learn, because you need to learn from your own experiences. At this point, you’ll deliberately seek out information that may not be directly related to the subject, but that you can integrate with what you already know.

For example, if you’ve learned AngularJS, you can learn more about HTTP, JavaScript, or the design patterns that were used to build the framework. Both theory and practice are important: you need to understand how things are done, but be able to use that knowledge in your own projects.

You also have to challenge yourself and deliberately focus on learning hard things and growing if you don’t want to stay stuck or give up on your new skill. The default is to fall back on your existing knowledge and habits, but those will end up being a crutch. Try out new ways to do things, or explore another language to gain some perspective.

If you’re always working in the same environment, growth can be harder to find. Stay curious and investigate when you encounter something you don’t understand. You can also take advantage of the occasion to improve your soft skills such as writing clear code and comments, or coaching another member of your team. There are many ways to learn, but you have to look for them and plan to learn instead of leaving it to chance.