How Many Developers to Maintain Large Project? 18
edrugtrader asks: "I am the sole developer for a corporate intranet site. New complex features are always being added, and old features are always being updated. The source code for the site is in very terse PHP, and sums up to about 2MB of code (i would guess around 30,000+ lines). Are there any standards or studies about how many developers it takes to maintain such a large and changing codebase? I am looking for something like, '40,000 lines = 2 full time developers', or '2MB of code = 3 full time developers'. I can currently handle everything fine, but I want to know at what point I should be looking for new hires. I have read studies that a developer writes 1 line of debugged code at the same rate no matter what the language is, so the fact that it is PHP should probably not come into play." As a metric, I think the number of lines per developers may not be perfect, but it is fairly intuitive. Has anyone actually looked into what this ratio is in their shop, particularly for large projects?
Finding Metrics.... (Score:1)
5000 lines of horribly written code can be a nightmare, and 100,000 lines of wondefully written, documentent code that comes with unit tests can be a dream.
You have alot of control over how maintainable the code is: Make sure it is documented, and generate documentation often. Make sure it is unit tested, and run those tests every time you change something. etc etc...
As a rule of thumb, if you are working over 10 hours a day, 5 days a week, and the work is growing not shrinking, look for a Jr. level coder to assist you. Maybe just a highschool kid, or someone going to college.
Re:Finding Metrics.... (Score:1)
[PHPUnit's]
http://phpunit.sourceforge.net/
http://sourceforge.net/projects/gpfr/ (has another php unit on its pages)
[PHPDoc's]
http://www.phpdoc.de/
http://sourceforge.net/projects/phpdoc
http://www.callowayprints.com/phpdoc/
Karma ho' clickable version :) (Score:1)
http://phpunit.sourceforge.net/ [sourceforge.net]
http://sourceforge.net/projects/gpfr/ [sourceforge.net]
(has another php unit on its pages)
[PHPDoc's]
http://www.phpdoc.de/ [phpdoc.de]
http://sourceforge.net/projects/phpdoc [sourceforge.net]
http://www.callowayprints.com/phpdoc/ [callowayprints.com]
How the big boys do it (Score:2, Informative)
Unfortunately, I just looked at their site and it's being redesigned (most of the content is unavailable right now).
A search [google.com] brings back enough other links to get you started though.
I've never used it quite the way the rest of the world does, mostly because it's rather time consuming.
In essence, a "function point" (which I won't explain here - too long!) takes different numbers of lines of code, depending on the language. E.g. ASM might take 300 lines, SQL might take 6 to accomplish the same end.
There is also a limit to the number of [debugged] lines of code different programmers can produce per day.
If you start skimming through the Google results and pay particular attention to the numbers (tables) you'll find A - many references to SPR (they practically invented the concept) and B - enough info to get you started without $10k of training.
Using these numbers and your own knowledge of the project and the skills of the available programmers, you can make pretty good guesses about what you can accomplish on your own and when you'll need more bodies.
I never thought these sorts of numbers could be terribly accurate until I started using them myself out of desperation (similar situation to yours, actually).
The most important part though, is to know the programmer(s)! The easiest way to do that, I've found, is to take existing projects written solely by the person in question, look at the number of lines of code and time it took (real-world time, meetings and such, including other duties, do count!) and then figure out each person's numbers that way. The function points just serve to let you compare dissimilar (or unwritten) projects.
In summary there's no short answer.
Good luck!
Time better spent? (Score:2, Insightful)
Number of lines of changing code is very relevent. If the codebase is quite stable you do not need very many people to maintain it. If your saying 'No' to implementing new changes because you don't have time then you should bring someone else in. if your not planning stuff out properly because you don't have time, then bring someone in.
Would your time be better spent planning implementation changes than implementing them yourself? Are there enough small maintenance issues that it could be beneficial to bring someone in even though, theoretically, you could do the workload? You might want to bring someone up to speed for an expected increase in workload.
Lines of Code is a bad metric (Score:3, Insightful)
And to say the language doesn't matter is also nuts. Sure, you might find that if you select the right languages, but if you compare, say, assembly language to Java, you're not going to get the same results--and good luck selecting programmers with the same levels of experience to make a valid comparison.
The decision at hand really depends on how much time you have. If you start running out of time, then it's time to hire more help.
Re:Lines of Code is a bad metric (Score:1)
The answer lies within... (Score:2, Informative)
Why ask a general question about metrics, when you have so much more information than the general case? You know how much work you do to maintain the code. This information makes you the absolute best person in the world to answer your question.
How tall is tall ? (Score:3, Informative)
The number of developers needed migth be proportional to the rate of changes in a codebase, and perhaps to the complexity of the internal and external apis. But the number of lines of code by itself is fairly irrelevant.
It also makes a *huge* difference if these are fresh or experienced developers, if they know the project already or if they need to spend the first months getting acquianted with it, and simply if they're good or not.
I really think there's no substantially better method than simply to estimate from your current situation. Do remember though, that 5 programmers working on a project are typically not 5 times as efficient as one. That's because they have to communicate internally, spend time understanding code which others have written and so on.
Re:How tall is tall ? (Score:2)
always two there are... (Score:2, Insightful)
and i agree with all the above comments - lines of code is a horridly bad way to judge how many developers you need. you need what you need. it depends on the project, and the methodologies and the toolset. and of course the architecture.
It's not that simple! (Score:4, Interesting)
The bottom line is this: when software projects require a team of developers, you've got to view it from the point-of-view of an engineer instead of that of an artisan.
Not so easy to answer ... (Score:1)
Well, i don't think anybody can answer your question the way you want. In fact, the most important thing to know is the way this project has been built.
Using PHP classes or modular code can make tasks a lot easier and this way, one full time developper should be enough in my opinion. But if scripts are not structured, the project will need more than one developper, as there will be a lot of tasks to accomplish for each update or new functionnality implementation.
Hope it will help
The correct answer is... (Score:1)
Would you believe it! You got it right first time. Well done.
My experience (Score:1)
Anything less and you into problems like 'But, sir, if I am still in the middle of changing all the graphics to be 'more interesting', I can't work on the new online questionnaire until next week'.
There cannot be one. (Score:2)
there cannot be what you ask for. You might or might not need help, but metrics like lines of code have nothing to do with it.
Remember, when you have just a few programs (less than 10 in general) you all know each other, talk to each other, and know each others code, so you can modify anything. this makes you more productive. Eventially you reach the point where you can't keep track of what everyone does, so you specialize. This greatly cuts productivity over one programer working alone, but because of the number of specialists work gets done faster.
Adding programs makes a late project latter. However if the project is not late you should take the time to hire a backup who knows the code, just in case.
Once you have backup programers it is a management decision. Adding programers cuts producity, but if done right doesn't cut it by as much as the new person adds. However when you add a programer beware that you have to push out deadlines while you train the new guy.