All the Way to Software Greatness



Aug 22 · 7 min read


I’ve noticed some things about what makes a great software developer in the process of meeting all of these developers alongside the teams they work with. There are some qualities that are shared by developers who are successful in their careers, work on interesting problems, and help to build amazing solutions. Perhaps more importantly, it seems these qualities contribute to their overall happiness and satisfaction.
So — here they are — the six things I think make a great software developer:
Curiosity
Great software developers are great problem solvers. To solve problems that matter, you have to have some curiosity — and the more the better. What makes life hard for people? What makes it fun? How can people get access to what they need? What is missing that would make life easier and better for people? You can start by being curious about the answers to these kinds of questions. This will lead you to the interesting problems — the ones that, once solved, will make a significant difference.
Being curious about why something isn’t working the way you expect when you are developing a project, and about other ways to do what you are trying to accomplish, is important. Being curious instead of being judgmental and critical can mean the difference between the success and failure of a project.
“Imagination is more important than knowledge. For knowledge is limited, whereas imagination embraces the entire world, stimulating progress, giving birth to evolution. “ ~ Albert Einstein, 1929 October 26, The Saturday Evening Post, What Life Means to Einstein: An Interview by George Sylvester Viereck
Get curious about new ways of seeing and doing things. This is where the best ideas and solutions come from — curious minds and great imaginations.
Passion
When you’re passionate about what you do, whatever that is, you do it better and with more powerful results, without the experience of a lot of effort — even when lots of effort is involved. Passion is why I am excited to go to work when I get up in the morning. It is why it is easy and fun for me to connect with other people to create better and more solutions with impact.
Passion gives us energy. Passion produces amazing outcomes. I think that great software developers are passionate about coding and problem solving in general. We like to solve puzzles. We like to sink our teeth into a problem, break it down, and work out the best solution. But the cool thing about software development is that your passion for any field or facet of life can fuel your work as a developer, because software development touches every aspect of our lives. If you are a developer and don’t feel passionate about your work — find some other work. Your talents and skills are needed where your passion lies, so go there.
Resilience
Like most rewarding things in life, software development isn’t always easy. In fact, most of the time it isn’t easy at all. It is challenging. Even when you’ve been a developer for 20 years like me, you encounter obstacles nearly every day. Every new piece of code I write is broken until it works. Then I change it and often it’s broken again — until I debug it and fix it. I mean — maybe I can count on one hand the number of times I sat down and wrote a substantial piece of code that worked exactly the way I wanted and expected, just the way I wrote it the first time. I know I’m not the only one who feels like I get it wrong more than I get it right — most of the developers I know have shared the same experience with me.
This is just part of being a developer. Resilience and the ability to embrace failure upon failure and not be deterred is really important. If you get stopped by this kind of frustration, you won’t be a developer for long, or if you are, you’ll stick to what you know, and won’t take on the really interesting problems. You likely won’t contribute very much of value and interest.
So don’t get discouraged — you are not alone. Keep calm and carry on coding.
Compassion
Carrying on from the last topic — compassion is an important quality of a happy developer. Not all great developers are happy, and not all happy developers are great, but the two are related. Who would you rather work with?
It’s important to have compassion for yourself. You will make so many mistakes. You will have to overcome so many difficulties. If you have compassion for yourself, you’ll be more likely to demonstrate resilience.
Having compassion for yourself will allow you to feel good even when you make mistakes and encounter obstacles that you don’t quickly overcome.
If you have compassion for yourself, it’s easier to have compassion for others. In fact, I would challenge you to consider that if you don’t have compassion for yourself, you can’t truly have compassion for others (maybe pity, but not compassion).
You won’t be the only one making mistakes. Sometimes some other developer will check in a code change that breaks things, and you will spend hours or days trying to figure out what it is that you did to break your code, only to find that it was your dear colleague who introduced the problem. When that happens (and it will happen), if you can have real compassion for your work mate, it will just be another thing the team has gone through together and overcome, instead of some reason to judge, blame, or shame. It will make the team stronger, and what you create together will be greater.
Humility
Sometimes we get it right — and boy does that feel good! You solve a hard problem, or improve performance of your application by heaps, or finally master that framework that you’ve only kind of understood for so long. It can be tempting to feel like some kind of coding god in those moments, and there’s nothing wrong with that — enjoy the victories! Just remember there is still a lot to learn, and that victory was likely earned after a lot of hard work rather than because of some innate ability. We are all learning all the time, in this field perhaps more than most.
Own your accomplishments, but remain humble. Don’t assume that just because you know more about something than someone else that you are somehow more important or valuable than that person.
Staying humble keeps us open to learning from EVERYONE and EVERYTHING.
… And no one wants to work with an arrogant prick. Humility makes you more available and accessible to the people you work with, allowing for more meaningful and genuine connections, which means you’ll create better solutions together.
A Sense of Humour
This one isn’t absolutely necessary — but it really helps. If you take yourself or situations too seriously, you are going to suffer a lot as a developer.
For example … when your staring down a release deadline and the build is broken and you don’t know why and your manager is asking when deploy will happen, or your network suddenly decides to stop working when you’re trying to do a demo in front of stakeholders that means the life or death of your current project, or your hard drive dies and you realise you never pushed those last commits that took you three days to develop to the remote repo — a sense of humour comes in handy.
Don’t take anything too seriously. The release will deploy, another project opportunity will come, and you will write that code you just lost faster the second time anyway, right? Don’t sweat it. Have a laugh, go for a walk or a run, play some video games, or meet some friends at the pub — whatever helps to remind you there is more to living than whatever situation just went up in flames.
Let your happiness come from within instead of making it depend on any particular situation or outcome.
So there’s my advice. The best part about these six qualities is that they are available to everyone. I’m not saying that everyone can or should be a software developer, but I am saying that if you are a software developer and want to be a great one, these six things will help you to be your best.

Comments

Popular posts from this blog

Documentation is Very vital before you develop any system or app

Everything you need to know when developing an on demand service app

Steps followed when creating a new software