4 Signs of a Great Programmer
Many people need to hire programmers. It may be for coding an app, adding functionality to a website, tailoring an interface with a cloud application, or updating a legacy application. However, very few know how to tell the difference between mediocre programmers and the great ones, though the difference between them is code that works flawlessly and something that works minimally well. The difference in skill levels affects price; the great programmer charges a higher hourly or daily rate, but finishes far faster, saving you money over the lesser talent that takes two or three times longer. Here are four signs of a great programmer.
They Take the Time to Understand Your System As Is
Attention to detail is necessary for someone to be a good programmer. However, it is not enough to be a great programmer or coder. A good process improvement expert will take the time to thoroughly map the system as is before they start making changes. Then they’ve guaranteed that there are no questions about how overlooked tasks are handled. They look at the workarounds you already use and plan for how they will be properly handled.
Great programmers do the same thing with your software system. There are no missed automatically generated reports or backups of backups as required by risk managers, but instead an accounting of all these back end processes so that they are all either recorded as merged with major processes or deliberately dropped with clear communication to the relevant stakeholders.
They know where all of the data is coming in from and ensure that you don’t miss data formatting for a critical source of information, or overlook an interface one of your suppliers’ uses. The time they spend understanding things as is thus improving the odds of a smooth transition to the new system. Attention to detail doesn’t matter if someone doesn’t take the time to map out things as is before planning how to change it.
Clearly Obvious Logical Thinking – and Communication Skills
You want someone who can clearly communicate technical requirements and issues with you. You need a programmer who can draw a clear diagram of your current system as-is with all the data inputs, outputs and software modules. You must have a programmer who can explain the issues they are encountering and describe their solutions in a language that you and your technical team can understand.
You cannot afford a coder who uses minimal high level diagrams, writes impenetrable support documentation and has to be hired back to make any minor change to the system.
What about teamwork? Actually, clear communication skills top teamwork, especially if no one understands what the person is doing. And logical thinking combined with good communication is essential for others to realize they don’t understand a crucial system, whether their work is supported by one on-staff subject matter expert or a dozen other people.
They Take the Time to Understand the Customer’s Needs and Wants
A common mistake that designers make is designing a home they would like to live in instead of what their clients would like to have. Major software development projects have failed because someone designed a robust software application that didn’t behave like the customer expected it to, lacked essential functions for its intended customer base, or was too difficult to use for the average user. A great programmer takes the time to understand customer needs and customer wants. They then allocate time to ensuring that everything you need is in place and works as required before tackling the nice to have features.
The ability to create beautiful interfaces is irrelevant to this requirement. For example, a financial software application that looks great but requires time consuming manual updates and fails to protect your data from identity theft is, by definition, a failure. A software application that presents any reported data set in an easy to understand format without taking forever to generate is, in contrast, a success, even if the user interface is minimal compared to the prior one.
A variation on this theme is respecting deadlines. A great programmer will strive to meet your deadlines, and they’ll tell you if they don’t have room in their schedule to meet yours. A mediocre programmer may tell you they can probably do it and not care if they run a week or more over, though you wanted to plan the software update or rollout to fit a third party’s maintenance window.
By defining needs versus wants up front, the great programmers can divide their work into critical tasks and filler tasks and ensure the “must-haves” are completed on schedule. They’ll tell you that the problems that arose during testing will prevent wanted but unnecessary upgrades or changes from taking place so that you can meet your deadline. They plan their schedule with enough time to thoroughly test the software in every practical way, while welcoming beta testers prior to rollout.
An Ability to Handle Failure and Ways to Cause It
You only want to work with programmers who thoroughly test the software you are paying them to create for every likely and potential problem. Testing should address not only the most commonly used functions, but mission critical ones. For example, a coder creating a financial app should not only test that it is easy to import data from your bank to the application and manually enter records, but that it flawlessly exports your data to tax preparation software and can’t be hacked by commonly used tools.
Great programmers don’t just look at the load time for reports and demand on the server. They test the software for errors in data imports and typos by human users and ensure that the software application doesn’t crash when that happens. They design installation scripts that almost never screw up, as well as scripts to smoothly uninstall the software when the installation fails or needs to be upgraded. They test for data interface errors and design useful error messages.
Great programmers take the time to understand your system as it currently is, not as you think it works. This, combined with attention to detail, ensures that software migrations truly take everything you need to keep with you and clean up any loose ends. Great programmers have both logical thinking skills and communication skills. You cannot afford to have impenetrable user documentation or an inability to understand what you received. Great programmers take the time to understand both what you need and what you want. They strive to deliver the critical deliverables while planning the nice to have functions in accordance with your schedule. Finally, they plan for failure through rigorous testing of the software and building robustness into the system.