I'm finding it hard to divide work in a group of programmers when a project starts out. It seems like every project has one big piece of core functionality that everything else depends upon. I find that I tend to make decisions on how this core is going to work as I write it. So I see two ways you could do this::

  • Have one person write this core up to a point where separate tasks become clear.
  • Do a lot of planning to design the components of the system and how they'll interact, then divide them up.
  • Something else entirely.

Which option will allow my team to work most efficiently?

  • @GregBurghardt: please enlighten me, how can the answers to that other question be applied to this question? – Doc Brown Mar 14 '16 at 17:15
  • @DocBrown: Whether you are starting a project or in the middle of a project, dividing up work is always a problem. The accepted answer does address the OP's question in quick, easy bullet points. The other question was also about whether or not work should be split up among application layers or by feature -- something that applies to this question as well. – Greg Burghardt Mar 14 '16 at 17:17
  • 1
    @GregBurghardt: I do not see how this can help the OP to make a decision between the two alternatives he presented here. – Doc Brown Mar 14 '16 at 17:20
  • I have to agree: there is useful information on that other question, but it does not address the specific question of dealing with prerequisite functionality. This question reads "I have 10 tasks, but one of them must come first. How do I deal with this?" – user22815 Mar 16 '16 at 4:31

Option 3 might be feasible (if your team size is not larger than ~5):

  1. do a little planning about some of the components, just enough to split the work up

  2. let one person describe the interfaces between the components found on 1, then start to distribute the work as soon as possible

  3. goto step 1, where you continue planning to refine the components iteratively, distribute the work again

And make sure your "core" does not get a big-ball-of-mud - surely you can give it a structure, with separate layers and/or components. Then it is much easier to distribute the work.

  • Our team is exactly 5 :). – bigblind Mar 14 '16 at 17:24

It seems like every project has one big piece of core functionality that everything else depends upon.

I think this is not really true. I believe it is just failure of designer/architect to be able to split up the core into multiple smaller parts. It is hard to tell in your specific case, but the more you learn about software design and architecture the more you are able to split up the design into self-contained parts.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.