As developers, we should always strive to be become better at our craft, no matter whether you started yesterday or ten years ago. With the rapid growth and expansion of programming languages, APIs, tools, and other items typically available to a developer’s arsenal, there is always an opportunity to learn something new and grow as a developer.

I would never consider myself a great developer, but I am a far superior developer today than the developer I was three years ago, and even the developer I was just six months ago.

There are so many ways that we can grow as developers and I’d like to share a few of the methods that have helped me.

1. Have an attitude to learn

To get better you must want to get better. Period. Do you remember your high school math class where you wanted to be anywhere but there? Probably. Do you remember any of the advanced techniques they tried to teach you? Far less likely. To truly learn and retain a more advanced development knowledge, you have to yearn to get better. If you don’t want to get better, you will likely never see anything but minor improvement.

Your attitude towards learning goes a long way.

2. Challenge yourself with difficult projects

No developer will ever get better by always working on the easy projects. To grow as a developer, you must step out of your comfort zone and challenge yourself with tasks that are far beyond your current skill level.

One of the biggest weaknesses I often see in developers is the “this is too hard” mentality. Bullshit. Nothing is too hard, you just don’t yet have the knowledge or know how to accomplish the task at hand. Being faced with technical challenges is very different than mental challenges. You may not be able to make a processor run faster, but you can find ways to make the processes take less power.

Taking a difficult challenge head on with a mentality of “I will solve this” is one of the single greatest steps you can take in becoming a developer. It is also a great life lesson.

With every difficult challenge you take on, you will learn something new, even if you fail to complete the task. It may be that you learn how poor a previous design decision was, or it may be that you learn of a new-to-you technical limitation that the programming language you’re working in has.

3. Direct yourself

Becoming a better developer means helping yourself. If you stand around waiting for step-by-step directions, you will never get better. You may get really good at reading instructions, but you will be lost when forced to do it on your own.

Having someone to mentor and teach you is a wonderful luxury, but it is also a crutch. If you rely on the direction of others, you will have a really hard time freeing yourself from those chains.

If you come up against a challenge, work on it. Dig into it until you find a hint at the solution. Pursue that hint until it turns into a brick wall or opens up into another hint. Eventually, after you find enough hints, you will have a solution. If you run out of technical knowledge, go and seek more. If you’re working with an API and don’t know how to retrieve some particular data, research the documentation, and if that fails, dig into the source code.

Directing yourself at finding solutions is one of the best things you can do to become a better developer. Forcing yourself to discover a solution will drive that knowledge home and it will stay there. Copying and pasting an answer from someone else will end the same way your highschool math classes did.

Self direction is one of the number one attributes that I look for when deciding whether to work with a developer. If I’m going to have to guide them through the entire project, we will not be a good fit.