Question

Imagine the following scenario:

  • Codebase of 600,000 lines of code (C#)
  • All in a single desktop application
  • All written by a single developer (myself) over 8 years (3 years worth of actual coding time).
  • The software is powerful and flexible (obviously vague), thus there is inherent complexity in the code, even if it is modular and low in debt.
  • The software is in a niche machine control industry, so there is a very long ramp up for domain knowledge of both the machines, and the code.
  • The software will become more and more custom where individual customers get their own addons and enhancements

What would be a recommended software team size for a half million line codebase (C# desktop) like the one above? What would be ideal for a typical 500k LOC C# desktop application?

This software is not 'end to end' lifecycle. It is 'end to infinity' meaning it will continue to grow and get bigger and and more powerful and complex. Especially as more engineers are added to the team.

Was it helpful?

Solution

Size of the code base isn't really the right metric for determining team size. Rather, look at the size of your backlog. If you're still handling customer requests in a time frame that makes them happy, then a team size of one is all you need. If you're losing money because you can't fulfill customer requests in time, then you add people until that's no longer the case, obviously taking the mythical man month effect into account. It will take several months before you know if a newly trained team can handle your workload.

Where exactly that line is depends on the business more than the app, although obviously there is some correlation with app size and complexity. For example, refactoring a messy code base will enable you to fulfill customer requests more quickly, but maybe not quickly enough to avoid hiring additional team members.

OTHER TIPS

The code size is not atypical for a single person three year project (as in, I've seen a few C++ projects with a similar number of semi-colons developed by single people in two or three years).

As with anything, the team size maintenance and feature enhancements will depend on several parameters, including

  • How much money there is to throw at it
  • How quickly enhancements need to be delivered
  • How well factored the code is
    • is there a plug-in system, or even a scripting system for domain experts to add code without having to be software engineers?
    • is the code modular so tasks such as 'tidy up the dialogs' can be done by coders without domain knowledge?
    • are there systems in the organisation for establishing specifications so expert testers can be brought it who are not domain experts?
  • How many features are required to be added?

Almost none of these actually depends on the code size, but on the quality. In my experience, larger projects developed by single authors over many years tend to be somewhat idiosyncratic and don't automatically get the features required for opening up to larger teams ( so I now try to stop getting to being the only dev on large projects ).

Licensed under: CC-BY-SA with attribution
scroll top