Separation of development responsibilities in a new project

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 (All different levels i.e. more senior, intermediate and junior)
  • 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**)

OPTION 2:
A more task orientated approach where each person is responsible for the completion of the entire task (story) from view -> controller -> model.

QUESTION:
For those who have worked in small teams developing MVC projects how have you managed the workload distribution in this situation. I can’t imagine the junior would be responsible for building parts of the underlying architecture so would given them responsibility for the view make sense considering we are trying to keep it simple?

3

Option 2 seems much better for agile development. I really cannot see how option 1 can work with agile. So if you are favoring option 1, then I would have to ask if you are really doing agile.

The cons you mention are not really problems and if you think they are problems, then you should be fixing something else than “overlap” of developer work.

  1. If the intent of developer is not obvious from code, then this code definitely needs refactoring.
  2. There are tools to check and enforce coding conventions. ReSharper for example.
  3. what?
  4. This happens all the time, no matter where, how and who. You just need to make sure you have way to catch those problems soon(pair programming, code review, lots of testers) and be able to fix them efficiently(unit testing)

Actually, you could combine both options in some way. Take pair programming, give pair a feature to implement and then each person can work on different “layers”. Of course this is not real pair programming. But you still get advantages of shared knowledge of said feature, better coverage of “what if”, the pair can help each other and people can still somehow specialize.

2

Your question is fairly vague; I’m unaware of what your truly trying to ask.

Is it: “The best way to avoid overlap in our project” or “The best practice to get a lot of productivity with minimal overlap / benefits in our project?”

Assuming your asking about a pattern and practice; I might say… Service Oriented Architecture using Windows Communication Foundation. It will provide flexibility, extensibility, and abstraction if it is utilized correctly.

This can help each developer focus on a particular task; without overlap. So it can organize the task quite effectively.

A really nice example here.

You’ll notice that it abstracts several aspects for re-usability. So an example with a Product and an Order.


You’ll have your:

  • Data Layer
  • Business Layer
  • Model
  • Contract
  • Service
  • Host
  • Proxy
  • Client

Which looks like quite a lot. However it really isn’t if paired with efficient techniques. To explain the bulk of this approach-

Your Model will contain your object; this object will be capable of being exposed to your client. The Contract will provide the Interface your implementing; which can be broken down according to task. Then the overall Service; which will provide the method implementation.

By the approach taken; it will allow you to host the project through Internet Information System, Windows Activation Service, and communicate over a vast array of technologies with an assortment of security as well.

The benefit of this approach will even implement some techniques you mentioned. As your inheriting the functionality of each method; into the Client Proxy. Which makes the re-useability quite nice and the implementation quite clean / easy.

Anyways, that is my two cents. How it will fit into your project- I don’t know. As Martin Fowler stated: “Frodo said in Lord of the Rings, Go not to the Elves for counsel, for they will say both no and yes.” Which makes perfect sense, advice can be a dangerous gift especially with a brief description. We don’t know your project, goals, or particular growth details. Which can make any design or pattern a nightmare; especially since our recommendation may sound solid but in reality do your project a great disservice.

Ultimately your knowledge of the project and suggestions made can hopefully point you to the proper choice.

The article in that link will really go into detail and explain what I mean about the pairing and usage.

5

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật