As technology has grown to become an omnipresent facet of our lives today, there have been several folks who have been training to become developers and programmers. However, a recent study shows that over 80% of software engineers aren’t industry-ready. With such a heavy inflow of folks not fully qualified to be developers, it becomes really difficult to sort the wheat from the chaff. The ever present question remains - How to pick a good developer?
Over the years trying to get the best talent possible for Siam Computing, we have worked out a strategy on how to pick the right talent, and you can look at applying the same for your organization. This is the first article in this series, over the next few weeks we will dive deep but today we will talk about the 3 core fundamentals that you should evaluate before settling on a programmer for your startup/enterprise. It's not all about knowing language A or language B.
Here are the 3 Fundamental Attributes (in order of priority) :
1. Developer must have problem solving ability
Programmers are knowledge workers, an oversimplified version of what programmers do is to figure out - how to automate solving a particular problem. Of Course, it's much more complicated than that, but in my experience, someone who understands the fundamentals of how things work and has a strong problem solving / logic cracking ability can find their way around and adopt technology / syntax better than anybody else.
Here is an example of folks being too focused on tech and not seeing the logic!
Ref : https://i.stack.imgur.com/ssRUr.gif
Look for someone who can understand a problem and give a solution to it, copy pasting from stack overflow / using libraries for everything isn’t the right approach always.
That's the first fundamental requirement and as long as this holds good the other attributes can be trained on much easily.
2. Developer must be technologically ready
The next important skill to have is obviously a good understanding on the technology that you are building your product / service. However, the important thing to understand here is that technology doesn’t necessarily equate to knowing syntax.
In my opinion its important for the developer to understand the constructs of a particular technology, what are the core principles patterns that it applies, how does data flow, how is the business logic layer abstracted, how is the view layer isolated, how can we write code that's DRY(Don’t repeat yourself) . Someone who understand these fundamentals will easily pick up syntax’s. Nowadays, with intelligent IDE’s and the ever present google, syntax’s are a click away but understanding the underlying framework and how to use it, is more important.
Ask your candidate about best practices, right from version control to architecture design patterns and most important of all, every new candidate needs to write code (point 11), having a round of trivia questions is pretty much pointless. The proof is in the pudding.
3. Developer must understand your domain
This is a bit of a long stretch and probably works with developers that have a good amount of experience but I believe that having developers who understand a particular domain is an added advantage that can have compounded benefits.
Anybody who has been in development long enough knows that one of the biggest challenges that exist lies around the fact that things get lost in communication from client to business analyst to developer.
Even if you are hiring a fresh graduate, take the time to explain the context and lay the emphasis on what is being done along with the reasons why. This way, you have a person who understands the larger picture rather than someone who has been given very specific instructions. Software is built upon layers, having the right foundation at the very beginning goes a long way in building a robust, maintainable codebase. To be able to take the right decisions upfront, an understanding of the domain is invaluable.
These are our top 3 fundamental attributes that we look for when hiring a developer. What are the core facets that you look for when hiring a developer? Leave a comment and let's talk about it.
PS : The next topic in this series would be around trying to conduct unbiased interviews. Stay tuned! For more such useful blogs on wordpress, productdevelopment, startups, etc do check out our blog