Русская версия

Making Quality Software Using Freelancers.

The great gap of misunderstanding between programmers and guys, who hire them still exists. It is often considered that the programmer is a guy who “makes programs”. You visit him with an idea, he listens to you carefully, names price and time, smokes a cigarette and starts working specifying things by the way and simply explaining technical issues. The result of his work is complete software with user-friendly UI, almost no errors and easily understandable user manual.

However things are different in reality. A programmer doesn’t understand completely your requirements, he is too lazy to write a status report, he can’t simply explain why he’s late with the deadline and names too huge timelines for the implementation of simply-looking things. The result of his work doesn’t look the way you wanted it to be. The UI looks scary and the user manual seems to be written for robots.

Actually the problem lies in different understanding of the same words. When someone says that he looks for good programmer, he means, that he looks for a person, who can make a quality software for a reasonable price. But a developer, who reads such advertising, considers that required guy should be competent in algorithms, data structures, technologies and programming languages. When you begin the communication and the team work the misunderstanding gets even bigger. Your head is filled with deadlines and functionally, while his with the architectural and technical issues he can’t even explain.

So the problem is about you and him speaking on different languages.

What are the possible solutions? Well, firstly you could try to learn speaking to programmers. However that is pretty labor-consuming solution: you would have to spent a lot of time to learn it technologies, development methodologies and so on. I think that solution is ok only if you’re really interested in learning it things. Otherwise you would need to hire a translator between you and programmer.

Such guy has many names. Sometimes he’s called analyst, sometimes technical writer, often consultant. But I would call him Program Manager. That is simply matter of habit.

So at first stage you should find a Program Manager. He will analyze your proposal, will write a functional specifications(sometimes called a technical assignment), will estimate required size of work and even will help in the selection of programmers. You don’t need to hire him at full-time. As Joel Spolsky mentions the “rule of thumb” says, that you need one Program Manager for four programmers. So you would need only one Program Manager working part-time for small projects requiring only 1-2 programmers. It is also worthwhile to note that you shouldn’t hire Program Manager temporary – just to write the functional specifications, since his participations would be required on all project stages.

He will give tasks to programmer(s) and will report before you. He will be able to understand and translate strange explanations of programmer about why writing installer of Office Add-In is so different between Office 2003 and Office 2007 frameworks. He will maintain the functional specifications according to the current project status.

Of course, that is possible to find a person, who is good programmer and good Program Manager at once. But it is rare combination, since communication with compilers and communication with live people are very different skills.

Finally, some links:
More detailed information about purpose of Program Manager
http://joelonsoftware.com/items/2009/03/09.html
And more detailed information about functional specifications
http://joelonsoftware.com/articles/fog0000000036.html
http://joelonsoftware.com/articles/fog0000000035.html
http://joelonsoftware.com/articles/fog0000000034.html
http://joelonsoftware.com/articles/fog0000000033.html