Three Learning Stages

How I learn new things as a developer

Posted by Friðrik Runólfsson on 27 May 2015

I once was a part of a team of five developers, three senior developers, me and one other developer who was not as experienced or didn’t have the same skillset as the rest of the team. Faced with a major architectural decision, one of the senior developers spent some time designing a solution before the whole team spent an entire day iterating on it. At the end of the day we had reached a point where I and the three seniors were satisfied and ready to move forward. The junior developer didn’t agree but didn’t have the courage to stand up to the rest of team, so he folded and said that we should move forward with the solution. Early next morning one of the senior developer sat down with the junior for a one on one talk where he allowed the junior developer to lead the conversation and state his concerns about the proposed solution. They ended up spending the entire day discussing this back and forth. This has stuck with me ever since. It would have been so easy for the team to dissmiss the junior developers concerns and move forward. But this senior developer took the initive to listen to the junior developer and find ways to improve our solution. For me this was a perfect example of a developer who has the right mindset when it comes to learning and solving problems.

As developers we are constantly learning new things, trying to keep up with new technologies and also digging into some old technologies that we have never seen before. Doing this I have noticed that approaching new things (and old) with different mindsets has a lot to say about how I go about solving the problem. This is both controlled by internal and external factors and I find that by manipulating the factors that I have control over I can change my mindset so that I am more likely to be more successful with the task at hand.

I know nothing

When learning a new framework, starting a new project or solving some task with a lot of uncertanity, I sometimes get the feeling that I am completely lost. Everything is new and exciting, but at the same time I sometimes get a little scared. Having this feeling holds you back so you don’t want to get stuck with this mindset too long but I find that it can be useful in this exploring phase as it makes me ask stupid questions (which is good) and try to take a look at the framework/project/task from different angles. A good example is when you start on a new project. Then it’s perfectly normal to feel like you know nothing and you should embrace that feeling. Ask the stupid questions and learn and build up your confidence.

I know everything

When you have experience using some tool or framework it is quite easy to think you know everything there is to know about it. Each new task seems like just yet another task to solve using the knowledge you have. You try to fit new tasks into your existing world. Obviously you don’t want to get stuck with this mindset and I believe there’s a correlation between getting stuck with this mindset and experiencing burn out. A perfect example of this is the new employee who was the go-to guy at the last place he worked at and forgot to leave his ego there. Of course it’s possible he’s one of those mythical 10x developers, but when starting a new job it helps to accept the fact that you might need to learn a thing or two.

Open to learning

This is where you want to spend most of your time. Here you take each task as it comes, assess it carefully to see if it can be solved using some of your existing knowledge or you maybe need to expand your knowledge and learn something new to solve it. This takes some discipline as sometimes you just want to start writing code right away and you feel that the only thing slowing you down is how fast you can type on the keyboard. I believe that doing this results in better code and a happier programmer. Here you are also open to suggestions for improvements to your solution, you openly share your designs and code with coworkers and ask for opinions and advice from everyone - the senior developer on the team as well as the junior developer.

Photo credit: Straumar, Iceland. Own photo.