I’ve seen an interesting phenomenon in witnessing different developer’s experience levels. Expertise and skills don’t always coincide with years of experience. Some developers with relatively short tenure have strong abilities, and some developers have stayed relatively stagnant for a long time. What makes the difference? While there may be differences in innate ability and aptitude, I believe there is also behaviors and mindsets that can push you towards becoming an expert developer faster.
Experience Matters
The most important learnings are those you get from your own experience. Learning from others is great, but it can’t replace time spent practicing your skills. Putting in the time is not optional. You can’t just skip it and expect to magically attain the skills that others spend years developing. You have to dedicate the time to your craft, but maybe you don’t have to dedicate as much time as the next guy. Are there things you can do to make the time you’re spending worth more? Let’s investigate how the value of your time can be multiplied.
Stop Avoiding the Difficult Tasks
There are always some tasks that everyone knows should be done and nobody wants to do. These tasks are difficult, and unlikely to be "worth it" as far as recogonition to risk ratio. There is usually a lot of unknown involved. These are the tasks for which you need to be first in line. This is where the growth happens. They may not bring the regonition your ego would like but they will stretch you to learn the unknown. Be known for looking for the most challenging tasks, and you will have to be learning all the time. There is nothing more important to master than learning itself. Get out of your comfort zone and find the tasks that will force you to learn.
Experimentation
An important part of getting better is stretching your current skills and adding new skillsets. You can’t get that from doing the same things in the same way all the time. You need to try out new techniques. This can be tricky because everything that is new to you isn’t going to be better. So while experimentation is necessary, it is equally necessary to correctly evaluate how your experiments went. It is critical to not jump into fads that aren’t actually effective for your particular work flow or team. So try things out, and then judiciously add only what works for you.
It’s also important to note that experimental time should be a small percentage of your time. If you’re spending half your time chasing ideas, it won’t leave much time to complete your projects. You should aim for a small percentage of your time on experiments. I won’t give any actual number, because I think it’s highly dependent on your individual situation, and it’s probably best to just start small and feel it out. It’s also not something that has to happen on every project, as some things are very fitting for your existing tried-and-true techniques. But don’t go too long without trying something you’ve never done before.
Face Your Failures
Sometimes you will not find the elegant solution that the problem requires. Sometimes you will make things worse. Nobody wants to fail, but sometimes, it happens. It's not a great fealing, but you have to face it. The worse thing you can do is avoid and deflect the blame. That is going to be the natural desire, because it is very unpleasant to be in the wrong. But good things happen when you face the music. The first and most important person to which you need to admit your mistakes is yourself. There's always legitimate excuses and factors that were outside your control. If you tell yourself that those were what made you fail, it leaves the possibility of succeeding next time in someone elses hands. If you focus on what you could have done better, you give yourself the power to succeed. You may have failed this time, but this was just a battle. You need to play the long game. You need to win the war. By facing your failure, admitting to yourself and anyone else involved that you came up short, you are setting yourself up to succeed next time. By avoiding and making excuses, your saying I'm fine where I am and that task was just too big for me. Be brave, and set yourself up to have a chance to knock it out of the park next time.
Be Willing to Change
A lot of people are set in there ways. They are either content where they are, or they don't have the vision for how they could be greater. This makes it hard to improve. The more times you do the same type of thing in the same type of way, the less likely you are to be willing and able to change to use a superior technique. How will you know what should be changed? This is where you need to read and listen to people you trust outside of your own experience. There are "experts" everywhere willing to give you advise. Always put their advise to the test. Only adopt it fully when you've seen it work for you. But you need to be willing to give it a chance. Sometimes, there are important things that you are missing that need to be addressed. You can never get there without being willing to change. Changing can feel like you're throwing away your own experience, but it's critical to improvement and growth. I think of it more like refactoring. Sure, some things have to be thrown out, but it's more often the case that things are being rearranged.
Summary
A few ways to make the time you spend as valuable as possible:
- Seeking out tasks that are outside your comfort zone
- Try out some new techniques
- Be willing to face up to your failures
- Break up your old routine