In order to work in any sized development team the project at hand needs to be modularized in such a way that every developer on the team has a task to do. Ideally, throughout the duration of development, each member of the team would always have a task to do, to avoid any wasted time. It would also be ideal for each member to know which new task they can begin after completion of their current task. In this way there is no confusion on the role of each developer in the team, this is more of less the goal behing issue-driven project management. When managing a project utilizing an issue driven approach there are a few seemingly simple guidelines that I have used and found effective:
1. Divide up the work into tasks.
2. Make sure that each task is not too big, for the project I am currently involved in each task ideally takes no longer than 2 days to complete. Large/lengthy tasks can lead to problems.
3. Each task is specified by an issue. For examples of some issues please see These Issues
4. Each issue should have a single owner - as shown in the example above, this allows independent work.
5. At all time each developer should have a task they are working on.
6. Every commit or change to system should be associated with an issue and be documented accordingly.
Although these guidelines seem more or less simple, actually implementing and upholding them in a real project can be challenging. This became very clear to me as my team took on a simple project to develop a command line interface for a Wattdepot server. The home page along with a description of the functionality of the project can be found here : Halealoha-Cli-Hash
In summary our team had to develop a small system that runs ont the command line that takes in a limited set of user commands, retrieve the appropriate information from the WattDepot servers, and returns the answer. the list of commands was as follows:
-current-power [tower | lounge]
Returns the current power in kW for the associated tower or lounge.
-daily-energy [tower | lounge] [date]
Returns the energy in kWh used by the tower or lounge for the specified date (yyyy-mm-dd).
-energy-since [tower | lounge] [date]
Returns the energy used since the date (yyyy-mm-dd) to now.
-rank-towers [start] [end]
Returns a list in sorted order from least to most energy consumed between the [start] and [end] date (yyyy-mm-dd)
-quit
Terminates execution
-help
Prints out this list
As you can see, not too difficult, but despite the fact that the overall project was not too difficult we did run into some problems trying to use issue driven project management. The first unseen difficulty was to divide up the work in such a way that no one persons work was dependent on the completion of another work. This could end up stalling development especially when some group members work faster than others. We were able to work out this problem, and it should be noted that having SHORT issues makes this problem a lot easier. After our team got really going on the project we had few other difficulties. We did have an unequal distribution of work in our team, but that is to be expected when dealing with a group of students with different work loads. Our team was able to complete the project, and ahead of schedule, with the help of issue-driven management. Overall I found using this type of project management to be simple and effective.
If you want to check out the project you can find a download of it here: HaleAloha-Cli-Hash
Just check out the WIKI page for instruction on how to download and use the project.
Mahalo.
No comments:
Post a Comment