Finding Top Programmers – A Guide to Hiring the Best Developers
Finding the right programmers can be a daunting task. For non-technical people like entrepreneurs and small enterprises, the job can be downright nerve racking. People search for the one elusive “Super Developer” or “Uber Programmer” to resolve all their software problems, by 50 percent the time, with no bugs. These super programmers do exist. I’ve met them. I’ve lived with them. They go on a different plane than us mere mortals. And so they all work at Google.
However, you can find excellent developers who’ll complete projects promptly, with the desired specifications. One step to finding awesome developers is knowing how to evaluate them. This article will help you through the means of selecting programmers with the appropriate qualities.
Because everybody’s into acronyms let’s coin someone to describe the traits of your excellent developer – JUICED (regardless of the word’s negative connotation with steroid use and OJ Simpson.) While you don’t want your programmers to kill to have code out on time, you are interested in somebody aiming for the thing post.
Let’s move on with J (is 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 job. Judgment as in your programmers have good judgment plus they exercise it. To stress why judgment is so important I’ll permit you to in one big key to software development:
Most software projects fail because those 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 (while not having to spend thousands of dollars on expensive degrees). Simply what does it mean to “work for the wrong things?” I’ll offer you an example. Say you have an undertaking to build a website tracking gas prices by geography. An individual enters an address and sees a listing of gas stations and the newest prices submitted with a user.
Now your developer might want to code up a Google map, because it is cool an interesting. But, he might spend too much time, when a simple list could have sufficed. Before spending time and effort coding one particular feature, a great programmer will use judgment and look with the customer or project manager to make certain time spent is consistent with budget, timeline, and priorities.
Needless to say a programmer must appreciate the application in order to make it be the customer desires. In a basic level, it helps for that 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 being a second language, therefore it is not really a problem.
Even though the spoken language is very important, the programmer must learn the language from the client’s business. Each industry and project possesses his own set of terms, a unique nomenclature. A good programmer will view the language and how it requires the final application.
Along with comprehending the problem space, an outstanding programmer will accurately read and interpret the job 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 may reveal missing details or even 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 plenty of abstract thought. A person needs to hold in mind several interconnecting concepts, select the software design patterns and tools appropriate for the problem at hand, remember fondly the correct syntax, and write the code. Aptitudes in math, science, and Rubik’s cube solving would put you on the right track to finding a certified candidate.
Mental focus plays no small part in programming. Locating a bug in several thousand lines of code can be quite a most frustrating bet on “Where’s Waldo?” A decent developer are able to troubleshoot bugs, regain your 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 in and out. From the outside (the valuable customer’s point of view) the application form has a good graphical user interface and fulfills the functional requirement. The system behaves as you expected, solves the desired problem, and provides peace of mind. For a savvy application, the whole is bigger than the sum of its parts. It possesses smoothness. To accomplish this quality, the developer takes the final user’s perspective when making the application. How many times are we used troublesome websites or applications and thought “Did the programmer even use this?” With the end user shows courtesy in addition to competence.
While users know savvy applications when they see them, it takes a fellow programmer to spot competently written code. What does this mean? Competently written code is extensible – written with future modifications in mind. Extensible code has ample comments, functional organization, meaningful variable names, and manageably sized modules. A significant programmer can write code that works and meets requirements, but be hard to add features to. A super developer writes code knowing it will need to be maintained – either by him or some other person. Programmers of this caliber not just write extensible code, they recognize and appreciate other developers that the same.
This really is one of the most controversial areas when judging potential programmers, how about we spend some time exploring it. Experience may be categorized in two ways – the buzzword approach as well as the expert approach. The buzzword approach, also referred to as the HR (Hours) method, involves scanning a candidate’s resume hunting for a minimum number of years using certain languages, technologies, databases, software programs, etc. Unless the HR person checks the proper boxes on her or his list, the developer never gets at night first round. Programmers themselves refer to this the “grep” method, named after the Linux command line tool that scans files for a certain string.
A strict buzzword approach fails on several counts. While using right words doesn’t make a classic novel, or possibly 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 challenging to maintain, and the overall system suffered. I’ve also trained those who had never written a type of code who intuitively understood software design. Within half a year of programming, their code quality surpassed anybody with ten years of expertise. Ultimately, the buzzword method fails because HR people don’t have the mindset to spot excellent programmers.
The second way to judge a programmer is the expert method. You consider depth of knowledge within a particular technology and also the difficulty of the problems solved. Programming is around problem solving more than about knowing the commands in any one language. Here’s another secret – seek out programmers who have done or taken a program in compilers. Once a developer discovers how to make his own programming language, mastering a replacement becomes routine.
Again let’s use the natural language analogy. Say you needed to write a novel in Spanish. You’ve got two candidates: individual who took three years of Spanish in high school graduation and one who translated a 500 page novel from French to English in a single year. The HR method would select the first candidate and never even consider the second. Which would you choose?
Ultimately once we think about experience, we’re talking about the difference between theory and employ. In theory, somebody with several years of Spanish should write a better Spanish novel than somebody using a year experience in French. And at first, the Spanish student will produce more words to suit your needs novel. But in the long term, the translator will outperform and make a better work.
So how do you find great programmers based on experience? Use a hybrid approach. Look for somebody with depth of expertise in a particular area, then evaluate for adaptability. We utilize a custom selection process that screens for problem-solving abilities in addition to familiarity with a particular language.
While dependable developers might be an oxymoron, as the personality type who enjoys and excels at programming ironically dislikes structure (at the very 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 given the freedom to make their particular schedule, “they came in at noon and worked for the wee hours from the morning”. This story illustrates why people say managing programmers is much like “herding cats.”
The last trait of a solid developer could equally well be “Trustworthy”, but “Juicet” is very little word. As programmers will have access to critical business and personal information, the importance of trust can’t be underestimated. Your best developers holds to a personal standard of trust and integrity, deliver code dependably, and possess a skeptical eye to societal norms. It’s all about balance.
So you are considering a programmer individual preference can trust and who may have self discipline enough to be 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 passion for their craft. They’re excited to solved problems and work on new and interesting things. Quality developers see programming as art; albeit art sometimes only another practitioner can appreciate. When evaluating developers, look for individuals who program because they adore it.