How Do You Do It? Continuous Learning as a Software Developer
The only constant is change. Here’s how I stay up to date with the latest and greatest
A couple of weeks ago, my colleagues at work asked me, “How do you stay up to date as a developer?” This led me to reflect on the different ways I stay updated on all my fields of interest in the programming world and discover new ones. That led me to write this post since one of my most important ideals is sharing knowledge.
I’ve been a professional software developer for the past eight years (don’t tell my boss, but I’ll also write code for free), and I’ve been programming in one way or another for about 17 years. My first programming language was a version of the Logo language that was, a bit strangely, in my mother tongue (Hebrew). I learned Logo in an afternoon programming course in junior high school, and from that point on I was hooked.
During my first programming job, the somewhat obscure idea of “I must stay relevant and up to date” started to bubble up inside me, especially in the fast-growing pace of the software programming world. Of course, I didn’t actually know how to do that or what it exactly meant, but I recognized its necessity.
As I’ve gained more and more experience, I’ve realized the importance of learning about a wide range of topics. This has a couple of very important benefits:
- It will introduce concepts, ideas, and even tools for envisioning new features or improving current ones in your projects.
- It will extend your toolset with new knowledge about architectural concepts, tools, and standard practices. That can be leveraged in favor of achieving your company’s goals. For example, you can develop code faster, create more maintainable code, put together an effective CI/CD process, and etc.
- It will even spark new personal interests or a whole new career path.
If you agree on the importance of staying up to date, you may be wondering how we can tackle this issue.
In my opinion, it’s a way of life that can be practiced in a lot of different ways. We need to be like a doctor who reads medical journals, goes to medical conferences, checks out their colleagues’ work, and more (a lot more). So we need to practice this constantly, and it will potentially become (or inspire) a very interesting part of our careers.
After a bit of philosophy, let’s get down to the specifics (you can check out my personal resources at the end of the post).
My grandfather always said to me, “When someone is helping you, always watch over their shoulders.” My interpretation of this is you should always ask why, and don’t let potential knowledge pass you by:
- Always explore when given a task to do. Look to your right and left for different solutions and possibilities.
- Pay attention and participate (actively or by just listening) when colleagues discuss work (“shop talk”).
- Make the most of code reviews given by you or to you and learn from them.
Share knowledge, always and with everyone
Do this in the course of a discussion, during a code review, by giving a talk, or any other way.
You may be surprised to learn that you’re wrong sometimes (What?! No!) or out of date in certain topics. Even if you’re correct in a discussion, you’ll still get practice conveying your ideas (a very important skill), and you’ll also potentially get a better understanding of the discussed subjects. You can benefit a lot from learning about how other people approached a subject/issue and what they learned.
I like checking the trending repositories page. I check it every week (or whenever I’m bored). In particular, I check projects that are written in the languages I currently use or I’m interested in. I look for cool new projects or new ideas that are trending in the open-source community.
This is a very fun and easy way of finding relevant projects and even some inspiration for future projects, either for work or fun purposes (“the wisdom of the masses” greatly elevates the chances for finding relevant ones).
If you’re not familiar with this medium, it’s usually an email subscription newsletter with relevant links to articles.
In my opinion, this is a problematic resource because they could bombard you with emails, and over time you’ll ignore them. When you subscribe to a feed, be sure to define the scope of interest to be as narrow as possible. For managing those subscriptions, I suggest unsubscribing from a feed if you haven’t read any article from it for about three months (you can always re-subscribe in the future). You’ll do yourself a favor by not dealing with this “noise” in your email inbox.
If you use Gmail, you can also add context to your received emails by subscribing to a feed with ‘<user-name>+<topic>@gmail.com.’ This way, you can combine feeds in the same area to a single email folder. This will help you easily find the content in the area you’re interested in, and you’ll be able to find out which feeds you can unsubscribe from (since those inboxes will probably contain a lot of unread emails).
I would also recommend “Google Now” recommendations because it continuously generates a report tailored for you that includes links that you could be interested in (Google knows what you search for, of course). Through their recommendations, I’ve occasionally found relevant links ranging from interesting articles to relevant GitHub repositories.
There are a lot of software-related conferences around the world on a wide range of topics (language-specific, different fields, frameworks, etc.). These conferences often record their lectures and make them accessible on their YouTube channels.
This allows you to catch up on them on your own time, and you can probably find videos on any topic you’re interested in. Another great way to find videos is by following the channels of the companies you find interesting (or are interested in working in). They’ll probably have a collection of videos from conferences or meetups given by the company’s lead employees.
Like YouTube videos, there are a lot of podcasts from around the world on a wide range of topics. Podcasts are a great medium because you can consume them while on the go with just a pair of headphones.
I recommend subscribing to a lot of podcasts because you probably won’t like all of their content, and from the vast range of options available, you’ll probably find some interesting content to listen to.
Meetups and conferences
They’re a great source of information, networking, and meeting old friends. This medium is very much aligned with the idea of sharing knowledge.
Because of limited free time or convenience reasons, such as far locations, I only go to some meetups. But there are all still two free ways to enjoy the meetups’ information. One is via meetups that record their sessions and publish them on their YouTube channels (which, of course, is great!). And the other is by subscribing to the all relevant topic meetups and explore via their lectures’ topics (to be in touch with the community trending topics). Seriously though, go to meetups and support the organizers that do this on their own time and without any payment (thank you!).
The same could be said for conferences, but they’ll require more time investment, and you’ll probably also need to pay for them. As I see it, when you decide to go to a conference, you’re probably more invested in that interest area and looking for more than just exploration or getting to know a subject.
They are, of course, a great resource for learning and getting to know a subject well in different levels of expertise. However, I think this is out of the scope of just “getting up to date” because the main goal is to gain a wide view and knowledge on new topics, preferably easily as possible. So, in my opinion, this is a great next step when you encounter something that you think you’ll need in the near future.
Day 0 — I Want to Start! So Now What?
First things first, congrats on starting this journey. I’m sure you’ll enjoy it and benefit a great deal from it. Like I mentioned before, a good place to start expanding your knowledge is what’s relevant to you today: current programming languages you use, specific areas in computer science like ML, embedded programming, and etc. This will give you a “quick win” and the push/kick/drive/wake-up to start.
In regards to which medium to start with, you should choose the ones you feel are best for you and easiest for you to stick with. For example, you could check out the GitHub trending page or go to meetups because you can drag someone with you (hopefully not by force). After the first taste of cool new information (and perhaps a beer or two), the hunger for more will hopefully start to set in. This is because you probably will be more curious and want to widen your perspective and knowledge.
If you learned something interesting that drove you to read more about it, I recommend sharing it with your colleagues (work, friends, and/or community). You’ll probably gain a lot from the discussions that will arise, and it will help you in getting to know other related issues. You may even find out that you didn’t quite understand what you learned. Use the research that other people worked hard to achieve and always give back.
Although this seems like a huge and cumbersome task, it has the very rewarding benefit of discovering new worlds. It could also simplify your daily job. In a practical sense, these options should be a part of every programmer’s toolset. But you should find out what works for you because if it won’t be interesting and easy (and fun) for you, it won’t happen. So try (really try!), and see what works for you — there isn’t one silver bullet. I’m looking forward to hearing how you’re doing this and what you think about this issue.
My Current Resources
I didn’t want to list this in the post in order to make it easier to find after reading this post (or before, it’s a possibility!).
1. Articles feed
2. YouTube videos
- PyCon Worldwide
- Reversim (Hebrew)
- goto; Conferences
- FullStack Developers Israel (Hebrew)
- Wix Engineering Tech Talks
- All Day DevOps
- StatsCraft (Hebrew)
- Uber Engineering
- Talk Python To Me
- Reversim (Hebrew)
- No tarbut developers (Hebrew)
- The Changelog
- Making Software (Hebrew)
Until next time!