I think everyone will agree that as software developers, we must constantly learn new things to stay on a roll. New frameworks come and go at a staggering rate, the technology stack of the current project keeps growing without showing any signs of stopping, and another project is already looming on the horizon. What can you do to stay calm and comfortable when so many changes are happening? “Development on a roll” comes to the rescue!
New project – new challenges
Have you ever been dropped right into a project where everything was new to you: the programming language, the tools and the architecture? Did you wonder how to get on top of all that within a short period of time? My go-to source of knowledge for every new technology is of course
Stack Overflow official documentation. In the era of GitHub, it develops with the code, which means that it is typically up to date. In most cases, it contains a “Getting Started” or “Quick Start” section, and that is absolutely enough to take your first steps. If the remaining part of the documentation is too broad to read and the project deadline is approaching, I look for conference materials (YouTube, Vimeo) or several-hour-long MOOCs on portals like Udemy, edX or Pluralsight. (On a side note, I recommend speeding up the playback, for example to 1.5x. At that speed, the content is still comprehensible.) This is the “minimum effective dose” that enables me to do my job effectively. I only reach for books when the above steps are not sufficient or when I need to explore a given subject in more depth.
If I’m trying to work out a more comprehensive subject, I begin by taking a top-down view of everything. As I approach a technical book, I leaf through it first to see the chapter titles. Then I start reading every chapter by looking at what the author has put in boxes or otherwise marked as important. When I build a context for myself at the start of a study session, it is easier for me to fill in the blanks with new pieces of the puzzle later. This happens because the human brain, like a HashMap in Java, “places” data under specific keys for easier access. Since the amount of space in the brain’s internal memory is limited, such a “reference” can be useful later, when you start solving problems.
You cannot rely on memory alone. If you don’t reinforce your knowledge by referring to it frequently, neural connections will decline and you will probably forget many things. Take a look at your CV and think how much you remember about the technologies you used in your first projects. There is a simple solution, though: write down all you can. Personally, I use Evernote to take notes as it allows me to organize the information using notebooks and tags and supports any-device access. My friends’ proven methods also include mind maps and traditional paper-based notebooks. The more you write down, the greater the chance you will not have to learn the same things and solve the same problems again.
Learning “just in case”
As the technology stack used in IT projects keeps growing, you may be having trouble finding the time to gain an in-depth understanding of even the one you’re currently working on. At the same time, however, you may not limit yourself to the project at hand and lose all touch with the world of IT. There is more and more happening in the software development arena, and new projects that may be of use to you keep springing up. If you encounter a problem which cannot be solved with the tools in your toolbox, you need to know whether the required tools exist at all. To keep up with the stream of information on software development, I mostly use Twitter. The Polish and international developers I follow on Twitter often proudly share their discoveries or talk about their work on open source projects. In many cases, I learn from their posts that I can improve application performance or speed up my work in a matter of minutes. Apart from that, I keep an eye out for updates from the RSS feeds of my favorite development blogs or aggregators, such as JVM Bloggers or Java Weekly. Even if I only find time for a cursory look at some of the posts, often just the titles, I can see what the trends are and what is worth exploring.
When do you find the time?
If you cannot find the time to study due to work pressure, stop looking for it and start organizing it yourself. If you schedule a fixed amount of study time, for example 30 minutes before sleep, within just a few weeks you will develop a habit, and the study session will become a regular part of your evening. It’s a good idea to tell your household members that you’re going to be unavailable during that time, disable notification messages in your phone and block access to your favorite pages in your Web browser. Complete focus on the material will help your brain consolidate the neural connections, allowing the material to stay in your memory for longer.
The time you spend commuting to work can also be used for study. Many presentations contain no code and thus require no visual focus. On InfoQ, there is even an option to download an mp3 file next to each presentation. In addition, there are a number of IT podcasts which are worth recommending and which you can easily listen to in your car, for example Changelog or Software Engineering Daily. It is easy to calculate how many presentations you can listen to that way and how much knowledge you can acquire in the process.
Take care of your skill set
If you want to be a software craftsman, you need to take care of your skill set. When you approach a new project with a toolbox full of tools and the knowledge of how to use them, you don’t have to worry about being able to tackle new challenges. To achieve that, however, you need to keep developing all the time. For those interested in how you can use the properties of the brain for better learning, I recommend the free course called “Learning how to learn” and the book entitled A Mind For Numbers by Barbara Oakley.
If you have any other tried and tested study methods or would like to share something of interest with me, contact me on Twitter.
By Paweł Młynarczyk – developer working tirelessly with Java for the last 10 years. He codes, does DevOps and helps his younger colleagues grow as professionals. From time to time, he can be heard at IT conferences, and he uses every available opportunity to learn. In his private life, he is a dad and a lover of comics and Czech cinema.