Take the tour ×

My question is associated with the accepted answer to this question. It says that the language should be based on the fact whther the application is small,medium or large. What popular applications would you put in each category? And why? (is it the size of the codebase/number of simultaneous users etc..)

Thanks for all your answers. But in your examples I didn't see any web applications.Can you include some?

share|improve this question
add comment

3 Answers

Think in terms of lines of code. To me small means < 10,000 lines of code. Medium means 10,000 to 500,000 lines of code. Large means 500,000 to 2,000,000 lines of code. And huge is anything bigger than large.

Be very, very aware that the size of a particular project can vary a lot depending on the language chosen. For instance a 200,000 line Perl project generally has the functionality of a 1,200,000 line C project. (This is from the estimate in Code Complete that Perl usually takes 1/6 as many lines to do the same task as C.) However as you get into different size ranges, you get different issues that involve major organizational differences. Specifically

  1. Small - reasonable size for one person to produce in a reasonable time.
  2. Medium - reasonable size for a small team (max 8, beyond that size you start getting into communication issues that drop productivity and require reorganization to handle) to develop and entirely understand.
  3. Large - You've been forced to have a large team (significantly > 20 - note that the average team of 20 is about as productive as a team of 5-8 due to organizational issues).
  4. Huge - Your project is large enough that you probably need to use specialized tools just to help people navigate the project to figure out what they need to understand to work on X.

Note, other than a year spent at Google, I have mostly worked on teams working on small-medium projects. Therefore I'm mostly guessing on where the cutoff between large and huge is. But Google definitely was huge.

share|improve this answer
add comment
  • Small: utilities (paint.net)
  • Medium: programs and games (firefox, starcraft)
  • Large: suites mostly (office); I know that these are often a number of programs put together, but the interoperability can be significant and needs to be tested.
  • Huge: Generally operating systems that have been around a while.

And various in-between. Depends on how fine-grained you want to go.

Also note that the longer a piece of software has been around, in most cases, the larger it is.

When classifying software for size, I think of

  • Size of the codebase
  • Security requirements
  • How coupled it is (interoperability of office for eg.)
  • How old it is (assuming it's active, many many bug fixes, compatibility fixes etc. have gone into software after 10-20 years)
share|improve this answer
add comment

Personally, from my limited knowledge I would offer up these.

Small: Simple image editor/viewer (Irfanview, MS Paint, etc.)

Medium: Email client or web browser (Outlook, Thunderbird, Firefox, etc.)

Large: Operating system (Windows 7, Mac OS X, Linux, etc.)

I offer up these examples based on very simple personal projects that I've worked on that deal with basic implementations of the very complex products listed. They're only to give you an idea of something you can relate it to, I don't personally know how much work is involved in each specific product.

share|improve this answer
add comment

Your Answer


