There is an endless stream of new challenges to tackle in technology.

The frameworks you know will change. The tools you feel so comfortable using will evolve. Technologies will go in and out of style. You might want to switch to a different area in tech when your interest wanes in another.

Working in engineering means you’re always learning something new to keep your skills fresh.

While Angular was popular five years ago and most frontend jobs wanted Angular skills, now the market has changed. React has overtaken all other frontend frameworks as the hot new technology.

While Rails was popular five years ago, now Node and Python are dominating job descriptions.

Keeping your skills fresh is one of the key parts to being a standout engineer and building a lasting career.

However, this might seem challenging when you start out in your career. I remember looking at everything I had to learn and feeling so frustrated when people would discuss some new technology that I didn’t know.

And as soon as I felt competent in one framework, another one would become popular. I felt like I would never catch up.

But this is also one of the best parts of being an engineer – you will never be bored. And this is a tool you can use to set yourself apart from the competition.

Learning how to learn like a developer is nothing like how you’ve learned in school. There will be some reading, and some courses. But the majority of time will be spent building.

How to Learn by Doing

When you were a child, you learned by doing.

You started speaking even if it wasn’t in full sentences. You started drawing by doing. You didn’t read about it as an infant. You weren’t reading the ‘Baby’s Guide to Fingerpainting 101.”

You started walking by practicing. And this helped you to grasp new concepts quickly. You were always doing.

Generally, in engineering, concepts will start to stick if you focus on building rather than memorization.

When I started out as an engineer, I would read books constantly and make flashcards. I can’t tell you how much time I spent making flashcards. I thought buying a new book or online course would teach me how to code and make me a superstar engineer. But that never happened.

Looking back now, I’m not sure what I thought those flashcards would do.

After months of trying to memorize syntax and definitions, I was right where I had started. It wasn’t until I started building that my skills started accelerating.

While I loved reading engineering books and still do, the majority of my time is spent skimming the book and then trying out a new concept right away.

This is a more painful way to learn. I won’t lie to you – it’s scary. But nothing helps build new programming skills quite like building something out yourself. The fastest way to learn to code will be by building.

But how can you do this?

Escape Tutorial Hell

When I was learning how to code, I spent months following tutorials. I would watch the tutorial and follow along step by step. Never attempting to do anything on my own.

If a tutorial got too difficult, I would switch to another one. I would spend hours every day watching tutorials.

I tried to use the learning skills I had from college and apply them to coding. And it didn’t work. Learning how to code is about active learning. Not passive.

But it was so easy following tutorials. I never felt stupid or felt any imposter syndrome. I would feel like I had accomplished something at the end of the day.

Meanwhile, I was absentmindedly following along with the video and not learning a single thing. I wasn’t pushing myself. If you want to learn new skills fast, you have to push yourself.

After around six months of sticking around in tutorial hell enjoying the warm weather, I realized I had learned next to nothing. I had no skills. I had prioritized flashcards and passively watching tutorials over actually building anything.

Meanwhile, friends that had started working on projects right away were whizzing right by me at a pace I thought was incredible.

I felt so frustrated. I couldn’t even create a basic application. If it wasn’t in a tutorial with step by step guides, I couldn’t do it. It wasn’t until I started focusing on building something small on my own that coding finally clicked for me.

Step away from the tutorials as soon as you feel comfortable. Tutorials are great when you’re starting out. But at a certain point, they only slow down your learning if you rely on them too much.

This applies in every step of your career. If you’re a junior engineer, pick a small project. Don’t use a tutorial. Try to figure out how to build it on your own. Don’t feel bad if you can’t build an entire application yet - that’s fine! Start with small projects and build up.

And if you’re an engineer and have a few years of experience and want to switch to machine learning from backend engineering, for instance, pick a small project and start coding.

Always Be Learning

Another skill a standout developer must have is to become an endless learner.

When you first start learning how to code, the amount of material you learn every day seems astronomical. You’re picking up new concepts constantly. It seems like there’s an endless stream of information to learn.

Ideally, you’ll always be learning something new no matter how long you’ve been an engineer. But this can sometimes level off.

You begin to feel comfortable in a job and the nagging feeling that your skills have started to stagnate starts to set in. Boredom quickly follows.

Keeping your skills sharp will keep your employment status stable even in tough economic times.

Here are a few ways you can always be learning.

  • Write code. A lot of it.
  • Find developers who are better than you and work with them.
  • Ask to switch teams at your job if you feel you’ve stagnated.
  • Contribute to open source projects.
  • Attend meetups and conferences.
  • Subscribe to newsletters.
  • Start connecting with developers on Twitter.
  • Read constantly.
  • Build side projects.
  • Pursue new certifications.
  • Take online courses.
  • Take some time off. You can’t take your PTO to the grave.
  • Read blog posts.
  • Find a mentor.
  • Share your knowledge.
  • Write blog posts.

Some of these things you can’t do in your spare time. And that’s OK. We all have personal lives. Focus on finding ways you can be learning during your work hours like switching teams, finding a mentor or becoming a mentor, and so on.

Being a standout engineer doesn’t mean you need to spend all your spare time coding. Coding is still a job. It is your 9-5. But you can choose to be a builder at your job.

When you’re working on a new skill, step away from the book and course. Try to pick up tasks at work that use the new skills you want to acquire right away. This will enable you to build skills quickly and efficiently at work.

Get Comfortable Being Uncomfortable

While learning new skills, you also need to push yourself. You need to get comfortable being uncomfortable.

Before I became an engineer, going through tutorials felt easy and welcoming. I rarely felt overwhelmed. I would use Codecademy and other similar platforms and think I was making progress. But I wasn’t.

After over 6 months of tutorials, I wasn’t much further along in my coding journey than when I had started. I was still a beginner.

When I started working as a junior software engineer, I was in a constant state of fear. I felt like I could never get enough work done. It was a terrifying feeling. Yet I suddenly learned faster than I ever had in my life. My brain felt like a sponge.

Find opportunities for growth. If you continue to do the same thing and feel comfortable, you’ll never find the opportunities for growth. If you take on the same tasks at work and continuously work on the same things, you won’t be pushing yourself and growing.

Always be biting off more than you can chew. If you spend all your time taking tutorials, it will begin to feel routine and it won’t be a challenge anymore. And you won’t be learning.

However if you choose to push yourself, you’ll learn faster. You’ll be uncomfortable which means you’ll be growing.

Much as if you were practicing piano, if you kept practicing the same piece over and over again because you were confident with it, you wouldn’t be improving your skills by learning more challenging pieces.

The same principle applies to most things in life.

When I was trying to get my first dev job, I had to decide between a position at Apple and an apprenticeship at a small startup.

The role at Apple was going to pay more and I knew other people who worked there so I would have built-in friends and a support system. However, it was half QA and half engineering, with the opportunity to move to full time engineering if things went well.

The startup job was unstable at best. Nothing was guaranteed. They didn’t have another engineer who identified as a woman at the company. I would be the only woman in the entire engineering team.

Not to mention – this wasn’t a job offer! It was an offer for a three month apprenticeship with no guarantee that I would have a job after. I would have to move to the city, sign a lease, and hope that I could somehow afford the rent if I failed the apprenticeship.

And this was back when coding bootcamps were at the largest point of the bubble. Students were graduating in San Francisco and the market was more saturated than ever before. Job postings frequently included “No bootcamp grads” which was highly discouraging.

I knew if I started at Apple, it would be good for my resume. I’d be making more money as well. But I couldn’t stop thinking about growth and mentorship opportunities that the startup offered me.

Sadly, I had no idea what to do. I had been sold the idea of a high paying dev job during my coding bootcamp. Not a low paying apprenticeship that might not even lead to a job.

I ended up accepting the three month apprenticeship. Most of my friends thought I had lost it. My own family thought I had lost it.

I suddenly had three months to prove myself at the apprenticeship. I quickly lost count of how many weekends and late nights I worked. I was terrified.

The pace was fast and I was blown away by how little I knew. I felt so nervous some days that I wanted to call in sick. I would fantasize about my train getting delayed underground so I would be forced to miss work. Every standup felt like torture because I felt I wasn’t doing enough.

Meanwhile, friends that attended the same bootcamp as I had were discussing their cushy entry level jobs at Apple and how they got to leave at a reasonable hour every day. Not to mention, they were paid so much more!

After the first two months my manager asked to have a meeting about the apprenticeship. I was convinced they were going to fire me.

Instead they told me that they were ending the apprenticeship program a month early and they were going to offer me a full-time software engineering position at the company. I can’t describe how happy I was that day.

I continued throwing myself into my work. I would volunteer for tasks that I didn’t feel ready to complete. If I didn’t know how to do something, I would say I could do it anyway. A year and a half after that, I was a senior software engineer at the same startup.

Would it have been easier if I accepted the position at Apple? Absolutely. But the engineers I knew that accepted the Apple position never had a mentor like I did to push them and challenge them to improve their skills.

In the long term, they ended up spending more time recovering from the lost learning early on. Some are still stuck with the same entry level title years later.

Depending on your goals, that might be fine for you. And that’s okay. But I wanted to become a standout developer with an exceptional career. And I’m guessing if you’re reading this, so do you.

Was it risky to accept the startup job? Absolutely. Most people thought it wasn’t a good move. But I chose to be uncomfortable and it paid off. Did it feel comfortable? Absolutely not. I probably aged five years in that role.

Choose discomfort. The biggest most rewarding success in life happens after hard work. Put down the tutorial and pick up a task you don’t know how to solve.

Deep Work

Coding is a job that requires deep concentration. Switching context to check your phone or social media platforms will be detrimental to the amount of work you can get done in a given day.

Most people will work for a few minutes and then check their phone. If the average employee spends 8 hours working each day, and spends two hours or more being unproductive, you can quickly become known as an engineer who gets things done by simply spending your work hours actually working.

By building a habit of focus and deep work, you’ll become an engineer that stands out from the crowd. Creating this habit will also show that you have an impenetrable work ethic.

How long can you go without checking your phone or Facebook or Twitter? Five minutes? Ten? Fifteen?

If you haven’t read it, pick up a copy of Deep Work by Cal Newport. Start small. Try to focus on one task for 20-25 minutes without interruptions. Put your phone on airplane mode, close all unnecessary tabs and put a big sign on your door that says ‘DO NOT DISTURB.’

Start building this time up. Try to work up to a 45 minute uninterrupted session. In such a distracted world, the ability to do this is rare and the amount of work you’ll find you can suddenly get done in a short time will be shocking.

There are many apps that use the Pomodoro technique that can help you stay focused. Try to experiment with a few and see what works for you.

Wrapping Up

Building a standout career as a developer is all about becoming a life long learner. If you can use the strategies that I've shared above to grow your skills, you'll always be employed.

This blog post is an excerpt from my latest book, The Standout Career. It's available for pre-order now.