How to Speed Up Learning as a Software Developer
Has there been a time where you said to yourself, “I want to learn how to use Angular!” or “I want to learn Ruby on Rails!”
I know that I have this feeling almost every day. As tech changes so rapidly with new languages, libraries, and standards, it can be extremely difficult to keep up with it.
If you are completely clueless as to where to start your learning process, you might go over to trusty Google and search “how to learn Ruby on Rails.” This takes you to a random tutorial, you read it over, take some notes, and never actually go anywhere with it.
You may spend hours watching videos, saying to yourself, “Yeah, that makes sense—this looks easy.” Then you head over to Terminal and your text editor to start learning Ruby on Rails development and you draw a blank.
The tutorials throw too much information at you, or sometimes too little. This either leaves you with incomplete knowledge, or feeling completely confused and overwhelmed, both of which are not good when you are attempting to learn something new.
Well, luckily for you, through trial and error, I have come up with a process that could take you from zero to application creator in a much shorter time.
Start With the End in Mind
“When you set a goal for yourself, you do what you need to.” – Johnny Van Zant
Many people attempt to learn a language or technology with no purpose behind it. Without a purpose or goal for your learning, you are limiting your ability to retain the information you just learned, and you are not nearly as interested in the material. Having a goal will allow you to focus deeply on what you need to learn and have a reason behind the learning.
Without a goal, you do not know what you want, which leaves you with very little motivation. It does not allow you to focus on learning one thing at a time—instead, you may end up trying a million different things. This does not lead to learning what you wanted to from the beginning.
The solution is to create a goal. This is where side projects come in. You need to have an idea of something you want to make with your programming knowledge. It does not need to be revolutionary. In fact, it could very well be something that has been created 100,000 times over, like a to-do app.
The whole point here is to give your mind an idea of what you want the end product or project to be and how you would like it to function. From here, you want to create exact requirements for what you want this project to look like. You want the goal to be clear and as well-defined as possible. You want to have requirements that explain what type of application it will be and what type of functions it will accomplish.
For example, Jessica decides she wants to learn web development. She thinks of a project that could help her personally, and could help her learn the technology behind the what she wants to learn. She does not like all the to-do apps out there, so she decides to make a to-do web app. She specs out all the requirements for this to-do app so she has a clear image of exactly what it will look like. Having written out what exactly this app will do, she knows what she will learn through the process of building it. Depending on what she selected, she may learn new methods of doing things, or may learn new technologies that she has never used previously.
Select Your Tools
Jessica, once she knows exactly what she will build, decides what tools she will use to make it. She heard that Node.js is pretty useful and popular these days, so she decides to use it on the back-end, React on the front-end, and PostgreSQL for a database.
Once you have selected the technologies to handle all parts of the application and what you would like to learn, it’s time to start coding!
Learn the Basics
This is finally where you get to play around with some tutorials. Except this time, instead of blindly attempting to find random tutorials, you now know what direction your project should be heading in. Your goal at this point is to learn just enough information to get you off the ground and coding.
The best way to start learning something is by attempting to handle the smallest and easiest thing first. In most cases, this will be a version of a “Hello, World” app. The key when doing the tutorials is to type out the code exactly as it is and get it working.
By spending the extra time typing out the example, your mind will build connections within the code and learn how the technology works and the individual parts interact. This is crucial for making progress.
Once you have that down, what could be next?
Now that you have some working code that produces some sort of output, you want to start altering it to serve your purpose (this depends on the project/product you are making). Start searching for the specific parts that you are looking for (using either online or hard resources).
Jessica needed to have a table in a PostgreSQL database with a column representing an id, therefore she searched “how to create a table with an auto-incrementing key PostgreSQL.” This gave her tons of articles on the information she needed for that task.
This process usually involves breaking down a requirement that you established in your project's goal into what it means in computer science terms. Asking the right questions is key to learning, as they will lead you to the right answers.
Now, the process of being able to ask the right questions is definitely a skill that is learned and does not come naturally to plenty of people.
I used to be REALLY bad at searching. With enough practice, I have become significantly better, and it has saved me much development time. The one tip I can give is to make sure to use various keywords in your searches, such as the language or framework you are using. If that does not work, try to switch up the wording you are using to describe your issues. Please do not get discouraged if you struggle with this. Keep pushing.
Repeat Until You Hit the Goal
Now that you have figured out how to build your project, you need to implement it into your code. Get it working. Then repeat for the next set of functionality.
You will constantly be repeating this process:
- Asking questions.
- Typing up and follow along with an example/tutorial explaining what to do.
- Adapting to your project’s needs.
Start Learning Fast!
This process has worked for me and plenty of developers that taught me this, along with those I have taught. I hope you take the first step today to learn the technology you have been struggling to learn.