What is the optimal team size for a project?



  • While answering to this question, I got to wonder about my team and something that comes about quite often, which is "do we have enough people to do the work?"

    Now, obviously, we're all going to say that we'd like to have more (good) people (basically, clones of ourselves) helping out, but realistically, given an existing project/codebase, how would you estimate how many people should be working on it?

    For example in our case, we are 6 devs for a core codebase of about 400k LoC (excluding comments etc.) plus many individual sub-projects that probably add up about as much. I know that LoC is not a very useful indicator, but it's the only vaguely relevant one I can imagine giving... It's for an internal software that has about 30-50 users.

    One obvious :wtf: in our team is that there are no tests, QA or anything other than devs (or, in other words, devs are doing everything including user support and absence-of-doc), but that apart, would you say in terms of devs it's par for the course, or woefully understaffed?

    Another example, one of the modules on which I am the only dev has an internal competitor that does similar things, but has a team of 2-3 people working on it. Even with this huge discrepancy in resources (<1 vs. 2-3), my module keeps up pretty well with the other. I can't really believe I'm worth 2-3 devs, so are they over-staffed and doodling around? Am I deluded and my module must be crap?



  • @remi said in What is the optimal team size for a project?:

    I can't really believe I'm worth 2-3 devs

    It can happen if the software is complex.



  • @remi said in What is the optimal team size for a project?:

    I can't really believe I'm worth 2-3 devs

    Maybe you're worth 2-3 devs who have no knowledge of the proprietary details of your codebase.



  • What I've found personally that team balance matters a lot more than Team size. When I worked in Gibraltar it was impossible to get decent C# programmers so most of our dev were Junior PHP / HTML / CSS devs and it ended up as the only full time C# guy in the office, I ended up being the bottle neck as my time was shared between helping them and getting on with my own stuff.



  • Optimal number of project managers and other similar roles: 0.



  • @loopback0 I've had the odd good one. They tended to be (good) ex-BAs though.

    I used to work with one young woman, if you needed another team doing something it was like sending a pitbull after them ... you ended up getting what you wanted/needed. Few and far between I know.



  • @xaade Well, the 2-3 devs have (I hope?) knowledge of their codebase, in the same way as I have knowledge of mine, but not of theirs (yeah, since we are in the same company and both our modules are doing more or less the same thing, that's another :wtf:).



  • @loopback0 We're good on that. As a said, we only have devs, nothing else, so that also means no project manager.



  • @lucas1 said in What is the optimal team size for a project?:

    it was like sending a pitbull after them ... you ended up getting what you wanted/needed.

    TIL we need to adopt some pitbulls



  • @remi said in What is the optimal team size for a project?:

    Another example, one of the modules on which I am the only dev has an internal competitor that does similar things, but has a team of 2-3 people working on it. Even with this huge discrepancy in resources (<1 vs. 2-3), my module keeps up pretty well with the other. I can't really believe I'm worth 2-3 devs, so are they over-staffed and doodling around? Am I deluded and my module must be crap?

    One dev is never optimal. I don't care what project you're talking about. Even for Flappy Bird it's not optimal. Possible? Yes. But not optimal, number one reason being, you're, by default, the one point of failure. Get hit by a bus? The project is fucked. Plus, I've seen regardless of the skill of that person, they inevitably end up in some kind of echo chamber where they might write some WTF code (we've all done it, let's be honest) but there's no one else to call them out on it.

    Management can justify it by saying they're saving money, and it's true. They are just putting the project at high risk by doing so, is all. If you're willing to spend money on backups on your hardware and infrastructure, then you should do the same for engineers.

    What I consider to be optimal depends highly on the distinct parts of your project that require a specific understanding or skill. Often times, a project is going to have a data layer, a server layer, and a client layer. The most optimal teams I've seen with this kind of stack is either:

    a.) Having a person who's specialized in each layer with one or two seniors who are able to pitch in with whatever needs the most attention without much ramp up. That, right there, is 4-5 people.

    b.) Having 3 seniors who are able to share knowledge of the whole system and work on a lot of the stuff together. You'll still have people who gravitate toward ownership of certain areas of the app, but in the case where someone croaks or quits, you can still have another guy make up for the loss without much ramp up.

    Obviously no software is alike, and you're going to have some differences. Perhaps you're heavily entrenched with some ERP/CRM integration, so you might need an additional person who's specialized in that, for instance.

    And, just because something isn't optimal, doesn't mean it's horrible, either, although typically having just one guy run the whole shabang is setting up for failure. No matter how good that one engineer is, all it takes is a misplaced skateboard on the top of the stairs to make that house of cards fall down.


  • Winner of the 2016 Presidential Election

    @remi said in What is the optimal team size for a project?:

    Now, obviously, we're all going to say that we'd like to have more (good) people (basically, clones of ourselves) helping out, but realistically, given an existing project/codebase, how would you estimate how many people should be working on it?
    For example in our case, we are 6 devs for a core codebase of about 400k LoC

    If this is one piece of software and not multiple, mostly independent modules, then you'd better not add any more people to the team. 6 is already a lot to coordinate.



  • @The_Quiet_One said in What is the optimal team size for a project?:

    But not optimal, number one reason being, you're, by default, the one point of failure. Get hit by a bus? The project is fucked.

    I like to think the company would lose millions of I'm hit by a bus. But in reality they would find a way to get the customer to wait a bit longer and get someone else to finish stuff.



  • @The_Quiet_One It really depends how esoteric the software is. I tend to be very good at learning all the Esoteric shit a legacy platform has and being able to hack around it. One of the reasons why I am working semi-freelance is because I am more of a hacker than a proper software developer and it shows at Interviews as the industry seems to get better at finding people like me out.

    Some people might call this bad, but I've had what I call proper developers (I won't call myself that now) tell me that sometimes it is pretty good to have a bit of a cowboy in the team when the crunch comes down.



  • The optimal team size is 2 people located in opposite time zones. That way, you can only communicate once per day via email. That makes it easier to

    wait



  • @The_Quiet_One said in What is the optimal team size for a project?:

    One dev is never optimal. [...] Get hit by a bus? The project is fucked.

    That is indeed the situation on most individual modules and we've been fighting for some time to solve this. However our modules have a lot of similarities between themselves and we already have the experience that, once a dev is familiar with the core codebase, taking charge of a module is not so much work as it seems (since we're doing scientific programming, it takes more time to understand the equations and stuff than their implementation).

    Plus, I've seen regardless of the skill of that person, they inevitably end up in some kind of echo chamber where they might write some WTF code (we've all done it, let's be honest) but there's no one else to call them out on it.

    This is more the part that concerns me. The devs on the core codebase have all been there for quite a long time and most external devs that happened to have a look at it have either been juniors, or only took a very passing glance. So we haven't had an exterior expert opinion since a loooooong time...

    b.) Having 3 seniors who are able to share knowledge of the whole system and work on a lot of the stuff together. You'll still have people who gravitate toward ownership of certain areas of the app, but in the case where someone croaks or quits, you can still have another guy make up for the loss without much ramp up.

    Which is more or less the situation on the core codebase, shared between all modules. Out of the 6 devs, 3 of us (me included) know it very well.

    @asdf said in What is the optimal team size for a project?:

    If this is one piece of software and not multiple, mostly independent modules, then you'd better not add any more people to the team. 6 is already a lot to coordinate.

    The core codebase is one piece, but the individual modules built on it are mostly independent, and most devs currently spend more time on the modules than the core.

    @fbmac said in What is the optimal team size for a project?:

    I like to think the company would lose millions of I'm hit by a bus. But in reality they would find a way to get the customer to wait a bit longer and get someone else to finish stuff.

    Same for me! :-) The last time I brought up this argument was when I tried to get a raise. It did work a few years back in the past (with a different manager), so let's see if it works again. Given the overall situation of the company, I doubt it, but there is no harm in trying!

    @ben_lubar said in What is the optimal team size for a project?:

    The optimal team size is 2 people located in opposite time zones.

    Joke aside, that's another issue of our team, we're spread over the whole world, Americas, Europe, Asia (mmm, we haven't anyone in Hawai yet... that's probably the only location that would make things significantly worse!). It is impossible to have a team meeting without someone being in the middle of the night. The only saving grace (I think) is that we've all moved around and know each other in person (and not only through video-conf or whatever), which makes long-distance collaboration easier.



  • @remi said in What is the optimal team size for a project?:

    @The_Quiet_One said in What is the optimal team size for a project?:

    One dev is never optimal. [...] Get hit by a bus? The project is fucked.

    That is indeed the situation on most individual modules and we've been fighting for some time to solve this.

    Mandatory code reviews? Plus making sure they actually run it and do some tests to confirm they know what it's doing. Forces having another pair of eyes on the same code.

    Plus, I've seen regardless of the skill of that person, they inevitably end up in some kind of echo chamber where they might write some WTF code (we've all done it, let's be honest) but there's no one else to call them out on it.

    This is more the part that concerns me. The devs on the core codebase have all been there for quite a long time and most external devs that happened to have a look at it have either been juniors, or only took a very passing glance. So we haven't had an exterior expert opinion since a loooooong time...

    Get the juniors to review the code? No, seriously, get them to actually try to understand and ask questions about every bit that doesn't make sense to them however trivial it looks to you.

    b.) Having 3 seniors who are able to share knowledge of the whole system and work on a lot of the stuff together. You'll still have people who gravitate toward ownership of certain areas of the app, but in the case where someone croaks or quits, you can still have another guy make up for the loss without much ramp up.

    Which is more or less the situation on the core codebase, shared between all modules. Out of the 6 devs, 3 of us (me included) know it very well.

    @ben_lubar said in What is the optimal team size for a project?:

    The optimal team size is 2 people located in opposite time zones.

    Joke aside, that's another issue of our team, we're spread over the whole world, Americas, Europe, Asia (mmm, we haven't anyone in Hawai yet... that's probably the only location that would make things significantly worse!). It is impossible to have a team meeting without someone being in the middle of the night. The only saving grace (I think) is that we've all moved around and know each other in person (and not only through video-conf or whatever), which makes long-distance collaboration easier.

    I could probably be convinced to relocate to Hawaii to help fill the gap :P



  • @homoBalkanus said in What is the optimal team size for a project?:

    Mandatory code reviews? Plus making sure they actually run it and do some tests to confirm they know what it's doing. Forces having another pair of eyes on the same code.

    Yes, that's some of the ideas we've been pushing. But we have 0 tests at the moment and all that takes away "productive" time, so even for the devs (let alone management) it is very difficult to get significant traction there. It would be easier if we had some kind of minimal testing/reviews and progressively grow from there, but starting from scratch... (plus we don't have any people trained on that so I'm not sure we would really be able to do something meaningful just by ourselves! Self-training only goes so far...)

    Plus, until now we're lucky to never have been hit hard enough by this kind of problems to feel that this is a priority! That's pure luck, I know (and we probably all know it), but again, changing the status-quo requires some strong event at start. Add to that a difficult financial situation for the company and you see how asking for more resources (or less tasks) is likely to go.

    Get the juniors to review the code? No, seriously, get them to actually try to understand and ask questions about every bit that doesn't make sense to them however trivial it looks to you.

    We do try, but again, it takes time and energy. There is only so much interruptions a dev can handle graciously without starting to growl and snarl when it's not part of their official job. And it's kind of hard to justify saying that both the junior and the senior will lose, say, 20% of their times in that exercise when there are urgent things to do (of course... there's always something urgent...) and we never did that in the past.

    I could probably be convinced to relocate to Hawaii to help fill the gap :P

    I might be tempted by it myself as well... Too bad there is no business for our company there, and no similar business in that area that we could buy. The closest (in time zones) where there might be some business reason to go is Alsaka, which somehow doesn't quite carry the same attraction!


  • Winner of the 2016 Presidential Election

    @remi said in What is the optimal team size for a project?:

    But we have 0 tests at the moment

    My condolences.

    and all that takes away "productive" time

    My experience is that good, meaningful tests actually save time in the end. Debugging is extremely time-consuming.



  • @remi said in What is the optimal team size for a project?:

    But we have 0 tests at the moment and all that takes away "productive" time, so even for the devs (let alone management) it is very difficult to get significant traction there. It would be easier if we had some kind of minimal testing/reviews and progressively grow from there, but starting from scratch... (plus we don't have any people trained on that so I'm not sure we would really be able to do something meaningful just by ourselves! Self-training only goes so far...)

    Would it take too much extra time to start adding tests to new code? Making small improvements as you go along usually takes less time and it does accumulate in the long run. Also, if you're in a new part of code and you're running it just so you know what it's doing why not also write down what you just tried out? You get some extra test coverage while not spending much extra time since you needed to figure out the code anyway.

    Plus, until now we're lucky to never have been hit hard enough by this kind of problems to feel that this is a priority! That's pure luck, I know (and we probably all know it), but again, changing the status-quo requires some strong event at start. Add to that a difficult financial situation for the company and you see how asking for more resources (or less tasks) is likely to go.

    That's something for you business to decide an it very well could be that there are more urgent places to spend time and money. Having extra confidence in your code is good, but if you're bleeding money it won't help.

    I'm mostly talking about medium-to-long term fixing here. You could try getting them to see that having more confidence in what the code is doing makes future changes faster.

    Get the juniors to review the code? No, seriously, get them to actually try to understand and ask questions about every bit that doesn't make sense to them however trivial it looks to you.

    We do try, but again, it takes time and energy. There is only so much interruptions a dev can handle graciously without starting to growl and snarl when it's not part of their official job. And it's kind of hard to justify saying that both the junior and the senior will lose, say, 20% of their times in that exercise when there are urgent things to do (of course... there's always something urgent...) and we never did that in the past.

    Maybe get them to write the tests as part of the review? Makes sure they understand more of the code without bothering you. Yeah, you would need to go through their test code to make sure they aren't fucking it up, but test code tends to be simpler.

    Also, I think that a senior dev's official job should always include training juniors.

    The closest (in time zones) where there might be some business reason to go is Alsaka, which somehow doesn't quite carry the same attraction!

    It does have the Aurora though



  • @homoBalkanus As I said, part of the problem is that we (as a team) have absolutely no experience of tests and such. So before we could write the first one, we'd need to set up some kind of test environment, decide on the way to write, build, run the tests, and at the moment for us this is like asking us to build a car from scratch. We might have an idea of how the final thing should look like, and even of some of the techs involved, but we have no clue where to start.

    That is not something that I think we can solve by ourselves. I feel that we need some kind of management push there, including training (or hiring) someone seriously, and giving us the relevant resources to do it (time, people...). Otherwise someone might half-heartedly write a couple of tests, but that'll never be adopted by the others.

    Anyway, that's not really what I had in mind when starting this thread...


  • Winner of the 2016 Presidential Election

    @homoBalkanus said in What is the optimal team size for a project?:

    Also, if you're in a new part of code and you're running it just so you know what it's doing why not also write down what you just tried out?

    ^This.

    I had a co-worker who would spend hours debugging some piece of code and still didn't have test cases at the end. Most of the time, he was unable to tell me which issues were fixed and/or reintroduced by each of the commits he made. I tried to tell him multiple times that this is horribly inefficient, but he stubbornly refused to accept that fact.



  • @remi said in What is the optimal team size for a project?:

    Anyway, that's not really what I had in mind when starting this thread...

    I went off in this direction mostly because it seems to me that having more tests makes it easier for fewer developers to efficiently maintain a project. Less time spent debugging and analyzing code means more features. Try using that as an argument for expanding a team with a dedicated test writer/trainer.

    As for your original question if 6 devs is enough. If your company is loosing money and you're having trouble keeping up with the competitor because of the features/number of bugs, then no, 6 devs is not enough. If the reasons are out of your control then 0 is also enough.

    From what you wrote it sounds like you're treading water and having trouble keeping up. That definitely won't work in the long run.



  • @homoBalkanus said in What is the optimal team size for a project?:

    From what you wrote it sounds like you're treading water and having trouble keeping up. That definitely won't work in the long run.

    Thing is, we've been running in this mode for several years (I'd say at least 5, if not more), and I don't get the feeling (nor the objective indicators) that things are getting worse. So I'm starting to question whether we are really having trouble keeping up (maybe we're just feeling the same pressure as every team of devs is feeling), and how long the long term is before things start falling apart...



  • @remi It could also be that you really are that good at what you do. Or your users got used to your pace.

    Or you're used to having constant pressure that you don't remember what it's like to live without it :P



  • @homoBalkanus said in What is the optimal team size for a project?:

    @remi It could also be that you really are that good at what you do. Or your users got used to your pace.

    That's what I like to think when I'm in a good mood...

    Or you're used to having constant pressure that you don't remember what it's like to live without it :P

    ... or in a bad mood.



  • @ben_lubar
    Well, really 3 people. One in China, one in Great Britain / Portugal, and one on the Pacific Coast of North America. That way you can keep working on your customers' needs 24 hours a day!

    Edit: wow, I expected at least Spain would be on UTC, if not parts of France.



  • @izzion said in What is the optimal team size for a project?:

    Edit: wow, I expected at least Spain would be on UTC, if not parts of France.

    Can't find anything for France, but for Spain, if Wiki is to be trusted, the Canary Island are in UTC, and maybe also some of the Plazas de soberanía (although Ceuta/Melilla are explicitly at UTC+1, it doesn't say for the other bits and Morocco itself is UTC, so maybe?).



  • @remi
    I was referencing: http://www.worldtimezone.com/ Which has a cool updating time clock and today's date on it, (PLUS! it's on the Internet), so it must be true :laughing:



  • @izzion this is one of my favourite maps



  • @homoBalkanus Obligatory xkcd:

    EDIT: I blame :baby: for putting a link to the image itself when I gave it the link to the comics page.


  • Grade A Premium Asshole

    @remi said in What is the optimal team size for a project?:

    What is the optimal team size for a project?

    How long is a piece of string?

    There are many different correct answers to your question, but I tend to prefer small groups of super-talented people instead of large groups of fuckheads.



  • @Polygeekery That's also my preference, if anything because this is what I hope we have and that I'm relatively happy with (as in, I don't dread coming to work in the morning, so I'm assuming that my team is ok... not that I think we are super-talented people...).

    My question was more along the lines of, given our team is much smaller than teams handling vaguely similar things elsewhere, is that really a problem in our team? (apart from the lack of tests and other known :wtf:)


  • Grade A Premium Asshole

    @remi if you are keeping up with deadlines and producing a quality product, what more could you expect. As I restarted the question earlier: "How long is a piece of string?" If your team gets the work done, then you should be fine.

    Plus, more developers does not usually mean more production. It usually just means more meetings.



  • @Polygeekery So should I assume that the other teams are :doing_it_wrong:? I mean, that has always been my default ego-fuelled feeling, but that does seem a bit, well, ego-fuelled...


  • Grade A Premium Asshole

    @remi I am the wrong person to judge whether or not something is ego-fueled....



  • This post is deleted!

  • Winner of the 2016 Presidential Election

    @Polygeekery said in What is the optimal team size for a project?:

    I am the wrong person to judge whether or not something is ego-fueled....

    Pro tip: If you're about to be elected as POTUS, you've gone way too far.


  • Grade A Premium Asshole

    @remi said in What is the optimal team size for a project?:

    @Polygeekery So should I assume that the other teams are :doing_it_wrong:? I mean, that has always been my default ego-fuelled feeling, but that does seem a bit, well, ego-fuelled...

    Better answer: When you want to know something like this, ask yourself "Why?" questions. I love "Why?". It is the fundamental question. Ask yourself "Why do we get done what we get done with our team of this size?" Ask yourself "Why does the other team get done what they get done with a team of their size?"

    Asking "What?" questions is less helpful in this regard. The answers can be enormous and frequently non-helpful. Asking "What is the optimal team size for a project?" is a question that has a million variables and the experience and insight of others will probably not be applicable to your team, your domain, or you.


  • Grade A Premium Asshole

    @asdf said in What is the optimal team size for a project?:

    @Polygeekery said in What is the optimal team size for a project?:

    I am the wrong person to judge whether or not something is ego-fueled....

    Pro tip: If you're about to be elected as POTUS, you've gone way too far.

    It would never happen.

    I don't have the right kind of personali...

    I have too many skeletons in my clos....

    I am way too harsh in my wor....

    I am not politically corre...

    Fuck it. I need to start campaigning.



  • @Polygeekery said in What is the optimal team size for a project?:

    Better answer: When you want to know something like this, ask yourself "Why?" questions.

    Well, we did variants of this a few times, but the reason I'm asking here is to avoid the "echo chamber effect" that @The_Quiet_One mentioned earlier. TBH, I'm not really as worried as it may seem here, but I'm using the opportunity of a new audience that might be familiar with this kind of problems to see if there are lines of inquiry into "why" that we've missed until now. The thread title was just a way to start discussing (and also "why is the optimal size" doesn't make sense ;-) )...

    Part of the answer (as to why we seemingly do better than the other) is that we don't have tests, doc or any kind of QA, which they have (at least they have something that can pass for it...), so in the short term they have that overhead that we don't (I know, on the long term we're the one paying the price -- but the thing here is that this cost is blurred into the overall debugging/maintenance/support cost, so we can't easily get an estimate of time lost!).

    Another is that we have less turnaround in devs as they do, so devs are more familiar with the intricacies (and :wtf:...) of the codebase and thus more efficient (at least in the short term, again we may be losing on the long term here as we don't have fresh ideas etc. but again this isn't something that can be shown as a clear cost whereas training a new dev has a clearly visible cost!).

    Without being overly arrogant, I also think that the inability of a previous manager to hire anyone-but-the-perfect-person means we've always been short-staffed, but with good people only. There are also business-related and organisational differences that I won't get into here that makes us more efficient.

    These are all the points I already know. And this thread hasn't really brought up any new one.


  • mod

    @Polygeekery said in What is the optimal team size for a project?:

    @asdf said in What is the optimal team size for a project?:

    @Polygeekery said in What is the optimal team size for a project?:

    I am the wrong person to judge whether or not something is ego-fueled....

    Pro tip: If you're about to be elected as POTUS, you've gone way too far.

    It would never happen.

    I don't have the right kind of personali...

    I have too many skeletons in my clos....

    I am way too harsh in my wor....

    I am not politically corre...

    Fuck it. I need to start campaigning.

    I might vote for you!



  • @abarker
    And I suppose I'll have to as well, since @Polygeekery has all the guns.



  • @izzion But the important question is, does @Polygeekery have a daughter?



  • @remi
    Given that I don't identify as dragon-kin, I couldn't care less about @Polygeekery's daughter. Besides, he has all the guns, so not exactly prime father-of-my-date material. :P


  • mod

    @izzion said in What is the optimal team size for a project?:

    @abarker
    And I suppose I'll have to as well, since @Polygeekery has all the guns.

    Nuh-uh!

    I have some of them!


  • Grade A Premium Asshole

    @remi said in What is the optimal team size for a project?:

    @izzion But the important question is, does @Polygeekery have a daughter?

    Two sons, no daughters.

    Well, so far. That is the gender they were assigned at birth. :trolleybus:



  • @Polygeekery said in What is the optimal team size for a project?:

    Well, so far. That is the gender they were assigned at birth.

    Some how you made that sound like a threat.

    Like, if they carry on misbehaving then you'll turn their bits inside out.



    1. You don't need a "team" to bang on a keyboard. Any idiot can do that. We'll just outsource the project.


  • @remi said in What is the optimal team size for a project?:

    does @Polygeekery have a daughter?

    Not yet. We just have to apply some guacamole to one of his sons.
    :trollface:



  • @remi said in What is the optimal team size for a project?:

    But we have 0 tests at the moment

    That's one of those "I wouldn't start from here" things. It's insanely hard to get tests built for an existing codebase. You might be able to get a testing team to build tests based on stated requirements, though. And requiring any code release to have tests exercising new or fixed functionality is always a good thing.

    As for team size, I'd suggest, if possible, 2 to 3 developers per "module". Obviously, each of those developers could work on / know about several modules. That doesn't help directly, I guess, but it's an approach that spreads the knowledge and stops disaster situations when some fucking prima donna decides to get the hump and move elsewhere on zero notice.

    It's all very "finger in the air". LOCs are not a useful measure for judging this.


Log in to reply
 

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.