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.
|