9/14/20
Never Stop Learning
by Dan Moore
Dear new developer,
Once, at a professional lunch, I asked some senior engineers and managers what advice they’d give to a new developer. One answered, "Never stop learning."
Like most good advice, it’s simple but not easy. It’s simple to remind yourself you must always be learning and improving, but I often find it difficult to carve out the time. However, you should do so; trying to catch up is harder than investing time regularly and staying current.
If you are not learning new technologies and techniques, software development will eventually pass you by. I’ve seen it happen over the years. Perl used to be an in-demand programming language. Now there are fewer job listings mentioning perl, which I consider a reasonable proxy for demand. This tells me that perl is in decline.
You can still make a great living when working in a diminishing language, but opportunities become fewer and fewer. You may need to move or decrease your salary expectations.
There are still COBOL developers, but every year fewer companies need their services (barring unexpected events such as a rewrite of an unemployment insurance system). And it’s not just programming languages which regularly rise and fall in usage. The software development process has changed even in the decades I’ve been working, including sea changes such as extreme programming, the agile methodology, and infrastructure as code. An example of a recent revolution is the DevOps mindset.
Why do people stop learning? From observation and personal experience, I see the following reasons:
- Bored: they simply aren’t interested in learning.
- Frustrated or blocked: they can’t learn what they want to because of constraints.
- Tired: they have too much going on and they need their energy for other parts of their lives.
- Comfortable: they know what they need to know and are “punching the clock”. They are doing good work now, but not improving.
- Shifting priorities: other things take precedence—a new baby, health issues, or a family emergency, for example.
All of these make sense. You have a job to live your life, you don’t live your life to succeed at your job.
However, a shift in perspective, whether a new job or a new way of looking at your current position, can remove obstacles preventing you from learning. For example, if you are frustrated because you’re a software engineer in test but you are really interested in DevOps automation, find a tool to run your tests automatically. Talk to the infrastructure team and see how you can help test their “infrastructure as code” deployments.
If you want to incorporate learning into your daily life, the short answer is “Google”. The internet is full of information about software development.
A longer answer starts with your motivation.
- Think about why you want to learn. Is it for fun? To find a better job? To be better at your current position? To test out your theories? To solve your own problem, scratch your own itch? Because you want to make the world a better place? Finding this intrinsic motivation will help you continue when you encounter difficulties.
- From the why comes the what. What can you learn that will help you achieve your goal? Is it a business domain? A new technology? An old technology? A framework? A mindset?
- After the what and the why comes the how. Do you learn best watching videos? Reading text? Working through code tutorials? Blogging? A side-project? Reading code? Try each of these if you don’t know. Find a method which provides useful knowledge that you remember.
- Finally, execute. Begin. Use the why to help maintain your motivation. Use the what and the how to build a plan.
Make sure you make time to learn. Options for carving out time to learn include scheduling daily time, building something yourself, ordering books on technology for bedtime reading or participating in online communities.
Figure out how you want to learn, and never stop doing it.
About the Author
Dan Moore has over 20 years of experience as a developer. His roles have included employee, contractor, community member, engineering manager, and CTO. He currently leads developer advocacy at FusionAuth, a Denver company, building software to handle authentication, authorization, and user management for any app. In 2018, Dan started a blog exclusively focused on helping new developers “level up” and has published over 150 posts to help them improve their skills and avoid common mistakes. He resides in Boulder, CO. You can find him on Twitter at @mooreds.
This article was contributed by Dan Moore, author of Letters to a New Developer.