The targeted audience of this article is human resource personnel, professional head-hunters, agents of recruitment agencies. If You are one of those recruitment agents and You think that You do not have the time to get into details and read some useless, impractical, philosophical, rant of some techno-scum, then You can save Your time by skipping the rest of this article, but You will also save yourself a lot of embarrassment by stopping recruiting software developers. If You wonder, _why_ You'll save yourself the huge amount of embarrassment, then You'll have to read on.
General managers definitely disagree with practically all of the thoughts that are expressed in this article, but I claim that many talented people often do care about, what kind of people they spend their days with. I believe that only dumb people prefer to be kings of jungle in stead of being a joker of a team of geniuses. I'd rather be the joker and that sets requirements to very many things, including the process, how my co-workers, project partners, are chosen. If the manager of the company thinks that hiring people is so irrelevant that the task of looking for them can be delegated to someone else, who is not smarter than the manager himself is, not to mention the fact that general managers often consider themselves to be the smartest people in the whole company, then clearly that manager does not care about the project technical success enough and therefore DOES NOT DESERVE the smartest people to work on his projects.
As far as I understand, in 2014_10, recruitment agents are not specialists in the field of software development and therefore are not smarter at evaluating software developers than are the general managers. Consequently, most offers that come down through recruitment agencies are crap, because whoever gave that task to those agencies clearly does not care about the technical abilities of the software developer candidates. The ones that are not crap, are social process accidents, an exception, not a rule. After all, it does not take a genius to figure out that if an opera singer needs to be hired, the way to find a good opera singer is to go to some good opera singer and ask him/her to recommend someone. As far as I understand, recruitment agencies do not excel at software development, therefore they are not the stars to be asked for new software developers. The fact that general managers, who hire through recruitment agencies, could not care less about the technical success of their project, is vividly demonstrated by the fact that it is possible for a general manager to walk to an office of some software development company or university and ask some of the professors or software developers to recommend someone. Yet, they do not do that. Instead, they just shove the task with a wire transfer to some recruitment agency, where people know nothing about software development, except that there is big money there. The idea that a "job ad" should consist of an introductory video, where the CEO of the company describes, what kind of changes does he expect to happen, after the new recruit has started to work on his projects, is certainly too far fetched, despite the fact that interactive resumes are expected.
So, that being said, let's suppose that the company is not run by a general manager, but a person, who actually cares about the technical success of the project and knows nothing about software development. In that case, the rules of a successful multi-disciplinary project apply. No-one is able to know everything. We all have our limits. As said earlier, the only way to properly choose a specialist without knowing the field oneself is to ask recommendations from other specialists or allow specialists of the field to evaluate candidates. Other, fine, software developers, including university staff, should be the ones, who do the final choosing, unless compliance is preferred to technical excellence. I hate compliance and love to work with people, who have technical excellence and who are stubborn enough to prefer technical rigor to shipping crap by deadlines.
So, what to look for in a software developer? In my view, the question might be popularized by asking: What to look for in a writer, if You have a task of writing a truly fine Sherlock Holmes novel? Knowing finesses of a language, English, Estonian, Finnish, is fine, but good knowledge of languages, includes programming languages, does not provide the ability to write smart solutions. Perfect grammar and good vocabulary are not sufficient to allow an average person to write a smart Sherlock Holmes story. Writers, including the ones that write the stories for Hollywood hits, actually need to practice and train for far more than just plain English, Estonian, Finnish. On the other hand, a fine writer, novelist, can probably outperform native speakers even in a foreign language. Lack of vocabulary and language elegance will slow the novelist down, but not enough to limit his/her from outperforming the native speakers. To put it bluntly, a stupid person is stupid in any language and a smart person can express smart ideas even with broken grammar. Yet, the recruitment agencies and general managers evaluate software developers by programming languages. After all, there is no end to the softwre-development-PORNO that most general managers love to manage.
The next question might be, is it OK to replace the writer of the Sherlock Holmes novel at the middle of the novel? According to the general managers, MBAs, it's OK. As a software developer, I think that it is NOT OK, UNLESS the new writer is at least as good as the previous one and has read all of the work of the previous writer. May be in the case of the Sherlock Holmes novel it's OK for murderer Xm to murder some victim Xv and at the end of the novel the victim Xv has a drink with Sherlock in some bar, ON EARTH, while being LIVE and WELL, but if the same stunt is tried in software development, then, AT BEST, the software crashes. The worst case scenario is that software will never crash, but will ruin the data without anyone noticing that for a long-long time. If the data is ruined and it is not known, when it happened, then some of the new data is mixed with old, ruined, data. If new data can be discarded by restoring the system state from backups and re-entering the new data, it is still not possible know, which backup copies can be used for the restoration.
It is possible to argue that the last back-up copy that was done, when the old Sherlock Holmes writer was in office, years ago, is probably OK, but You get the irony... Yet, the general managers ignore the fact that it takes literally a year for a software developer to "read the previous parts of the Sherlock Holmes novel", to get acquainted with the works of the previous developers to the level that the "Murder victim having a drink with Sherlock Holmes, on EARTH" blunder has a reasonably small likelihood of happening. The general managers, MBAs, are certainly deeply convinced that they can afford to mistreat, bully, software developers to the point of receiving their resignation or plan business projects by ignoring the cost structure of software projects. Depressing, but true and that also explains, why I want to have direct contacts with my clients, because then I can warn them of the fact that may be it's better for them to skip burning their money on a project that produces useless, incomplete, crappy, software and spend the money on something else, something that actually gives them at least something valuable. After all, software is useless, if it can not be used and unreliable software that spoils the data, can not be used.
Over the years, in practice, I have come to a conclusion that is written in Estonian like that: "Projektid ja töökohad tulevad ja lähevad, kuid inim-suhted jäävad!". My translation of it by meaning is: "Projects and positions in companies are temporary, but human relations, good or bad, are permanent!" That is to say, NEVER sacrifice integrity to money or position in hierarchy and any loss taken in forms of getting dismissed for being honest, including honesty about crappy products/services of Your employer, is far less than the loss that comes with bad karma in a from of increased prices and closed opportunities. Yes, You read it right: monetarily speaking, there are jobs and projects that are not available to dishonest people and total bastards, for example, murderous drug lords, can not buy certain material goods and services even for a briefcase full of money.
About the Fundamental Immorality of Human Resource Work
There are a lot of examples about conflicts of interest that arise from the use of human resource departments and recruitment agents, but one of the examples is that recruitment agents get paid more, if the candidate that they find, is hired, but if the candidate is honest and tells the potential employer that the given time frame and budget does not allow the project to meet its expectations and it is smarter to spend the money on whatever else in stead of developing software that will not help, the recruitment agent is motivated to prefer incompetent or dishonest persons to competent and honest persons. Given that the recruitment agent's client prefers the recruitment agent to present him/her a software developer, who says "Yes, I can" rather than "You're wasting Your money on this project and I will not let You do that", then the software project failure will not cost the recruitment agent any karma points.
Long story short: in a world, where death penalty is outlawed, executioners should find themselves a new occupation. Beautifying, renaming, hyping, redecorating, PR-stunting, rebranding the activity will not cut it.
On the other hand, if morality is too much to be asked from Human Resource specialists, then there is a joke on YouTube (by Tim Lee) that might offer a solution that alleviates the symptoms of immorality.