Seperation of project responsibilities in new project
Posted
by
dreza
on Programmers
See other posts from Programmers
or by dreza
Published on 2012-11-23T20:45:46Z
Indexed on
2012/11/23
23:21 UTC
Read the original article
Hit count: 280
We have very recently started a new project (MVC 3.0) and some of our early discussion has been around how the work and development will be split amongst the team members to ensure we get the least amount of overlap of work and so help make it a bit easier for each developer to get on and do their work. The project is expected to take about 6 months - 1 year (although not all developers are likely to be on and might filter off towards the end),
Our team is going to be small so this will help out a bit I believe. The team will essentially consist of:
- 3 x developers (1 a slightly more experienced and will be the lead)
- 1 x project manager / product owner / tester
- An external company responsbile for doing our design work
General project/development decisions so far have included:
- Develop in an Agile way using SCRUM techniques (We are still very much learning this approach as a company)
- Use MVVM archectecture
- Use Ninject and DI where possible
- Attempt to use as TDD as much as possible to drive development.
- Keep our controllers as skinny as possible
- Keep our views as simple as possible
During our discussions two approaches have been broached as too how to seperate the workload given our objectives outlined above.
OPTION 1: A framework seperation where each person is responsible for conceptual areas with overlap and discussion primarily in the integration areas. The integration areas would the responsibily of both developers as required.
View prototypes (**Graphic designer**)
|
- Mockups
|
Views (Razor and view helpers etc) & Javascript (**Developer 1**)
|
- View models (Integration point)
|
Controllers and Application logic (**Developer 2**)
|
- Models (Integration point)
|
Domain model and persistence (**Developer 3**)
PROS:
- Integration points are quite clear and so developers can work without dependencies on others fairly easily
- Code practices such as naming conventions and style is more easily managed in regards to consistancy as primarily only one developer will be handling an area
CONS:
- Completion of an entire feature becomes a bit grey as no single person is responsible for an entire feature (story?)
- A person might not have a full appreciation for all areas of the project and so code overlap might be lacking if suddenly that person left.
OPTION 2: A more task orientated approach where each person is responsible for the completion of the entire task from view -> controller -> model.
PROS:
- A person is responsible for one entire feature so it's "complete" state can be clearly defined
- Code overlap into different areas will occur so each individual has good coverage over the entire application
CONS:
- Overlap of development will occur in all the modules and developers can develop/extend without a true understanding of what the original code owner was intending. This could potentially lead more easily to code bloat?
- Following a convention might be harder as developers are adding to all areas of the project
- If a developer sets up a way of doing things would it be harder to enforce the other developers to follow that convention or even build on it (or even discuss it?). Dunno..
- Bugs could more easily be introduced into areas not thought about by the developer
- It's easier to possibly to carry a team member in so far as one member just hacks code together to complete a task whilst another takes time to build a foundation that could be used by others and so help make future tasks easier i.e. starts building a framework?
QUESTION: As it might appear I'm more in favor of option 1, however I'm interested to see how others might have approached this or what is the standard or best or preferred way of undertaking a project. Or indeed any different approach to handling this?
© Programmers or respective owner