That is a really interesting article.
How to Hire (and keep!) a Programmer
Collapse
X
-
I once...
I once hired a programmer ($50 an hour) First day he called in sick, third day he was an hour late.... There wasn't a 4th day, I fired him.
KATIE KOX • KIERA KING • SOPHIE DEE • TEAGAN PRESLEY • BRANDY ANISTON • ANGEL VAIN
Comment
-
-
gfelife is da best
Introduction:
You see it everyday. People openly share their bad experiences with programmers; others, seek programmers to fix projects left unfinished or newly discovered bugs. Job openings are frequent and not quickly filled. This article aims to help, both the little guy and the "big dogs", in employing best practices and avoiding common pitfalls during the hiring process. I'll also touch base on how to avoid losing a good programmer once you have found one; make no mistake, once you have a great programmer, you need to hold on to him.
How Much Should I Pay?
Beyond the shadow of a doubt, this is easily the most frequent question nagging at potential employers. Programmer costs are as varied as programmers themselves; and price in and of itself is NOT reflective of quality. Generally speaking though, you do get what you pay for. While it's not impossible to find a diamond in the rough, waiting to be polished, few people have the time or desire to go on a treasure hunt.
Generally speaking, a quality in-house programmer should start somewhere in the range of $70,000 USD per annum. Anything less and you face a number of obstacles:
- If they feel underpaid, they will not see a future with your company and may jump at the next offer to come along, leaving you high and dry.
- They will be inexperienced, accepting your offer while seeking to learn on the job and move on to greener pastures. In some cases, this may be what you are seeking; if it is, as long as you don't set unrealistic expectations, you can easily find candidates within budget. This strategy works best if you have work needing to be done that isn't mission critical, which can handle bugs and delays.
- Security. Are you aware that most "inside job" theft is performed by minimum wage workers? There is a reason for that. If your data and secrets are critical to your success, the last thing you want is an employee being offered a large sum of money to steal it for a competitor. This happens more than you think.
When it comes to outsourcing, you will find a much broader range of costs. Indian firms who charge $9 USD per hour sound almost too good to be true; in most cases, they are. The going rate for an experienced freelance programmer will fall in the $100 USD+ per hour range. Prices of $150 USD or even $200 USD per hour are not uncommon. However, the high cost of quality work is usually more than offset by the speed of delivery and finished product.
To get into a brief example, let's compare three programmers. "Programmer A" is an outsourcing firm based offshore who charge $10 USD per hour. "Programmer B" is an American-based but inexperienced programmer who charges $35 USD per hour. Finally, "Programmer C" is an experienced freelancer who charges no less than $125 USD per hour. You have a small project you absolutely need done in not more than 30 days. Earlier would be nice, but not required in this case as you have a set launch date.
- Programmer A: It will be completed in 30 days for 200 billed hours.
- Programmer B: It will be completed in 21 days for 75 billed hours.
- Programmer C: It will be completed in 4 days for 20 billed hours.
You may think that's an extreme example, after all, how can a single programmer do in 20 hours what it takes another programmer 75 hours for, or an outsourcing company 200 hours? I have seen the numbers personally from a wide range of quote and projects and can say as fact that this is actually a very common situation.
Looking at the numbers, the outsourcers are the cheapest option, costing you an even $2000 USD. The experienced programmer, on the other hand, costs you a fair amount more at $2500 USD. You decide to drop "Programmer B" immediately, as he is the most expensive. What you are left with is a decision most companies or individuals currently face; do you get it done quicker and pay more, or save some money but risk missing your deadline?
If you opt for the third programmer, even if something unforeseen comes up, you should have PLENTY of time for testing or modifications before your launch date. With option A, you risk missing your deadline entirely, not to mention having zero time for testing or changes. Is the security of knowing you have a solid product at launch worth the extra $500 USD? I know it would be to me.
There are other benefits depending on the circumstance, one being time. Let's take the same situation and assume that if you got the product to launch quicker, you would likely be making money from it immediately. How does that factor into your decision? Well, if you would earn more than the $500 USD difference between Programmer A and C, the advantage is obvious.
We haven't even touched on the point of inferior or unfinished work; you will definitely pay more having incomplete work fixed or finished than if you had gotten it done properly in the first place.
In the end, you are the best person to judge who is right for the particular project or situation. Only you know all the factors involved, but hopefully you should now realize that you must contemplate all the angles before making a decision. Your business depends on it.
How Do I Know if a Programmer is Good or Not?
The simple answer is, there is no simple answer. Especially for those without programming knowledge themselves, this can often be the most difficult task in the hiring process. I will outline a few suggestions which should help you eliminate those who don't fit quickly.
- Do they communicate in a prompt and professional manner? The assumption that all programmers are anti-social creatures of the night is rather unfounded in today's current landscape. Forget the image you have of the scrawny, pimple-faced hacker or overweight and balding guy in his parents' basement coding away. Many professional programmers today could easily be mistaken for a company CEO. If your programmer takes his time getting back to your inquiries, vanishes for days at a time or talks like he grew up on IRC or Social Networks, he should be dismissed almost immediately.
- Examples of past work doesn't mean anything. This is not like design work; most programmers do not have a readily available portfolio for you to review. Unless they develop open-source applications in their free time, their previous work was likely for clients who wouldn't be happy with their code being shared. Not to mention they likely have signed NDAs. This shouldn't prevent you from looking deeper into a potential candidate at all. Not to mention, you have no real way to know they code they are showing you is their own and not stolen from elsewhere.
- Have a small test developed and someone accessible to review the submissions. I generally like to choose something simple, like a Contact Form, for this purpose. Assign the candidate the task, provide him with the specifications and a deadline. Generally, a 24 hour deadline works well. This allows you a look into multiple factors. Did he refuse to "waste his time" completing the test? Move on and tell him thanks, but no thanks. Did he miss the agreed upon deadline? Expect it to happen to anything else you give him. Was his code messy, unstructured or redundant? Was his coding inefficient? Did he go outside your supplied parameters? All reasons to keep looking.
- "He was recommended to me by a guy I trust". Recommendations from people you trust are a great way to wade through potential hires. Many programmers depend upon word of mouth for ongoing work. However, you should NOT just take their word for it. Even if they did a great job for them, there is no guarantee they suit your project. Moreso, is the referer qualified to evaluate their work properly? What if things appear to work for him at first glance, but fall apart as soon as his site traffic increases? Basically, recommendations should always be considered but they are not the be all end all in your decision-making.
- Certifications do not make them a good programmer. I have seen Zend-certified PHP programmers whose coding skills left a LOT to be desired. To say nothing of their lack of professionalism or punctuality. While being certified from official sources is definitely a plus, it should not be a major factor in your choices.
- Can they follow instructions and are they independant? You likely don't have time to babysit, as you are plenty busy with growing your business. Once you have provided concise specifications and deadlines, your involvement should be minimal until it comes time to review the finished product. If someone is sending you IMs and emails all day long, especially with questions that are clearly already answered in the task specs, they might not be who you are looking for.
CONTINUED IN NEXT POSTComment
- If they feel underpaid, they will not see a future with your company and may jump at the next offer to come along, leaving you high and dry.
-
Nice
Helps me put things in perspective for my partner ;)
Thanks!Comment
-
While its certifiably true that peoples experiences are varied and things change as time goes on, I read this and while some of it was true I wanted to do the community a service and nitpick a little and give my perspective as I found some inaccuracy in it when compared to my personal experience as a developer.
Please take these with a grain of salt as just my 2 cents; No offense is intended.
== How Much Should I Pay? ==
* In my professional experience 70k/year USD is very low. If you check the job boards or speak to technical recruiters, or go to any "what should I be makeing?" sites online you find that anything under 80k is considered "jr" developer and they have a lot of options to move up and get higher pay after the first year or so. This is further backed up with the fact that the average developer per anum pay in my area is in the range of 90k/year-110k/year (USD) in my area based on experience. I have personally made 140+k/year, so either I was overpaid or I am really good, I'm just not sure.
* Security is an easy fix, just have them sign something. Most good developers are decent people and either way, the threat of a lawyer works wonders as long as you are not hiring an offshore guy with more to gain by screwing you over than somebody who is in your country and knows you can show up at his house if things go south.
* Indian firms are worthless. Most of them that I have seen will not even handle porn due to religion/social issues, as people there are really repressed and its not uncommon for people to be stoned to death for it based on the stories I have heard. I do not know how accurate these stories are, and I welcome feedback from others with experience, but "common knowledge" seems to suggest its rare.
* The ABC example is partly correct but you are forgetting that the A from India sometimes can never do what the more highly paid C can do, becouse the A may simply not know enough. In addition, faults in craftsmanship in what they give you can in turn create what is known in software development as "technical debt" from the creation of inferior work. This is defined as basicly anything that makes it harder or more expensive to modify, use, change, or add features to the code later on. Its also the real cost that a lot of people dont think about. I have seen companies DIE due to having too much techncial debt in the form of WTF code... in fact - full disclosure! - I make a good part of my living fixing it.
== How Do I Know if a Programmer is Good or Not? ==
I agree that the professionalism is key and I agree with most of what was said here, but I disagree that having somebody do a bunch of free work for you is the right thing to do.
Its one thing to ask that they show you how to merge a single linked list, or know what a prefix tree is and how to use it correctly, maybe do some set theory, but a small project for free is another thing.
This can also be a turn off because lets face it, they dont know they can trust you; its not uncommon for people to try to take advantage of programmers by having them do "just one simple thing" as a "test" when that was really the only thing they needed or wanted done. Yes it happens, I have seen it happen, and it sucks, but some people have the mistaken impression that good developers are dispossable so we - remember I am a developer - have to protect ourselves.
It's a more common practice to have another developer test the person to test ability, as with common OOP details, the pro's and cons of a given technology, write some SQL to do a basic join, discuss the perf issues with using varchar instead of char in mysql, etc. In the end, it takes a software craftsman to understand if another person claiming that title can do good work. If you want to test them, hire them for a small thing and let them know it could lead to more work.
Certifications suck and are worthless. I have seen people who couldnt code themselves out of a wet paper bag claim to have certifications that are supposably hard to get, only becouse they either cheated on the test or becouse they stole the credentials or faked them outright.
In the end your best bet is to hire somebody for a fair wage, and keep them them happy by having open and honest communication with them.
== The Importance of Specifications ==
A good dev could use #1 but would come back to you and ask for at least #2.
Its often best to think of a developer as a translator; He (Its almost alwasy a 'He', but there are rare exceptions) is taking your english sentences and translateing them into a language that the computer can understand. With that in mind, keep in mind that a small sentence that you think is simple in english, may not be once translated to the realities of code. And a good develper will tell you when this happens. A bad one will hide it, be scared, etc. Look for open and honest communication, even if you don't understand what the guy is saying. And if you do not understand, say so. A good developer will be able to tell you in English. Milestones and breaking things up into smaller chunks is the best way to go and lets people focus on the 20% of work that gets 80% of the solution.
== How Can I Keep My Programmer (Happy)? ==
I agree with most of this. Revenue or profit-sharing are a GREAT solution and way to keep programmers around, but as a developer I also need to remind you - even if you do not want to hear it - that vested interest/partial ownership in the company is the BEST way to make sure things are smooth sailing as developers have a lot of options. A developer who owns a company will do anything to help it grow.
== Closing Notes ==
Anybody who says they have learned it all is an idiot. Don't hire them. I keep a pile of books I buy used from amazon on my table at all times, waiting to be read, and I read them when I get time at night, for this exact reason. I do not know everything, but I know enough that I enjoy reading and self educating. Your developer should be the same way because a day without learning something is a wasted day.Comment
-
I've been a programmer for more than 30 years.
This was a decent article, well thought out and accurate.
Most clients take programmers for granted or they think that this shit happens by magic.
Depending upon the Development Environment, it can be smooth sailing or it can be some of the most frustrating hours a person can endure.
I cringe every single time I have to work in a Microslop environment. I'm putting the finishing touches on an Access Database project I've been developing for more than three years (single-handedly BTW) with only small, tiny crumbs to stay alive. I hope to make several million dollars when we finally do get to sell it.
Most of my headaches in this and previous projects have always been as a result of Microcheeses inability to create good, consistent Operating Environments and/or Development Environments.
I'm having to do a 11th hour new design feature to get around Microphlegm hideous Operating Systems. The system has a companion spreadsheet that I developed to pull data from the Database (spread sheets are much better for 'displaying' than databases) over the network. The problem is that this spread sheet is installed on 17 different machines pointing to single BACK_END.
There's nothing wrong with the design as it runs PERFECTLY on about 9 of the machines on the remaining machines there are reference issues, missing code libraries, and other factors such as dependent files not in their previous locations for Microscum in their less than enchanting 'infinite - no limits' wisdom decided to change locations of these files in different versions of their crappyass Operating System XP, Vista, Windows 7 are ALL different in how they are configured. Not to mention that machines within the same OS are different if the Service Packs and updates are not the same.
It's a nightmare sometimes.
Most people have no idea the level of frustration that developers have to go through when designing a new program.
For me, when I'm working with Microsoft (and I've been doing that since BASICA on the original IBM desktop machine), I spend about 30% of my time fixing, finding workarounds, searching for solutions to their inconsistent crappy stuff, and beating my head against the wall because I can't make a difference in the world to tell people to STOP BUYING Microsoft's CRAP!
Long story short, be kind to your programmer because you don't often know the HELL he/she's been through to get your product off the ground and if at all possible STAY AWAY FROM anything to do with Microsoft.
I've coded more than 1.7 MILLION lines of code in 11 different program languages on machines as tiny as a Radio Shack hand held in the early 80's to IBM Mainframe Clusters and Cray Super Computers.
All of my most severe, dismal experiences have come from working with Microsoft.
Some environments and/or languages are better suited to accomplishing programs than others. For example you would never want to write a 3D graphics program like Maya using ADA or COBOL or .NET.
So, when considering projects consult with your programmer regarding the platform that you will be developing on (if you have a new proj starting up) so that you can get the best bang for your buck!
The big project I'm working on is solely my design (with input from experts in the field) and it succeed or fail based upon the design and my ability to implement it.
So far, our demonstration / showcase system has been running on more than 50 machines for about 3 months now.
If I wasn't doing my own thing, with my own company, I would on the lookout for jobs that do have an ownership stake in the company.
Cheers!Last edited by wizarddrummer; 09-30-2012, 12:09 AM.Comment
-
As a professional developer, I can attest to the fact that submitting proper requirements to the programmer goes a very long way. I became a programmer because I like programming, not because I like reading minds or because I like interrogating people to find out what they meant.
When giving requirements to a programmer, remember the following... Be as specific as you can without telling the programmer how to write the code. You want to give the coder as much info as you can. Invariably, you will miss something. I don't mind asking a few questions about an assignment, but when I get a vague requirement that forces me to do all the legwork figuring out what is required, it always starts the project on a bad foot...Comment
-
-
good post, now i know my old programmer wasn't good, he didnt match up to some of the "How Do I Know if a Programmer is Good or Not?" rules

Comment
-
Great information.Professional Photographer, Still and Video Exclusive and NON-Exclusive Content Provider.
[email protected]Comment
-
I don't think this applies just to the adult industry. Any webmaster across the industry would appreciate it.
Cheers for the info!Comment




Comment