Hello and welcome to our community! Is this your first visit?
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 2 of 2
  1. #1
    New to the CF scene
    Join Date
    Oct 2013
    Thanked 0 Times in 0 Posts

    Can you help me write an article on hiring a good programmer?

    I wanted to try and raise some awareness, perhaps even educate recruitment agencies and employers, on how to employ a decent candidate - at the moment they're focusing on the wrong things... Being a good developer, this is a frustrating - the way recruitment agencies are behaving right now I could easily be beaten into a position by a developer that ends up costing the employer a LOT of money with bad practices... I've seen it over and over again.

    I'm not sure exactly how I'd go about doing that... but I thought I'd, at least, make a start by writing an article that they could understand.

    Perhaps you guys would consider bouncing ideas of it, giving me feedback, perhaps writing and little yourselves, and give me ideas about other things I could say? Analogies to make it simpler to understand from a laymans point of view would be great too?

    By the way, if anyone wants to run with this idea, at any point, and get something published - maybe even take some words from my writing, as it evolves through this thread, and use them in your own article... please go ahead...

    I'll welcome the arrival of the day agencies start talking with some insight and sensibility about them!

    All contributions are welcome!

    I only have limited time each day to devote to this, but here's a rough "sketch" I did today, just to get the ball rolling...

    How to hire a good developer

    Recently I had the very unpleasant experience of dealing with recruitment consultants who are pitching their clients as unfriendly pretenders, concentrating in completely the wrong area.

    I wanted to write something to raise awareness in employers and recruitment agencies.

    Think about this from the point of view of photography...

    You wouldn't turn down a David Bailey or a Richard Avedon (two of the greatest photographers of all time) because they haven't used a Canon EOS 5D Mark III camera [in the last few months] and yet, this is exactly what's going on today in software.

    What's going on?

    For the last 15 years I've been working, primarily, with the language Visual Basic.

    To write software we use something not dissimilar to Microsoft Word...

    Like Microsoft Word, this software (Visual Studio) has been through many, sometimes yearly, releases - the language, just like the English language, has barely changed though.

    Despite this, everyone is concentrating on which years' version has been used and whether that version specifically was used recently...

    ...from the point of view of a good software developer, trying to get through the firewall of agencies, it's like the whole world has gone mad.

    So how do you hire a good developer?

    Should you give them a test? Get them to write software? Sure, that's not a bad idea... what you really need to do is concentrate on programming principles.

    What are programming principles?

    Let's think about this from the point of view of building a house.

    You form a solid foundation so the house doesn't slide away or get penetrated by damp, you use a spirit-level and plumb-line to make sure the structure and walls are straight and true, you mix your mortal to the correct ratio to make sure the walls don't crumble and fall down - it there's space for storage you include it, make a roof that won't blow off and include windows so we can see out - and you don't totally wall-up internal spaces that could be used otherwise.

    Just like building a house: when we start writing software we do so from a position of formlessness and can literally throw piles of bricks into a swamp, leaving space in the middle and toss a bit of cardboard on top for a roof - just crawl through a gap if you can find one!

    In the case of software, though, it's not easy for a layman to assess what's there because the structure isn't visible... and just like a house it can be very costly if it's built badly!

    Fortunately there are a set of timeless principles programmers can employ to make sure your house stays up forever, is energy-efficient, uses natural and electrical lighting to good effect, and if you want an extension or swimming pool later that'll be no problem! Need more power-sockets? In a flash, no compete rewrite required!

    Can a layman understand these principles?


    How long will it take?

    Half a day? Perhaps a refresher at appropriate moments from time-to-time.

    Is that really a worthwhile investment of time?

    If you're an employer, employing programmers, then yes, definitely. It literally is like what I was saying about the builder - you would be extremely unhappy with your pile of bricks in the swamp... but how do you validate that now? Is it ok that your software needs a complete rewrite from time-to-time?

    This is going to help you evaluate your programmer’s true skill-level and could save you a lot of money in the long run.

    Have you heard of the Agile techniques? A different subject really, but why do you suppose it's called Agile? It's because it's supposed to make your software team agile, you can move quickly, change tact easily, and scale your software up to meet new demands at a moment’s notice...

    People are picking up Agile like wild-fire these days, and yet, even Agile is totally restricted if it's not complimented by good programming principles. Good programming principles are what make you truly Agile - it's no good having a team of fast runners if their shoe-laces are all tied together, right?

    Is it Agile?

    Some books have been released stating things like "Agile Programming Techniques" including principles - the principles are much older than Agile really.

    If that’s true why are people running with Agile and “Scrum” and not this?

    It’s easy to understand “we carry out work in organized segments and have a stand-up every day to make the process transparent, sometimes we even carry out cross-functional roles!” – I’m not going to lie to you, understanding the principles is more difficult than that. I guess the trick is making it easy to understand the important stuff – I know us techies sometimes have a bad reputation for speaking in techno-babble and baffling people with science, perhaps it’s simply that no-one’s yet put pen to paper?

    Before thinking about the principles, what else?

    If you’re a recruitment consultant skip this section – if you’re not going to read about the principles, there is also a section, following that, about writing more appealing adverts.

    The biggest omission I’ve noticed from software development teams concern gathering requirements and analyzing them. The most common mistakes being made are 1. doing exactly what the customer asks, nothing more, nothing less, and 2. not involving programmers in the process.

    A complete article could be written on this subject and I want to concentrate on the idea of getting the right people – so I’m going to cover this very briefly.

    Ask the customer what they’re trying to achieve and study their working environment, sometimes you’ll find that your customer would have ended up with a second-rate, even unusable product if you simply followed instructions – also, involve your programmers in the process! Sometimes we talk nonsense, sure, but that’s what lateral thinking is about, looking at things from every angle. Good programmers, visualizing solutions using principles, often seeing potential for things that don’t get thought about - added functionality that seems like a lot of work to a layman but might be really simple to bolt-on or, at least, allow for. This also gives the programmers much more insight so while we’re writing we can bear mind specific future development and sometimes give you feedback about possibilities while we’re writing.

    I can assure you, businesses and teams I’ve worked with who do both those things produce better products, have happier customers, better inter-personal relationships, are more willing to deliver and are happier in general.

    Ok, I’ll think about it – tell me about the principles

    All you need to do is ask your new developer about the following subjects, if what they say sounds familiar, it comes across that they implement these ideas into their software and (even if they baffle you a bit) they sound authoritative on the subjects, you’re sure to be on the right track. If you’re not a technie this is going to be a judgment call. If you want to know the difference between a pretender and someone who really knows: many programmers I’ve worked with in the past would be speechless about these and you’d certainly notice a lack of experience/authority on the subject – if you asked me about these I’d be quite passionate about them.

    Defensive programming

    …content coming soon

    DRY (Don't Repeat Yourself)

    …content coming soon


    …content coming soon

    KISS (Keep it Simple Stupid)

    …content coming soon

    SoC (Separation of Concerns)

    …content coming soon


    …content coming soon


    …content coming soon

    Code Reuse

    …content coming soon

    POLA (Principle of Least Astonishment)

    …content coming soon


    …content coming soon

    Backward compatibility

    …content coming soon

    Database Normalisation

    …content coming soon

    Database Indexing

    …content coming soon

    Data integrity

    …content coming soon


    Writing appealing adverts

    Another practice making potential candidates yawn is the agencies "proven" technique of questioning essential requirements "what else? what else? what else? what else?" resulting in job specs that look like this:

    "Our client, a top 10 inter-galactic high-street software provider, is looking for a slave/programmer... To be considered for this amazing opportunity, it is essential you have experience with Visual Studio (specifically this week’s release), Pearls and Diamonds, Stacks of Lamps (with orange energy-saver bulbs, blue light-shades and a string-switch), Rubies on inverted electro-magnetic rails, SOAP (and bubble-bath), XML (just a simple file format but ESSENTIAL) and a thorough understanding of UML."

    Why is that a problem?

    First, drop the words “our client” – even if you’re a good example, it is blatantly obvious that 9/10 recruitment consultants worship their client while happily using tactics to try and force us into positions we might not otherwise like to take. We don’t know you personally, so this “my client”, “our client” business is just a repetitive reminder of that difference.

    Good software developers have a pretty good idea where to find rewarding jobs – however, to get there we need to weed through lots of roles that aren't. Recruitment is a numbers game and we know agencies hate this - they can't stand having candidates who won't interview for any position, which means we have to hold them at bay and personally weed through all the job adverts ourselves. Right now I've got the top job sites sending me alerts of new positions in my area as though seeking a position - I get around 120 emails a week. As you can imagine reading the words "our client a market-leading, inter-dimensional time lord is seeking a pro-active, forward-thinking, devoted slave who will attend any interview and take any job gratefully" is frustrating.

    I can see the 90% of recruitment consultants smiling at that because “got ya!”, right, but this applies to reading adverts in general – almost every single advert I read is worded identically – when I was searching for a job (which I found) I honestly took days break from looking at the adverts because 1. It reminds me of the general mentality and 2. It’s so repetitive!

    We have to read through adverts - if I leave my CV on the job-hunting sites I get called continuously, about one third of the time it’s for something I actually have no experience with, another third for jobs that are 50 miles away, and the rest, well, the attitude of the salivating consultant is a put-off a lot the time too – so reading the adverts is a requirement, really.

    Just cut out the unnecessary words – tell us what primary language and experience is required, whether it’s internal development or a software-house, and leave it at that. Last week my brother, ironically a recruitment consultant, wrote “we’re looking for a couple of VB.Net developers, city-based, it’s an Agile environment so like-minded candidates welcomed”…. That’s great!

    It's funny really

    If you wrote this instead:

    "Job: an environment welcoming creativity and employing lateral thinking techniques is looking for a software developer, with good programming principles, who understands abstraction and extensibility and has experience with [insert language here] - to join in."

    ...and the good software developers will be queuing up for interview with smiles on their faces complimenting your revolutionary advert, knowing this is going to be an interesting place to work!

    You mentioned “Lateral Thinking” a couple of times, why?

    Lateral thinking is just common sense.

    Edward De Bono coined the term in 1967, he suggested that we usually think in terms of having a goal in mind and reaching that goal, he called this "vertical thinking". Lateral thinking describes looking at possibilities from many different angles - and applying indirect, abstract and creative thinking in order to achieve a far more developed understanding/solution.

    I'd be tempted to call it brain-storming.

    In the book "Think and Grow Rich" Napoleon Hill strongly advocates the development of a "Mastermind Group" - a group of experts in different areas - also common-sense – this is a practical example of how lateral thinking can occur naturally by assessing possibilities with different skillsets/experiences.

    In my career I've worked with teams who discuss, think carefully about, and develop, their offering -and people who simply aim directly for a target. In my experience the first group have higher quality, more scalable and more effective products to offer - they were also happier and had much better inter-personal relationships, which is why I believe it to be of value.

    Actually, as a programmer applying good principles, lateral thinking happens as a matter of course but that's only one expression of the mindset.

  2. #2
    New to the CF scene
    Join Date
    Oct 2013
    Thanked 0 Times in 0 Posts
    That's far too long - and goes off on tangent too much, I know...

    Back to the drawing board - will post something shorter and more concise at some point...


Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts