The ever-shifting skills required for software developers is exciting, but also comes with challenges. Proactive software developers that work hard, stay engaged, and continually build their skills can accelerate their careers. If you’re curious and you love learning, you’ve picked the right career – you’ll always have something new to learn and conquer.
But doing a university degree won’t be enough to set up your career or sustain it. Software developers need to constantly build on their knowledge and experience if they want to stay relevant and employable. Otherwise, you could find yourself replaced by someone who’s newer to the industry with skills in the latest tech stack.
The sheer volume of technology already out there (and what’s still to come) can be overwhelming. You might be top of your game now, but what about in 10 or 20 years’ time? How does anyone stay up to date?
Let’s take a look at how today’s software developers can future-proof their skills and stay valuable in a constantly changing tech environment.
Start with the foundations
People say there is a lot to learn, but that’s only partially true. There are a lot of frameworks/libraries/technologies, but far fewer designs/patterns/architectures/concepts. Fundamentally-new ideas don’t actually come along that frequently. Learn the concepts and the theories, and map them to concrete technologies.
Give yourself a firm foundation to build on, with technologies that are popular right now, and soft skills that should stand the test of time and are less likely to become obsolete. Tech skills that could make a good starting place include JavaScript frameworks (see our blog on Vue vs React vs Angular), or see The State of JavaScript 2019 for more info on tools and frameworks that are becoming more popular.
But don’t stop there – make sure you keep building on your foundations with new tech skills so you can pivot as needed.
Build on what you know
I don’t know much React, Vue, and Angular, but I do know the fundamental concepts of Functional Reactive Programming upon which they’re based. With this theory backing, I can read about these frameworks and map them back to the theoretical concepts. I have a background and starting point from which to graft knowledge as I learn them.
Each time you learn something new, you’re not starting from scratch. You’re building on years (maybe decades) of experience as a software developer. Most of the time, new technology is related to something you’re already familiar with, so the more experience you have, the less time it will take you to get up to speed on it.
Don’t chase shiny things
If you invest in learning a new technology too early on, you risk wasting your time. A new framework might *look* exciting and promising, but until it’s got a solid following or will solve a specific problem you’re facing, it’s just a shiny thing.
Learn what’s needed as you go
Don’t label yourself an "AWS guy" or a "Java programmer" or a "front-end dev". You are a person: unique, intelligent, capable of learning anything you put your mind to. Pigeonholing yourself with a specific set of skills closes your mind. Focus and specialization is fine, but I’ve never met a programmer that couldn’t learn another language.
Full-stack developers are one of the most in-demand developer roles right now, requiring knowledge that spans front and back-end software development, browser languages, and server languages. Being in demand comes at a price, though, with 60% of full-stack developers learning a new framework in the last year, and 45% learning a new language.
When you need to be across so many areas, you can’t dive deep into all the different things – there’s just not enough time. Instead, learn as you go. Get up to date on the minimum amount needed about the framework, language, or platform you’re working with so you can get the job done.
Choose the right company
We never sit idle, but are always finding new things to try. And that is true of the whole company, across every team, I think. We aren’t willing to settle for older tools and technologies because they’re comfortable or easy. We keep pushing to upgrade and improve, ourselves and our tools and technologies.
The best way to stay relevant is to work for a company that’s innovative, that shares the same goals, and that encourages its people to find new and better ways to solve problems. They’re more likely to embrace new technologies, which will give you opportunities to incorporate this into your projects. But even if you can’t find the perfect job or company right away, there are still other opportunities to explore new challenges, skills, and technologies.
Do your own thing
Personal projects can also look really good on your resume. They show that you have a drive to learn and experiment, and also show off what you’re interested in and what you know. I can only learn so much about your job and skills in an interview, but a personal project that I can look at and play with? I can learn a lot from that.
A lot of the time, you won’t be able to pick and choose your projects and technologies at work. So, do your own thing! Start a side project outside of your regular work hours where you can experiment more freely and try new things.
Consume content
Regardless of your mix of depth and breadth, there are always new things to learn. Getting better at learning is essential.
Stay curious, read a lot, and pay attention to what’s happening in the tech world. Some good information sources include
- StackOverflow - Check out the annual survey and the latest questions to see what’s new
- Job listings - Search LinkedIn and Indeed to see what kinds of skills are currently in demand for software developers
- Reddit - Join the technology-related subreddits that match your interests
- Podcasts - Check out Software Engineering Radio, Coder Radio, Full Stack Radio, ChangeLog and so many more
Don’t sit idle
You do need to actually wield these technologies, and you have to get your hands dirty to truly learn the intricacies, and validate assumptions you have made in your mental model. You need the battle scars. You need to actually try things and evaluate technologies critically.
As a software developer, your knowledge and experience is a valuable asset – but unlike many other career paths, it has an expiry date. Technology changes, practices change, and demand from the market changes, too. You have to stay engaged in the industry and open to learning or you’ll need to play catch up to stay valuable to your employer and stay on top of your game.
Be part of the community
Relish in that feeling of being a complete newbie, as it’s an opportunity to learn. Never say "I don’t know that" or "I can’t learn that". Throw out your "too hard basket" and dive in. Read, ask questions and do.
Often the best way to learn about new trends and technologies is from other developers. You can join and contribute to online communities (like StackOverflow, Reddit, Github, and others), but it’s even better if you can hang out with other developers in-person. Go to local meetups, events, and conferences – you’ll learn a lot and make some valuable connections, too.
Be a leader
If you already have a good breadth and/or depth of knowledge or you’re keen to learn, you can do a lot of good for your team in a leadership position where you have more influence over decisions. Just be careful of your technical skills rusting due to all the meetings!
Moving into a leadership role isn’t for everyone, but for a lot of experienced developers, it’s the next logical step. Leading teams is a valuable skill that can help you stay relevant even if you don’t have the technical skills to write the code needed to deliver a project.
It all depends on your goals
It all depends on how much time you want to devote to software outside of work. Personally, I don’t have much time for learning software outside of work. But I like having a big-picture view of problems, so instead I try to take time at work to learn the fundamentals behind the things I’m doing.
Take a good, hard look at your future and ask yourself some questions:
- Where do you want your career to go?
- Do you see yourself as a software developer forever?
- Will you move into a management role?
- Do you plan to start your own company one day?
- Do you want/need to be across all the latest technologies in order to achieve your goals or can you chill out a bit and learn as you go?
The fact is, it’s really tricky to be on the cutting edge of anything (let alone a fast-moving industry like software development) without making some major life sacrifices. It takes a lot of time if you want to go all-in. So, decide how far you want to go, and what career goals you can realistically achieve without compromising on your other life goals. After all, your life goals are also important!
It’s not just about technical skills
In the end I think the most important thing is to stay curious, because curiosity keeps you interested and enjoying learning. Software development is an ever-changing industry, and if you can stay ever curious, I think that will naturally help you stay ahead of the pack.
Balance out your tech skills with soft skills to make sure you stay relevant and open to all the future opportunities that may come your way. Soft skills are arguably just as in demand as technical skills – perhaps more so. It’s worth investing some time in learning about and practicing better communication, empathy, leadership, emotional intelligence, and other soft skills. For more information, check out our other recent blog on soft skills for developers.
We’ll share more career tips for developers in the coming weeks, including more info on adaptability and soft skills. So, make sure you follow us on Twitter or sign up (below) for our email newsletter and the latest updates.