At this post I will describe my point of view about the Team Management, and in depth Software Development Teams. How we must build a team for:
- Having work rules simply to understand and accept by the team.
- Working efficient: capacity to measure the development time and take decisions to improve.
- Covering many projects at same time by the same team.
- Geographically distributed team.
Metodology necessary to schematize many stages which concludes in the final product. In y proffesional experience, agile methodologies are which do better approach to the reality . I will based on:
- Scrum agile development for any kind of product, it defines roles, and the way to reproduce measurable iterations, needed meetings,…
- eXtremeProgramming more specific methodology for applicatiions development, defines the way to automatize tests, version control, requirements, collective code,…
The methodology gives us:
- tasks to do on each stage
- Sequence to make every stages
Roles in the team (share the methodology tasks):
- Master: Watch for the fullilement of the methodology, teach it. Defines priorities, roles, projects. Orchestation. Get things for the team.
- Commercial: First contact with the client. Watch the profitability of the whole commercial proccess.
- Architect: it decides technologies, and teach them. It builds the system wich supports the Architecture.
- Quality (Tester): This decides the technologies for QA development, and teach them to the team. This builds the quality support system (CI, TDD, SVN).
- Analyst(Product Manager): This defines the user requirements, converts them to diagrams easy to understand by the programmer, prioritizes the tasks(maximizing the ROI) and makes demos for the user. Maximize the usability.
- Project manager: planning the iterations, version control, sharing the tasks. Maximize the regularity of the team and coherent tasks sharing.
- DB programmer: DB development, to minimize duplicity.
- Business programmer: This develops the business libraries, to maximize the reuse (APIs & WS)
- Front-end programmer: this develops the web screens, to maximize the usability.
The pairs Master-Commercial, Architect-Quality, Analyst-Manager can be adopted as three roles. It depends on the number of persons in the equipment and how you want to do the things.
Programmer roles are the same as technologies implies the architecture, being the enumerated the basics (Flash, design, …). They can be joined in an alone person too:
Tools are which help to the team to work with methodology.
- System: network (ADSL), Operating system (Ubuntu: OpenOffice, browser…)
- Communications: e-mail, Video/Chat (Skype)
- Project management: redmine+redminebacklogs. Version control (Subversion).
- Architecture: IDE (Development tools, Eclipse, DBDesigner,…), technologies dependencies (Hibernate, ADF, ZK,…)
- Quality: coverage plugins, Continous integration server, code analyzing, test tools,…
The backlog schema which represents the diary job work: