What makes a great developer?
When I ask this, I am not talking about people who have worked for decades or have just started, but more, what aspects of a person are important as the building blocks for a good coder (or designer too).
This video isn't about how to produce lots of code, that looks beautiful, is able to be tested and passes every time, and that is committed every day. It's more about the aspects of developers that make them great to work with, employ and learn from.
The three things I like to see in developers are:
- Professionalism
- Responsibility
- Improvement
Professionalism
This is broken into two parts. The first is with people and the second is code. In terms of people, I like to know that you treat everyone equally and with respect.
It doesn't matter if a person is a senior or junior, you should be able to listen and care about what they say regardless. For juniors, for example, they make have questions or suggestions that might not be the usual way you are used to doing things but may have a different point of view that may improve the way work is done. They may also need help or mentoring, and by teaching them, you aren't just helping them be a better developer, you are also learning more about yourself which only makes you more capable.
In terms of seniors, maybe your tech lead might give you advice, and it's important to be able to listen to it and take it on board, but also to question it, and not being afraid to raise items and decisions in general if you feel they aren't the right choice for a project.
With clients or businesses, most always believe that their project is the most important thing in the world, and while many have different budgets, and you might have a bigger or smaller project, a good developer always puts in the same amount of effort or work into the time they invest.
In terms of code, having well-written code is about writing understandable code that has good syntax, such as in-line comments, reusability, and the function names have meaningful wording to explain what they are. You want the you of the future to be happy with you of the present with the code written. Properly written tests that don't just check if a component renders, but also checks common mistakes users might make to ensure bugs appear out of nowhere when an element is clicked.
Responsibility
Being able to deliver on your promises, whether is a piece of code, or an application, there is nothing worse than hearing from businesses or clients that their last developer didn't finish the project, they asked for more time, more money or had scope creep.
A good developer understands their technology stack, and are able to estimate how long something should take and cost. If there are issues, they understand those usually occur but are able to identify them and solve them on their own using things like StackOverflow.
Also asking for advice when you aren't able to solve a problem is important too because you don't want to work on an issue that someone on a higher might have already fixed. And if you make a mistake or a bug, as happens to everyone eventually, taking responsibility for the mistake is important so that it can be fixed. Often people are scared to own up to mistakes, but we are all human and it should be something that we acknowledge everyone does.
Improvement
Making sure that you understand your technology stack, and how it's changing over the years. That there is new functionality each year and staying in tune with that is important. For example, JavaScript has improvements such as arrow functions and decomposition, and if you don't keep learning what's changed, in a few years you won't be able to read half the code that's being written in modern libraries or examples.
Learning new libraries is also important, such as when SASS came out, learning and implementing it over plain CSS saved a heap of syntax and time, making projects completed faster and therefore cheaper too. When React initially was released, it changed the way people code, by using components and props, and the mindset of compartmentalising your application allows you to take those coding aspects outside of React and into any programming you do in any language in the future.
Also improving your code should be as important as improving yourself. It's much easier to do incrementally, and you avoid security issues that might arise, and large amounts of refactoring that might be required. If you leave it for too long, a project might seem easier to re-write from scratch than refactor. And libraries are changing so often, improving means making sure you understand why those libraries change (such as react-router v1-v5) and implementing those improvements if they are worthwhile.
These are just a few high-level things I think are important to great developers, but I am sure there are heaps others. What do you think are important aspects for a good developer?
Want to see more:
I will try to post new great content every day. Here are the latest items:
- 4 Simple CSS Hover Transitions for your Elements Background
- How to implement Dark Mode with CSS new media call: prefers-color-scheme
- Why you should Whiteboard your Design & Development, UI & UX
- Creating a Mobile Design and Developing it
Please follow and support me:
Adrian @ Youtube
Adrian @ Patreon
Adrian @ Twitter
PS. Does anyone know how to add colors to 'pre' code on dev.to?
Top comments (5)
In my experience, a good rule of thumb to go by when trying to source a 'decent' developer is seeing if they respond to problems with possible solutions.
You'll be amazed how many developers are happy to expect others to actually do the problem solving; they are only interested in the instruction.
in my experience the key is not to have solutions, but to resist the urge to propose your solution, and instead to do a root cause analysis until the problem is so clear that the problem becomes obvious
That's the holy grail! Good luck finding a management layer understanding of this in the common working world where technical debt is difficult to describe.
To add to this, itβs also is interesting to see the problem solving threshold people have. Some people give up immediately when an issue occurs and ask others, some never ask and might spend forever trying to solve a problem. A good balance is needed to solve things on your own but also ask others once youβve properly exhausted your options.
Teachable and willing to teach