Startups Stack Exchange Archive

Dividing Code Responsibility

I’m the lead of a 4 person development team for a pre-funded startup. Most of us have paying jobs and work on the project part-time at very different hours and locations. Our software stack has several layers, requiring familiarity with a few different programming languages/concepts. My question is what is the best way to assign responsibilities given that some tasks involve touching more than one layer. The options I see are

  1. Assign each task to one individual, expecting him to acquire over time the skills to work in all layers.
  2. Give each developer an area of responsibility, leading to assigning complex projects to multiple people.

Option 2 seems more realistic for the stage when we’re all working full-time, but what would be the most efficient usage of resources until then? With the cost being defined as time to task completion, does the additional learning time cost more than the coordination cost? If so, is it worth it long-term because of the skills each will develop?

Answer 5809

Economically speaking, focus on a single task / responsibility is always a better approach.

From my own dev practice: when a dev is responsible for, say, one layer, then his or her creativity is focused on it to improve it, and some rivarly factor comes in as well, as no one wants to be perceived as less effective or something.

Answer 5955

Best would be to attempt doing the both.

Give everyone to be responsible for two projects for on of each developer must be the leader. This introduces competition and redundancy in case someone is not available. Still the fact someone still leader behind the project will aim what forsberg is talking about as truly developer works best if he is focused on something.

Answer 5810

Option two. Your problem is not exactly related to task allocation, but that your tasks seems to be too broadly defined and too large in general - this is usually the case when this exact problem is observed. Multiple people can surely work on a single task across different scopes provided it is split in to multiple small units that can be implemented independently or almost independently.

For example, a task to develop a API frontend and backend can be divided in many smaller subtasks, like, create DB structure, define API, implement backend, implement transport, implement frontend etc.

Managing this will involve some negotiation and planning, however, having smaller, more manageable task units will allow you to assign specific small units to people who could handle them the best.

About widening the scope of the skills, its nice to have, but - deliver first, play later.


All content is licensed under CC BY-SA 3.0.