What makes a truly great developer? Knowledge of Java, Node, PHP or whatever is important, but it’s not everything. Some might say a positive attitude. Some might say a high-sugar, high-caffeine, high-bacon diet. Some might say an absence of sunlight and as many monitors as a desk can support.
If you’re adding a developer to your team it’s worth considering these traits:
- Passionate; loves computers and coding, takes an interest and thinks about things even outside working hours.
- Curious; wants to understand new things, researches unfamiliar terms.
- Humble; recognizes that other people are smart and have great ideas and knowledge, respects relationships more than technology.
- Creative; sees ways to do things that others don’t see, comes up with better ways of doing things, goes beyond.
- Friendly; easy to get along with, does not sabotage or bring down team morale.
- Fast learner; can quickly research, understand and use unfamiliar software technologies, tools and languages.
- Focus; works towards completion of tasks with minimal distraction, avoids taking tangents.
- Logic skills; ability to devise logical solutions for programming problems.
- Pragmatic; able to make a value judgement about what is really important, values practical outcomes and getting the job done, avoids gold plating.
- Not dogmatic; willing to change their mind and see things from the perspective of someone else, values the intellect of others. Not a jerk.
- Intellect; able to grasp very complex concepts, able to develop very sophisticated code, able to do “the hard stuff”.
- Energy; productive, motivated, strong work ethic, gets a lot of work done in the available working time.
- Flexible; adaptable, happy to take new directions, happy to work with new technologies, happy to try new things, happy to change priorities.
- Ability to write; can string words together to communicate. Client emails, co-worker emails, documentation, emails, proposals, blog posts, tweets.
- Knowledge of computer science fundamentals; object oriented coding, design patterns, algorithms and data structures, how computers work at a low level, hardware, operating systems, networking, databases & much more stuff.
- Verbal communication; able to explain their own thought process, can explain complex concepts, can participate in discussions with team members, can communicate with customers/users and other non technical people.
- User oriented; can empathise with users, understands where the users are coming from and what is most important to them.
- Quality oriented; understands software testing, writes tests for their code where appropriate, understands the concept of test driven development, meets organisational expectations for testing & quality, feels satisfied by a job well done.
- Seeks simplicity; understands the danger in complexity, prefers simple solutions.
- Honest; can admit mistakes, unafraid to admit they don’t know something.
- Detail oriented; pays close attention. Avoids missing things, not sloppy or half-baked.
- Manages own workload; able to prioritise their own tasks, willing to adapt to change.
- Appreciates peer review; does not feel threatened or insulted by peer feedback.
- Writes clean code; readable, well formatted, appropriately commented code.
- Wants to be working on this project, at this company; a developer is unlikely to do a great job if they are working on a project they don’t enjoy, or working at a company they don’t like.
If you are hiring a developer and you could choose only five characteristics, which would they be? we’d choose passion, energy, ability to learn, flexibility and friendliness. With them, you’ll probably get many of the other characteristics for free 🤗