This post is a chapter from my book, The Complete Software Developer's Career Guide. I'm writing the book live on this site week-by-week. If you enter your favorite email address here, I'll send you the prior chapters and get you caught up - then send every new chapter as it comes out!
It’s a wild world of ever-changing technology.
What was new and hot yesterday is old and crusty today.
Dinosaurs actively roam the halls of software development organizations, and you don’t want to be one of them.
The key to not going the way of the Dodo Bird is to keep your skills up to date.
You don’t have to learn every new-fangled technology and programming language that comes along—in fact, that would be impossible—but you do have to keep your skills sharp.
So how do you do it?
No Plan Is a Plan, Just a Bad One
If you don’t have a plan of how you are going to keep your programming skills up to date and you don’t have a plan to advance your career, it’s just not going to happen.
As someone who does a considerable amount of personal training and coaching, I can’t tell you how many times someone has told me that they are going to lose weight and get in shape.
When I ask them “how?” They say, “Oh, I’ll cut back on the calories and exercise more.”
That is not a plan, or if it is, it’s a bad one.
You need a real plan that you can follow and track so you know if you are off course or not.
A good plan is specific.
If you ask me how I am going to lose weight or get in shape, I’m going to say something like this:
“First of all, I’m not going to lose weight. I am going to work on losing fat while maintaining lean body mass. I will do this by cutting my calories to a 500 calorie deficit per day, eating a mostly ketogenic diet, running four times a week to increase fat oxidation, and lifting three times a week to keep as much lean muscle mass as possible.”
That’s a plan.
See the difference?
You need to develop your own plan for how you are going to advance your career and keep your skills up to date.
The rest of this post will give you some ideas of what you can incorporate into your plan, but ultimately it’s up to you.
I’ve found that one of the best ways to stay up to date in the programming world is to read programming blogs every morning for about 30 minutes or so.
Throughout my career, I’ve had a changing list of software development blogs which I’ve read for the first 30 minutes of my day.
To some degree, this allows other people to do much of the work for you.
By reading other software developer’s blogs, you gain insights into what is new and what is important in the programming community, and you might even learn a thing or two as well.
Usually, if something is important, you’ll find someone blogging about it.
Blogs also provide you the opportunity to read about some of the difficult problems in your particular area of the software development world and what the solutions are to those problems without having to struggle through them yourself.
You should always be working your way through at least one technical book.
At that pace, I’d get through one to two technical books each month.
Reading that many books each year ensured that my skills were constantly up to date and that I was improving as a technical professional.
Now, just reading books cover-to-cover isn’t the best way to learn, but getting in the habit of reading and working your way through new technical books all the time is a great way to broaden the base of your programming knowledge and stay current on technology.
For this kind of reading, try to pick books that you will benefit the most from or that will have a lasting value.
Picking books which are directly relevant to what you are currently working on is a great choice because you’ll have immediate, applicable value.
Picking books about software development methodologies or design patterns and architecture are also good, timeless choices.
That doesn’t mean you should never read books on new technologies, but make sure if you do, you also spend time actually learning by doing, not just reading.
Picking a New Thing to Learn
Always be learning something new.
I don’t care how skilled you are or how much education you have, there is always something new to learn.
Have a plan for what you are going to learn next, so that when you finish learning one thing you can move on to the next thing.
Evaluate your current skills and where you want to go, then decide what new things you should learn and what priority and order you are going to learn them in.
I always have a list of the books I want to read and I keep it up to date so that I always know what book I should read next.
This list helps me make sure that I don’t waste my time and only read high-quality books.
Do the same with the skills in your programming career.
Decide what technologies, programming languages, or frameworks would benefit you most and put them on a list of things to learn.
Then make sure you are always working your way down that list.
You’ll be amazed how many new skills you can pick up in just a year’s time if you are constantly devoting a dedicated amount of time each week to learning something new.
You may even want to schedule this time each week explicitly on your calendar.
One word of caution, though: don’t learn things you aren’t ever going to use.
Be strategic in what you decide to learn.
I know many developers who binge-watch Pluralsight courses, read technical books and learn programming languages without any real purpose in mind.
This kind of extra knowledge is not bad, but because it is unfocused and doesn’t move them towards their goals, much of it is wasted effort.
If I spent months learning a new programming language that I’ll never use, it doesn’t really help me much in advancing my career or reaching my goals.
Sure, I might learn a little and it might broaden my perspective, but that same time would have probably been better spent learning something that I will actually use.
If you want to stay sharp, you have to keep on learning.
Like I said earlier, technology is moving at an extremely rapid clip in today’s environment and I don’t think it’s going to slow down anytime soon.
If you are going to spend so much time learning, don’t you think it’s worth investing some time in learning how to learn better? How to learn quickly?
I used to approach learning in a haphazard manner until I made the goal to create 30 Pluralsight courses in a single year.
In order to produce that much content and to learn that many technologies, programming languages, and frameworks in that short period of time, I needed to develop a system for learning quickly.
So, I took everything I knew about learning and what was working best and I actually made it into a system.
You don’t have to use my system, but you do need to have some system for learning quickly.
You can even take parts of my system and combine it with your own, but you need some strategy for learning quickly if you want to stay ahead.
I’d encourage you to take the time to really invest in learning how to learn since it is a skill that will be valuable to you for the rest of your life.
Another great way to stay up to date and pick up the highlight reels of what is new and noteworthy in the ever-changing field of software development is to attend events.
These events could be conferences or code camps, but they could also be less formal meetups or even events that companies like Microsoft put on to showcase their new technologies.
You can spend a day at an event, watch a few presentations and gain a really good understanding of how a new technology or tool works or how it can be applied, without having to read a whole book or slog your way through tutorials.
There is something about seeing someone demonstrate a technology live and watching them show you code examples that tends to make things “click” much faster than some other mediums.
When I was a big .NET developer, I’d often attend the Microsoft events for developers in my area, which would have five or six presentations on new technologies or tools for developers.
I found that I could get a really good gist of what was new and important and the basics of those technologies in just a day because it was a highly curated amount of information.
Reading the News
Normally I’m against reading the news.
I honestly think that, for the most part, it’s a huge waste of time.
Most of the news out there doesn’t really affect your daily life in any significant way.
I try to avoid information that I can’t act on or that doesn’t matter in my life.
The exception to this is, of course, technology news, especially when it’s related to programming.
I like to utilize these sites to get a pulse on what is happening in the programming world.
Usually, I can see trends like an increase in people writing about a specific programming language or technology which can help me to plan for the future and to see where I might need to shift my own career course.
You can definitely waste a large amount of time reading the news—even technology news—so, make sure you timebox this kind of activity. Specific news feeds on what you are interested in can be a great way to stay up to date on what is going on in the field.
Finally, I’ll state what should be the most obvious way to keep your programming skills up to date: program.
And do it a lot.
I’ll talk about this more in the Side Projects chapter, but you should always have some kind of side project you are working on.
The more you code, the less likely your coding skills will become rusty.
Seems like common sense, but you’d be amazed by how many software developers end up getting into situations where they feel their skills are out of date, and when asked how often they code, they say “not much.”
So, make sure you are dedicating some time each week, or preferably each day, to actually writing code.
John Resig wrote an excellent article on the subject called “Write Code Every Day.”
One great way to do this is to be always working on small projects.
You can combine a few of the ideas in this post together by picking out something new to learn and working on a small project with that technology or programming language.
Just make sure that the projects are small enough that you actually complete them.
One of the best decisions I made in my life was to start finishing every single project I undertook.
I became a finisher and it made a huge difference in my career and life in general.
Don’t Get Too Comfortable
Remember, no matter how secure you might feel in your current job or environment, it’s important to not get too comfortable.
I know programmers who worked for the same company for over 20 years, so they decided not to invest in keeping their skills up to date.
They just kind of relaxed and thought that they’d be OK since they had job security and there was no need to learn anything new.
And then, when unexpected layoffs happened and they were suddenly thrust into a workforce where they were 20 years behind in skills and knowledge, they quickly realized the error of their ways.
Don’t let that happen to you.
Make an active plan to keep your skills up to date.
This post is a chapter from my book, The Complete Software Developer's Career Guide.