A good developer never stops learning new techniques to write better, more expressive, more maintainable and more efficient code, rather than clever tricks to automate monotonous tasks. That means good hands-on developers are nearly always geeks, as we have to dedicate much of our time to learning new languages and cutting-edge techniques We can learn some things by social osmosis, but only if we understand core concepts that relate to direct experience. Indeed if a subject does not actively interest us, that's what most of us do. We rely on other people's expertise, but know enough about the subject to avoid getting ripped off. In some academic fields a specialist in someone who has researched a subject extensively, but in most hard sciences specialists are people with active hands-on experience. Unless you have written and tested applications with complex and irregular business logic, you wouldn't be able to appreciate what application developers do. They just sit in front of screens writing quirky symbols with a few English-like key words. Concepts such as design patterns mean little if you have just learned how to do a simple loop. Now suppose you need to hire a new developer, for sake of argument, let's just assume you need a good NodeJS specialist. Who could possibly judge if a candidate knows their stuff? They may have an excellent CV, good qualifications and some good references, but in today's fast-changing world, these mean very little. Millions have worked directly or indirectly for major media multinationals. If you say you worked on the BBC news Website, which bit did you do? Did you just design a prototype for a new button or test a new interactive widget on different browsers? Does your recruiter really understand what skills are required?
- Hello, Neil. It's Ryan Adams here. Look we've got a Drupal gig on at Arty Farty New Age Media over in Soho. They need a hard-core backend guy like yourself for a couple of weeks. Would Â£400 a day tempt you?
- Well, actually I'm very busy at moment (trying to fix someone else's awful code), but might be available in a couple of weeks (just in case my contract is cut short).
- They really need someone to start straight away. This is for a massive media campaign of a leading household brand.
- What happened to the previous developer?
- Oh, he had issues, some of kind of personality clash, I think. How about Â£450 a day?
- If we continue this conversation, my contract here will be terminated. Let me get back to undoing the mess the last developer here created.
- Is your boss looking for any new developers?
One way or another for every real hands-on developer out there there's at least one recruiter, one project manager, 1 business analyst, a marketing wonk and an accountant (because many IT professionals are contractors with their own limited companies). For some jobs in London's frenetic media sector, I've been contacted by five or more recruiters from different agencies for the same job. "Do you have experience with Solr, the Zend framework, Git and IPTV?" enquires a 22 year old IT graduate. These are really just buzzwords, which mean little until more details are revealed. In most cases they just need an experienced developer who happens to have a used the required programming language in the context of a specific framework and has worked in small teams with agile methodology. Requiring a good understanding of business processes is a good way to weed out self-taught novice programmers or inexperienced IT graduates.
For over 20 years the UK education system has produced millions of graduates who can, figuratively speaking, talk the talk, and not so many who can walk the walk. Although our way of life relies on complex technology, few have more than a cursory overview of its inner workings, but millions are employed in managing the complex human interactions between business owners, government agencies and mission-critical human resources. If all recruiters went on strike tomorrow, no essential services would be disrupted. Life would carry on as usual, except slowly lead developers would have to spend a little more time hunting new talent and would probably choose other geeks just like themselves. That is precisely the scenario, that upper management would prefer to avoid. They do not want a new category of indispensable engineers who can hold their business to ransom. They do not want technical experts to see the whole picture or even gain credit for the fruits of their labour. Meeting business requirements often means just accepting you're a cog in a much bigger machine and cannot work out of sync with all the other cogs, chains, pulleys and lubricating fluids.