Finding Top Programmers - A Guide to Hiring the Best Developers

Finding Top Programmers - A Guide to Hiring the Best Developers

Locating the optimal programmers can be a daunting task. For non-technical people like entrepreneurs and small businesses proprietors, the job can be downright nerve racking. People finder for the one elusive "Super Developer" or "Uber Programmer" to fix all their software problems, in two the time, with no bugs. These super programmers are readily available. I've met them. I've lived with them. They continue to exist a different plane than us mere mortals. And they all work at Google. developer

Nevertheless, you can find excellent developers which will complete projects quickly, with the desired specifications. One key to finding awesome developers is understanding how to evaluate them. This document will help you through the technique of selecting programmers with the proper qualities.

Because everybody's into acronyms let's coin anyone to describe the traits of your excellent developer - JUICED (despite the word's negative connotation with steroid use and OJ Simpson.) While you don't want your programmers to kill to acquire code out on time, you are interested in somebody aiming for desire to post.


Let's move on with J (being the first letter inside the word "Juiced") which represents Judgment. Not judgment like you're waiting till judgment day to your web developer to finish the project. Judgment as in your programmers have good judgment and so they exercise it. To emphasise why judgment is really important I'll let you in one big key to software development:

Most software projects fail because individuals work on the wrong things.

You can forget anything else in this article whilst still being be more informed about software development than 97% of businessmen (without needing to spend thousands of dollars on expensive degrees). What does it mean to "work for the wrong things?" I'll offer you an example. Say you have a project to build a website tracking gas prices by geography. An individual enters an address and sees a list of gas stations and the newest prices submitted by a user.

Now your developer might want to code up a Google map, because it is cool an interesting. But, he could spend too much time, when a simple list may have sufficed. Before spending time and effort coding one particular feature, a good programmer will use judgment and look with the customer or project manager to make sure time spent is in line with budget, timeline, and priorities.


Of course a programmer must understand the application in order to make it work as the customer desires. At a basic level, it helps for your programmer to have a solid grasp of written and spoken English. I've managed many programmers with English as a second language with excellent results. Currently you're likely to run into programmers with English as a second language, so it is not really a problem.

As the spoken language is vital, the programmer should learn the language from the client's business. Each industry and project has its own set of terms, a distinctive nomenclature. A good programmer will comprehend the language and how it requires the final application.

In addition to comprehending the problem space, an outstanding programmer will accurately read and interpret the work specifications. Because no spec is perfectly written, a great developer will ask relevant questions after reviewing the important specifications. These questions will demonstrate an understanding of the application and could reveal missing details or perhaps an inconsistent design.


While a fantastic developer doesn't need to be a Star Trek big brain alien genius, they certainly need a certain form of intelligence. Programming requires traits beyond simple problem-solving and pattern recognition. Writing code involves a large amount of abstract thought. One needs to hold in mind several interconnecting concepts, choose the software design patterns and tools appropriate to the problem at hand, can remember the correct syntax, and write the code. Aptitudes in math, science, and Rubik's cube solving would placed you on the right track to finding a qualified candidate.

Mental focus plays no small part in programming. Obtaining a bug in several thousand lines of code could be a most frustrating bet on "Where's Waldo?" A decent developer can troubleshoot bugs, regain the condition of mind when the code was originally written, making the appropriate corrections. Beyond having good bug fixing skills, a brilliant programmer designs software that inherently reduces bugs through modular design.


A competently written program looks good inside and out. From the outside (the all important customer's point of view) the applying has a good graphical user interface and fulfills the important requirement. The system behaves needlessly to say, solves the desired problem, and offers peace of mind. For a savvy application, the whole is larger than the sum of its parts. It possesses smoothness. To make this happen quality, the developer takes the end user's perspective when designing the application. How many times have we used troublesome websites or applications and thought "Did the programmer even utilize this?" With the end user shows courtesy and also competence.

While users know well written applications when they see them, it takes a fellow programmer to recognize competently written code. Simply what does this mean? Competently written code is extensible - written with future changes in mind. Extensible code has ample comments, functional organization, meaningful variable names, and manageably sized modules. A decent programmer can write code that works well and meets requirements, but be a challenge to add features to. A brilliant developer writes code realizing it will need to be maintained - either by him or someone else. Programmers of this caliber not merely write extensible code, they recognize and appreciate other developers who the same.


This can be one of the most controversial areas when judging potential programmers, so let's spend some time exploring it. Experience may be categorized in two ways - the buzzword approach and also the expert approach. The buzzword approach, also referred to as the HR (Hours) method, involves scanning a candidate's resume searching for a minimum number of years using certain languages, technologies, databases, software applications, etc. Unless the HR person checks the best boxes on her or his list, the developer never gets past the first round. Programmers themselves refer to this as the "grep" method, named after the Linux command line tool that scans files for the string.

A strict buzzword approach fails on several counts. Using the right words will not make a classic novel, or maybe a good read. I've personally worked with programmers with a decade of 9-5 experience of a particular language, who still didn't grasp fundamental concepts of software design. Their code was difficult to maintain, and the overall system suffered. I've also trained people who had never written a distinctive line of code who intuitively understood software design. Within six months of programming, their code quality surpassed the person with ten years of know-how. Ultimately, the buzzword method fails because HR people not have the mindset to spot excellent programmers.

The next way to judge a programmer could be the expert method. You consider depth of knowledge in a particular technology along with the difficulty of the problems solved. Programming is around problem solving more than about understanding the commands in any one language. Here's another secret - try to find programmers who have worked on or taken training in compilers. Once a developer learns how to make his own programming language, mastering another one becomes routine.

Again let's utilize natural language analogy. Say you experienced to write a novel in Spanish. You have two candidates: one that took three years of Spanish in senior high school and one who translated a 500 page novel from French to English a single year. The HR method would find the first candidate and never even consider the second. Which will you choose?

Ultimately once we think about experience, we're talking about the difference between theory and employ. In theory, somebody with 3 years of Spanish should write an improved Spanish novel than somebody having a year experience in French. And at first, the Spanish student will produce more words for you personally novel. But in the long term, the translator will outperform and make up a better work.

How do you find great programmers depending on experience? Use a hybrid approach. Seek out somebody with depth practical experience in a particular area, then evaluate for adaptability. We work with a custom selection process that screens for problem-solving abilities in addition to understanding of a particular language.


While dependable developers may be an oxymoron, as the personality type who enjoys and excels at programming ironically dislikes structure (at least social structure). The "Tao of Programming" tells a parable about programmers who rebelled when told that they had to work 9 to 5. But due to the freedom to make their very own schedule, "they came in at noon and worked to the wee hours of the morning". This story illustrates why people say managing programmers is much like "herding cats."

The final trait of a solid developer could equally well be "Trustworthy", but "Juicet" is not a word. As programmers frequently have access to critical business and personal information, the importance of trust can't be underestimated. Your best developers will hold to a personal standard of trust and integrity, deliver code dependably, and have a skeptical eye to societal norms. Is going on balance.

So you desire a programmer individual preference can trust and who's self discipline enough to keep on schedule. Give this developer scheduling flexibility and interesting projects and he'll achieve maximum productivity.

Final Words on Juiced

Likely to overall quality to a "Juiced" programmer - being juiced by what you do. Good programmers have adoration for their craft. They're excited to solved problems and work with new and interesting things. Quality developers see programming as art; albeit art sometimes only another practitioner can appreciate. When you are evaluating developers, look for people that program because they find it irresistible. developer