7 Qualities of a Software Developer We Look for in Candidates
One of my first tasks at the beginning of onboarding process at Bright Inventions was to read a book. What kind of book and why should I read it?
This book is written by Robert C. Martin called Uncle Bob, who is quite a popular developer and author for at least a few books for developers. Ula, my manager, believes that we can find in the book some reflections of a developer's mindset that we are looking for in Bright Inventions. As in every book there are some extremes, but the image of presented professional might be a guidance to understand what kind of behaviours and actions we want or don't want to have in our team. And is there a better way to get to know the “persona” of a software developer than reading a book about the professional developer you are looking for?
My first reflection after reading "The Clean Coder" is that the author describes not only software developers, but people who are able to live in society and work effectively with other people. So I almost fully agree (well maybe with a small exception) with Uncle Bob and I believe that everyone who wants to be a good employee and teammate should adapt to some rules, which can make us better in cooperation and effectiveness.
I believe that “The Clean Coder'' book is all about responsibility. Let me explain how responsibility affects our everyday work and what we actually should be responsible for.
1. Be open and reflective
It seems to me that some people think that the work of a software developer focuses only on writing code. Of course that is an extremely important part of their job, but there is another important part. The key to success is to effectively cooperate with teammates and clients. So there is a lot of space to take responsibility for our own behaviour.
So we should ask ourselves some questions:
- Are we open to cooperation and therefore other people opinions?
- Are we able to share our own opinion with other people?
- Are we able to say sorry, when we make a mistake?
So are you? I hope so! Without communication abilities and openness it’s hard to establish smooth and effective collaboration.
2. Take your career into your hands
Another thing we should feel responsible for is our own career. Developing our skills, choosing the path which we would like to follow, being persistent in the pursuit of a goal – these are our responsibilities, which we should take seriously. Uncle Bob believes that it is the employee's responsibility, not the employer's, to initiate attending conferences, courses, buying industry books, and arranging time for learning. It's great that it's currently so popular among employers to invest in employee development. Let's take advantage! And let's remember that it's up to us how we use these perks and benefits.
3. Be responsible for your own work
For example developers should be responsible for their own code and bugs. Naturally everyone can make mistakes, it's more than likely to happen. So what can we do? Prepare! But how?
There are a few ways to prevent mistakes.
Firstly, be honest with your teammates and project manager/product owner/scrum master and speak directly about how long it will take you to do a particular thing. Don't dim that you're going to try to do something faster when you know it will take more time because PM/PO/SM puts pressure on you. That is their job to finalize the project and your job is to be assertive. For the sake of the project, do your best to estimate sincerely and avoid committing to deadlines that you are not sure of.
Secondly, do your best to anticipate potential errors in your code. Create correctable, simple code. And no matter what, test your code.
4. Develop your skills and share your knowledge with others
Allow the knowledge to circulate. Be open to feedback, to code review. Once (during the interview with an extremely nice developer) I heard a very wise sentence, "My code is not me". I believe that everyone should sometimes tell it to themselves (not only devs).
Other people's advice, suggestions and feedback are not about you, they are about how they interpret your work/behavior/code. So do not take them personally. The best thing you can do is to use them and be smarter and generally better! And the second part is to share your knowledge, advice and feedback with other people to let them be smarter. And then all of us will be smarter. Easy. 😎
5. Take care about your creativity resources
As a software developer you have to be creative. However, you don’t need to be born with creativity. You can develop your creativity and care about it. How? Uncle Bob proposes to read creative books/articles which are not work-related. He believes that they recharge our creativity batteries. So we can sum it up with the following sentence: other people's creativity stimulates our own creativity. When your creativeness battery is full, then you can resolve more difficult problems in different, new ways. And be smarter. 😎
6. Take care about yourself!
Take care about work-life balance, about your sleep, about proper, healthy, wholesome food – these are the factors affecting the well-being of your mind and body. Well-functioning mind and body have a huge influence on your daily work.
7. Get to know yourself
It is extremely important to know when we are the most productive. When does our focus decrease? What conditions have to be fulfilled to have as many big brain moments as possible? Do we like to work with music or without? There are a lot of questions we can ask ourselves to know ourselves better. Another important thing is to listen to ourselves and adapt our work time to our preferences to be as productive as possible.
Where do I disagree with Uncle Bob?
At the beginning of the blog post I wrote that I almost agree with Uncle Bob, but there is an exception. This exception is about work-develop-life balance. I believe that spending 8 hours, 5 days per week at work is a lot of time. Naturally developing our skills is extremely important – I agree with the author on that.
Yet Uncle Bob believes that a professional developer should spend 3 hours per day on self development in the programming area (including weekends) and have fun with it. It may indeed be a way to be a professional, but is it the only way? I do not think so. That means that you should choose to spend less time with your family, friends, pets or to resign to develop in other areas. In my opinion that sounds dangerous. We have to be careful of how we spend our free time and always remember what is the most important to us – and that's what we should be guided by.
If you're curious about other perspectives, I encourage you to read my teammates' thoughts on the book The Clean Coder. And I'm curious about your perspective! Do you agree with Uncle Bob? Feel free to share your thoughts in the comments.