Don’t believe the articles that claim exceptional software developers are born and not made.
There are countless studies proving that grit, determination and the right mindset can help us achieve more than relying solely on talent, and learning how to be an exceptional software developer is in your reach.
Who are the people in your company you ask to review your code?
Usually, they are the ones who care deeply about code quality, who see coding as a craft. The ones who want to elevate the overall skill levels within the company.
If you feel like you’re stuck in a rut, or if you’re discouraged because it feels like it’s taking a while to level up on your coding skills, or even if you just want to improve, here’s five great tips for how to be an exceptional software developer.
1. Define your motivation
Why do you want to be a better software developer? It could be to gain skills so you can contribute to causes you believe in, to have more control over your career or even to earn more cold hard cash.
Once we define the ‘why’, it becomes a powerful motivator to get us to where we want to be. Just like writing down a goal creates a higher chance of achieving it, writing down our motivations will keep you focused on the path towards being an exceptional developer.
If you haven’t defined your motivation and need some help, check out these resources to give you some ideas:
- Gain skills so you can do more of what you love
For those who don’t know if they’re passionate about programming, it can feel taboo to openly admit it. However, you can still be an exceptional software developer if you have good work ethics and genuinely care about doing a great job. Antonin Januska’s blog post ‘I’m a developer, but it’s not my passion’ offers good insight into this perspective.
- Gain professional and personal freedom
Pluralsight author and software architect Cory House says there are two fundamental keys to freedom:
To develop in-demand skills, we need to continually upskill in our chosen stack. If you’re finding that your chosen stack has become less in-demand, you might have to learn another you can create a career from.
Living below our means, having enough savings and spending money wisely are all ways that give us financial slack. Financial slack gives you the freedom to walk away from roles you no longer believe in, and as Cory describes, is great for focus and mental health.
Watch Cory’s Pluralsight course ‘Becoming an Outlier: Reprogramming the Developer Mind’ for more ideas.
2. Deliberate practice
If we stopped learning and kept the skills we gained from university or our first job in tech, we would never get better. If you think how far you’ve come already, it was all down to hard work and continuous learning.
Although there are plenty of professional development tools such as Pluralsight subscriptions, textbooks and events, none of these are deliberate practice. Deliberate practice isn’t just repeating a task, either.
In the Psychological Review article, ‘The Role of Deliberate Practice in the Acquisition of Expert Performance’, deliberate practice is defined as activities that have been found most effective in improving performance.
To distinguish deliberate practice from other activities, the article lists four features:
- The learner should be motivated, exert effort and want to improve
- The task should take into account the pre-existing knowledge, so the task can be understood with just a brief explanation
- Learners need immediate feedback on their performance (for example, does a the programme compile? Are you unit tests passing? How were the quiz results?)
- Learners should repeat the same exercise or a modified version of the task
Although the article was written in 1993, it’s still being referenced today. Developer and author Kathy Sierra’s talk ‘Building the minimum Badass User’, expands the idea of the original article as she describes deliberate practice as “something designed to build a skill within one to three sessions”. If you’re getting discouraged after a practice session, just remember that it takes about three sessions so feel comfortable with the task.
If you’re keen to start deliberate practice, you might find a course on Codeacademy, Free Code Camp or Code School. These types of tutorials meet all the requirements of deliberate practice, plus seeing your progress is a great bonus to keep you motivated!
3. Create projects
Working on our own projects outside of work will help us to be an exceptional software developer. Not only do we get to build cool stuff, we also learn new techniques and methods we can use in our career.
If you’ve already completed a few projects and you need to change things up, invite others to help with your next project. One of the best ways to solidify learning is to teach somebody. What better way than creating something in a group and turning it into something you can all be proud of.
4. Cultivate good habits
Opportunities shrink as time goes on. But we have choices on how we spend our time, and it starts with good habits.
Our whole lives are habits strung together: we get up at relatively the same time each day, we know what we like to eat for breakfast, we get to work using the same mode of transport, we start the day looking at emails and support tickets from the night before, we order our morning coffee…
But how many of our habits are actually terrible? If we buy our morning coffee but have a goal to save money, we might be satisfied with the coffee available at work.
Motivation will kick-start your goals, but long-term progress is best paired with good habits to consistently improve and keep your goals.
In Charles Duhigg’s book ‘The Power of Habit: Why We Do What We Do in Life and Business’, he illustrates the habit loop:
One of the key pieces of research behind the loop Duhigg references is a study by MIT on how habits are formed. In this 2005 study, researchers experimented with mice in a T-shaped maze, first with a reward at the end of the maze, and later, without a reward. The maze also included an audible cue at the junction of the T informing the mice which side the reward was.
At the beginning of the experiment, the researchers found that neurons in the part of the brain associated with habit formation and learning – the basal ganglia – were highly active during the whole maze while the mice were learning. As the mice became familiar with the maze, the neurons were only highly active at the beginning (the cue) and end of the maze (the reward). A habit was formed. When the researchers removed the reward, but left the audible cue, the mice eventually stopped running the maze and the habit was broken.
Duhigg explains that to create good habits, we have to replace old ones. The secret is to recognise the cue, still have a reward, but change the routine to something productive.
You can use Duhigg’s strategies to change most habits. But let’s take a closer look at habits that would help you during times of deliberate practice or project time.
If you find yourself easily distracted, firstly, recognise the cue that distracted you (like social media notifications), figure out the reward you were seeking (a short break from the task), and change the routine. If the routine is to check your notification, then spend half an hour checking the rest of your Facebook feed, you could change the routine by checking the notification then setting a timer for a five minute break. The cue stays the same, and you get the reward of the break, but the routine is more focused and productive.
5. Strengthen relationships
Since we spend around a third of our lives surrounded by work colleagues, it just makes sense that we enjoy our environment and work culture. We may not get to choose who we work with, but having better interactions with our colleagues will help us be an exceptional software developer. A good work culture decreases our stress in and out of the office, makes us want to stay at a company longer, and keeps us healthier.
If you feel your company needs to improve its culture, it all starts with you. Be an exceptional software developer by being someone others want to work with.
Three faculty members of the Harvard Negotiation Project wrote the book ‘Difficult Conversations: How to Discuss What Matters Most’ for everyday people to better deal with conversations that are hard to navigate. There are many strategies to diffuse potentially heated conversations, but the most practical we can use today is to stop assuming other people’s intentions. When it comes to difficult conversations at work, we only know our own intentions and not the other persons. However, we make assumptions all the time during conversations. We react and frame conversations based on our perceived assumptions.
Here’s an example:
A major bug is found in production. The first assumption is someone is to blame. Coming into a conversation assuming there must be someone to blame means you will be defensive. The second assumption is that others might blame you, so you speak in an aggressive, defensive tone. But by being defensive, it sends the message that someone has to take the blame. This situation isn’t constructive and there’s a high chance that you and others will leave the conversation feeling agitated.
Tech is a field where we constantly interact with our tech leads, customers, support staff, testers, account managers. Although it may be rare to get in a difficult conversation with a colleague, we can look at everyday conversations and stop making simple assumptions.
“Why is the dev manager asking how I’m going with my task? I bet they think I’m being unreasonably slow. Great.”
The above sentence holds so much negative assumptions, tinged with panic and perhaps even guilt. However, we still don’t know the intention of the dev manager. Ultimately, there really is no point thinking the worst. Perhaps the dev manager is working on the schedule for the next sprint or maybe they want to see if you need anything to help you with your task. If you’re unsure, just ask them.
We can never know someone’s intentions unless they specifically say them in a conversation. When we don’t assume someone’s intentions, we’re open to better communication without jumping to negative feelings. When we let go of making assumptions, we can spend more time concentrating on the tasks at hand, instead of silently panicking or stewing alone about something based on assumptions.
Be an exceptional software developer
Be an exceptional software developer by first finding your motivation. It fuels us through difficult days at work or periods of discouragement. After defining our motivation, the next step is deliberate practice. Deliberate practice means we continuously upskill, while retaining what we’ve already learnt. Next, creating and completing projects means putting our deliberate practice to use, where our projects exemplify what we’ve learnt and let us see how far we’ve come. After that, we can look creating good habits so we use our time to consistently improve. Lastly, we strengthen our relationships at work to help add to a good work culture.
Onwards and upwards.
Do you have any tips on how to be an exceptional software developer? We’d love to hear them in the comments below!