What makes a good software developer?
Software developers are usually considered the smartest in the room. The knowledge of advanced technology, innovations, and fast thinking make them unique individuals. Adding the height of their standard salary, we have a profession that is clearly valued on the market and skills very much desired by tech (and non-tech) companies. However, are the skills alone enough to be a good software developer?
Each of us is different
There is an assumption that all developers are the same. Brilliant, attached to their code, introverts. There is, however, a difference in their work approach that creates a division between those who care more and those who stopped. You need a smart vision and a bit of experience in the field to notice who really contributes to the project. There are aspects on which basis you can tell if the collaboration works well or not really.
There’s nothing wrong with being devoted to the code more than to other aspects of the project. Software developers usually prefer to level up on their coding and tech skills rather than racing for the project manager position. However, it doesn’t mean they can shut the door and do their job without staying in contact with the rest of the team. Usually, the meetings don’t require the presence of all members of the team but if one is expected to be there, they should show up. In other cases, they can at least make an effort to contact via skype or simply ask the team about the current state. Exchanging information is a crucial part of the collaboration. Poor communication leads to unsatisfied clients as the project won’t work without a well-coordinated team.
Awareness of the profession
The reason why software developers often prefer to work separately is their pride that comes from thinking their work is irreplaceable. In fact, their work should be replaceable as no one wants to rewrite the code from the beginning just because the project was previously led by a different developer. That’s why one software developer leaves the code in a way so that others may somehow change it, complete it or improve it. Conclusion? A software developer doesn’t have to work for life for the same company as any other will also do the job.
Understanding of client’s needs
Understanding and respecting someone’s vision is crucial. As a developer, you can analyze a client’s idea from your point of view and comment on it during a meeting. Since you’re going to build it, your suggestions on how to improve the overall functionality are valuable. However, questioning the product three days before its deadline is ridiculous. Sometimes it’s better to launch the first version already than to waste a couple of days, postponing the release date just because of one person’s opinion. Changing the key functions in such a short timeframe isn’t reasonable and only an experienced developer knows that there is time for suggesting different solutions and there is time for work and work only.
A big part of someone’s performance depends on their humility. For those who don’t know, one of the duties of a developer (apart from making sure the code is written in a clear way) is creating documentation. Any software developer that has a problem with this “additional” task certainly isn’t a good one.
Why do you need documentation?
The reasons are:
- other developers can easily use your code and build upon it
- it allows reproducibility and transparency
- you learn self-determination
- it improves the design of the code
- it supports open science
Only documentation made by someone who wrote the code is a well-prepared one. It has to be made consistently while creating the functions and has to be written in technical language so it’s definitely a developer’s responsibility (there are also technical writers who can take care of it but it’s better when done by an author of the code). Speaking of documentation there are several tools that are worth mentioning: Markdown editor, Snagit for screen capturing and Adobe RoboHelp for publishing.
General involvement in the project
By involvement, I mean being present at the meetings, active listening and having a conversation with a client to know something more about the product. What’s the history behind it, what’s the vision of its functionality and what are the needs of the client. Being involved from the very beginning is a sign of respect that you have for this project, the client and the whole team. It’s important to keep the contact stable, consistent and healthy. Sitting always quietly and then trying to be another Steve Jobs just before the deadline is not professional nor smart behavior.
Learning new technology
Lastly, interest in IT trends and new technology. The worst thing you can do as a developer is sitting for 10 years in one job, constantly making the one thing in old technology. This is how your ten years of experience lose value because there is no development of your profession. Very often those with shorter work experience are more tech-oriented than the rest of “one product for life” senior developers. It’s because of their involvement in different projects, willingness to learn various technologies, observation of mobile architectures and looking at one problem from different perspectives. All of this makes you know that there is more than one approach to writing code. And there is more than one solution to a given problem.
The willingness to create using new technologies, bringing ideas into life, suggesting better solutions are the features you should look for in a developer. A good developer will take care of the project with full engagement from the very beginning. On the other hand, the bad one will negatively affect the collaboration and the result, and his behavior may contribute to the creation of technical debt. Want to know more about this subject? Read: What is technical debt?