Is It practical to play Manager on a small software project?
January 17, 2010 7:01 PM   Subscribe

I Know some C++ and Python, but I don't know enough about algorithms to really implement the project, a fairly simple web app, I have in mind. So I'm wondering if it's possible to divide the problem up appropriately, write good app specs, then use Rent a Coder or a similar service for the hard stuff.

Also, I think some parts would need to be written in Java, which I know nothing about. There's some complex computational programming problems involved, too, like a big nonlinear programming problem.

Do you think that's practical, though? Obviously, I haven't tried anything like it before, preferring to learn whatever I need to know how to do.

Has anyone else tried something like this?
posted by Nish ton to Work & Money (7 answers total) 5 users marked this as a favorite
If you know some Python, have a look at Pinax. Its aim is to make it extremely easy to implement web apps.

Among the current features:

* openid support
* email verification
* password management
* site announcements
* a notification framework
* user-to-user messaging
* friend invitation (both internal and external to the site)
* a basic twitter clone
* oembed support
* gravatar support
* interest groups (called tribes)
* projects with basic task and issue management
* threaded discussions
* wikis with multiple markup support
* blogging
* bookmarks
* tagging
* contact import (from vCard, Google or Yahoo)
* photo management

Disclaimer: I have never used it myself.
posted by aroberge at 7:17 PM on January 17, 2010 [1 favorite]

Well, all I can tell you is that some students in a class I was an undergrad tutor for hired some people from Rentacoder to do their homework, and the quality of the code they received was fundamentally lower than the average undergrad in the class (so bad that it was immediately obvious to the professor that something was up). Maybe these students were trying to get away with paying the lowest possible rate and just got what they paid for...but why not just put in an ad on Craigslist and find someone local that you could actually meet with?
posted by crinklebat at 7:39 PM on January 17, 2010

Best answer: Here's the tl;dr version of what I'm about to say: software development is hard, and software development management is even harder.

Here's the full version:

I'm guessing from the fact that you're asking this question that you're not a professional, but that you've done some reasonable programming. If you *are* a professional, then you probably know most of what I'm going to say. You also didn't mention exactly what you planned to do with this web application--my answers are going to assume you intend for it to be for a reasonably large, growing audience, rather than personal use.

I've used rent-a-coder in the past to hire authors on programming topics. My experiences were generally good; you will get a lot of clueless people making ridiculous bids, and you will need to have some techniques for filtering them. In my case, we asked for writing samples; you could ask for code samples, and you might consider doing interviews. But hiring programmers is not an easy task, as almost anyone who hires developers will tell you--there's no particular reason why a site like Rent-a-Coder will make it easier.

Bear in mind that you could be seting yourself up for a lot of frustration if you don't have any developing real software projects.

A few lessons from the field:

1) Even if you get a good programmer, it will be hard for you to judge the work that has been done. Testing whether or not software works is not an easy task. Things can be heavily dependent on the environment (OS, other installed software), and it may not be easy to find serious bugs (data corruption, for example, that happens infrequently, but catastrophically). Hell, just finding all the obvious bugs isn't easy!

Beyond testing, you need to concern yourself with code quality. Even if you, as a programmer, were to do code reviews, it will take a very significant amount of time. I'm sure I spent at least an hour on most articles, a few pages long, I bought from rent-a-coder to vet it thoroughly. Reading code will take just as long, if not longer, for you to get any value. (I do a significant amount of mentoring for developers, and I can tell you that even with language familiarity and specific tools to track code-level issues this will be difficult and time consuming.)

2) There's an old saying that software isn't shipped, it escapes. Software is never really done--anyone who's done professional development for any length of time will tell you that maintaining old code is a real, very serious task (According to Robert Glass, 60 percent of software dev dollars are spent on maintenance). Don't expect to get a turnkey website out of this deal, that you can just run forever without change. You'll almost certainly need to do (or pay for) maintenance. This raises the importance of reasonable quality code, which certainly will increase your time commitment.

3) Writing specs is very difficult. I've seen people try throw-it-over-the-wall specs with outsource partners--it didn't work. The best model I've seen is one that is tightly integrated, where overseas developers work closely with on-site devs. Here, you'll play the role of on-site dev, keeping in close contact with your developers (offshore or mainland doesn't matter since it's not colocated). This is yet another place that will increase your time commitment and will also underscore the need for strong communication skills from your coder. Ideally, you will get very frequent drops of incomplete code that lets you check that the functionality (and quality--see point 2) of the code being produced. In my case, I would often ask for outlines or short descriptions of intended work from authors. I also found that authors with the best overall communication skills and experience where far easier to work with during editing rounds. You should look as much for communication skill as for programming skill.

4) Specific to rent-a-coder--sites like this tend to have good arbitration in favor of buyers, but the time cost of working with someone who flakes out may be just as high. Getting half-finished code is likely to be close-to-worthless--developers are famous for preferring to rewrite code rather than modify code someone else wrote. Do your best to have the project fail fast if you think the developer can't hack it.

5) High-level architecture will be important, but be careful of the difficulty of integration between components even if you have well-defined interfaces. The way you phrased the question suggests that you might farm out parts of the project to multiple different people. If that's the case, you'll need those people to be able to effectively communicate and work together to ensure that the pieces can talk to each other. You never want to do a big-bang integration at the end.
posted by alexallain at 7:49 PM on January 17, 2010 [9 favorites]

The more of this project you can do yourself, the fewer cats you have to worry about herding.

The nonlinear programming stuff might not have to be done in an unfamiliar language. Take a look at the free optimization libraries OpenOpt (python made fast with NumPy) and Ipopt (C++).
posted by a snickering nuthatch at 10:27 PM on January 17, 2010

You could specify your numerical computation on Rent-a-coder such that the program reads inputs from a plain text file and displays outputs directly to the terminal. That way the person will spend little or no time on I/O or presentation and can concentrate on just getting the algorithm implemented correctly. Once you're satisfied with the results you can work on integrating it into your web app.
posted by Rhomboid at 1:05 AM on January 18, 2010

I would suggest not requiring specific programming languages/architectures unless you have a very good reason for them. Nothing bugs me more as a programmer than a client who knows just enough to make wrong decisions. In fact, I now consider this a "client smell" and will usually not work for someone who shows even a hint of this in the initial contact phase (because the client smell always turns into a client reek).

Also the odds are the algorithm's implementation is already out there in a library unless it is something extremely obscure.

Find someone you know and trust who is knowledgeable about the stuff you are trying to get done and get them to help you evaluate candidates.
posted by srboisvert at 6:09 AM on January 18, 2010 [1 favorite]

Response by poster: Awesome, thanks for the advice, everyone, especially alexallain.

Yes I looked into solvers for the nonlinear programming, but the free solvers are apparently not capable of solving this particular problem.

Hopefully this thread will stay up for posterity. I guess people still really have to be able to program - and not just code, too, you need to know stuff about computer science - to use computers to do what they want sometimes. Demand will presumably skyrocket for programmers that can interface with people in other professions to solve unique problems efficiently, as people become increasingly aware of how computers *could* be used to solve their problems, only there's no app that can do it anywhere because it's not the sort of problem that would ever occur to a programmer!
posted by Nish ton at 5:35 PM on January 19, 2010

« Older How do i stock a clothing eCommerce store?   |   Random Fashion Questions Newer »
This thread is closed to new comments.