Recently, I did something that I would never have dared doing only a few years ago: I was interviewed on the Developer on Fire podcast!
I started out my career being very shy and afraid to speak up. I’m more at ease with the written word than in front of a crowd, but I’ve made a lot of progress with being more outspoken…in French.
Of course, when Dave from the Developer on Fire podcast asked if I wanted to be on his show, I said yes right away. It was an interesting experiment, and we had a great talk about my story, delivering more value, building better software and weaving looms.
I’ve received an interesting question from a reader of the blog last week about evaluating your skills.
Do you have some resources that would help me evaluate my own computing skills into categories like weak in one area or strong in another area. […]
What I am wanting to do is start reviewing my own existing computing skills (since college) so I can reflect an up-to-date resume and my social media profiles.
Unfortunately, it’s hard to compare programming and software development skills. Each project and problem domain is different: the basics in a technology are shared by everyone, but once you’ve passed a certain point your experience can vary wildly. For example, I work on large software that’s been around for a long time, has long-established traditions and various versions in the wild. That’s a totally different context than a startup that’s just getting started, needs to prototype new features quickly and don’t worry about breaking things. The skills you learn in both environments will be valuable, but they are not the same ones even when they share a framework on a programming language.
There are also no recognized tests and classifications in the industry in general. If you’re working with technologies from vendors such as Oracle, Cisco or Microsoft you can be certified, but that’s not true of all technologies. Also, some freelancing platforms like Upwork have tests to help rate their freelancers, but they usually evaluate syntax minutiae and knowledge of API methods. This is a poor indicator of real programming abilities. If you’re not working every day with a language, you won’t know all those details by heart, but they can be looked up quickly anyway as you need them.
Still, it’s not easy seeing where you stand with skills you didn’t use recently. But if you worked on a large project using a given skill, it’s a good bet that you’re strong in it. I’d say the best way to check if your skill are up to date is to read a recent book or listen to a few talks on the subject to see how things are currently done. Some of your knowledge may be slightly dated, but the basics are probably still solid and would require only a little work to update if you need to use them. Besides, many shops are still maintaining legacy software or don’t use all the brand-new features of a language to keep things simple: they won’t mind that you’re not familiar with the latest syntaxic sugar.
On the other hand, some frameworks go through a total rewrite like Angular in JavaScript or Symfony in PHP, or are totally dropped from favor like ColdFusion or ASP classic. In that case, you’ll probably find out during your reading that getting up to date means starting over from scratch, and it may be better to just drop that skill or move to a new framework. Frameworks are more susceptible to this that programming languages, since languages move more slowly and must care more about maintaining backward compatibility if they want people to upgrade.
So, do you have old skills that you wish to upgrade? Please share in the comments!
Working on the same kind of project with the same old technologies you’ve already mastered is easy and comfortable. You’ve been telling yourself that you should move on to a more modern web development stack or learn a new library for a while, but you’re having trouble just getting started. It’s easier to dream about how cool it would be to learn that skill, or to keep debating which skill to learn next. Meanwhile, your pile of brand-new books is starting to collect dust…
Most people go through this phase when it’s hard to start moving at one point or another in their life. I wrote previously about planning your learning, and I believe it’s important to know where you want to go. But on the other hand, sometimes you have to roll up your sleeves and just do it. I don’t believe in waiting forever and leaving a ton of ideas pile up on my bucket list. If something is really important to you, you need to find a way to learn it right now and not when you magically have more free time.
Just do it!
When you feel stuck, the best strategy is to just throw yourself in it and get started on learn that new skill you wanted to master. Just pick a book, a course or a small project and get going to build momentum, even if you feel like you suck at first. The planning can come in later once you’ve broken the ice. You can’t learn everything for book and lectures: as an avid reader, I’m very familiar with the drive to collect a lot of information before getting started, but you need to avoid paralysis by analysis.
Give yourself no choice to learn: volunteer for those new projects at work, start a new project with a friend or share it with the world. Even if it’s not exactly what you wanted to learn, you’ll get into the habit of regularly learning new things, and you can use this to learn skills that are more important to you.
If volunteering for large projects using skills you don’t master yet is uncomfortable to you, start with smaller steps. You can instead volunteer to fix a small bug in an area of the software you’re unfamiliar with, or try to improve your own tools and procedures. You’ll grow more confident and you’ll be able to tackle larger and more impressive learning challenges with time.
Prioritizing your goal
If you don’t have the chance to learn new skills at work, you need to find the time to do it during your limited free time. Even if you want to learn many skills, you can’t work on all your goals at the same time, scattering your time and energy on too many pursuits.
Adding sometime new to your schedule requires prioritizing it over other commitments and habits. You can do a lot with only a little bit of time every day, but you need to find it. Maybe you’ll be more quiet on social media for a while, or will need to give up some gaming time or nights out for your project. Take a deep look at your current routine to see where you could find a bit of extra time.
This strategy is best used on goals that really matter to you, otherwise they’ll be hard to prioritize. There are many skills on my bucket list that I know I’ll need to learn at some point, but those are not a priority at the moment. I pushed them aside since I can always learn them later, or as it becomes an emergency. As you grow more confident in your ability to learn, you’ll be less worried about having to learn some skills just in time, and you’ll be able to focus on skills that bring in more long-term benefits. Just make sure you keep learning once so you don’t have to start over and get the learning habit going again.