Efficient Learning for New Programmers
Tips for getting the most out of limited time
Work Computer by Unsplash is licensed under Creative Commons Zero
More than ever people young and old are becoming interested in computer programming as a possible career choice or career change. It is easy to see why with no shortage of job opportunities and an ever growing market. Another great aspect of starting your programming career in 2016 is the abundance of resources available online. Resources such as Codecademy, Udemy, and Codeschool will help you learn almost anything you can imagine from the comfort of your own home. These are all great assets that will help you grasp the basics of any technology or language you want to learn.
Even though there is a great supply of information on the web to learn how to program, I found that due to my inexperience, I often times would complete a tutorial and then not be able to determine the steps that would follow. I was eager to implement my new knowledge, but once I opened my editor, I had no ideas on what to build. I believe this is a common problem for coding beginners trying to practice newfound skills. This blog post will contain some helpful hints and tips that I think will help others in the same boat be most efficient with the time dedicated to learning the art of programming.
Always Have a Problem
Learning for the sake of learning is good, but it will never beat learning to fix a real problem. Before opening your text editor be sure to have a clear and concise idea of what you want to build, no matter how large or small. A great way to do this is to pretend you have a client that asked for a feature, and then set a deadline for that feature to be finished. For example, if practicing Ruby on Rails, imagine you have to build an application that will keep a running inventory of all the contents in your fridge. It may be an arbitrary example, but now you have a concrete idea that needs to be built. Now, when you open your text editor to start the buildout of the application, you will have your first problem.
Focus Only On The Problem At Hand
This was probably the biggest concept for me to grasp and now that I have, it’s increased my productivity greatly. Focus solely on the problem that you are currently on and nothing else. Too often, developers can become distracted by thinking of potential problems that can come down the pipeline throughout the process. It’s better to start on a particular feature and zone in on it first. If you do not stay focused, you run the risk of never reaching a solution for anything. Rather, your time is occupied worrying yourself with the entire application instead of what needs to be completed right now. Next, we need to keep our problems and features focused and organized.
Break up features until they are at the atomic level
Now that you have a feature that needs to be implemented, it is likely that the feature can still seem very large and hard to wrap your mind around. For example, it might seem incredibly daunting if your feature is to style an entire sign-up page. Instead of trying to tackle the entire page itself, break down the feature to just the text fields. Now the task is more doable and less intimidating.
Following this breakdown, all you have to do is style the text fields to satisfaction. Once you have done that, move on to the buttons and so on until the page is inevitably done. I struggle with this concept because it can feel as though I am spending too much time narrowing in rather than focusing on the broader picture. However, every time I implement this method, it helps me manage the pressures that can come with creating something from scratch. It allows for incremental progress rather than getting bogged down by trying to do too much, too fast. Now let’s talk about what happens when you are stuck and need some help, which is often in my case.
Understand Why The Code Works After Receiving Help
In problem-solving, you will inevitably use resources like StackOverflow, which is a great resource for modern programming. When you have a problem that needs solving, you can head on over to StackOverflow and ask the communities of each respective language for very specific help. In the past, I would receive help for certain problems and then simply implement the code without ever asking myself why it works. Sure, I got my answer, but I will keep running into the same problem if I don’t truly understand the solution. Make sure to study the solution for each and every problem by having a deep understanding of how it works backwards and forwards.
Putting it all together
When I follow the procedure shared above I truly feel as though my time is spent efficiently and the retention of knowledge is far greater than reading documentation or watching a video with no goal or direction in mind. This procedure is a close replica of the workflow you will find in practice with every software engineering team. Here is the takeaway -
- Have a concise idea for a project
- Break up problems and features to the smallest possible level
- Stay focused on each individual feature at a time
- Understand why the helper code fixed the problem
Whenever I follow the workflow above, I find that my developer experience is usually really productive and enjoyable. What workflow works for you?