confoo.ca 2010 making software management tools work for you
DESCRIPTION
With the advent of such rich open source tools such as Subversion, Git, Trac, CruiseControl, and Review Board, managing software projects of any size has become much easier than ever. But how do you best use these tools in your organization? In this talk we'll look at how these tools can fit into any software project, helping you make your team more efficient than before.TRANSCRIPT
Making software
management tools work
for youJohn MerticSugarCRMConfoo.ca 2010
Disclaimer: There are no silver
bullets
“For every complex
problem, there is a solution
that is simple, neat, and
wrong.”
– H. L. Mencken
Lots of Choices
Building A Process
Having a process makes choosing tools much more effective
How to build a process
Evaluate where you are now Address the good and bad of the current way of
doing things
Make a plan of where you think you should be
Starting making strides towards going there
Look for tools to support the process
Implement the tools
Evaluate to see what's working, what's not.
Release Management
Development Management
Product Management
Pieces of Software Project Management
Product Management
These are the stakeholders ( or their surrogates )for your project
Needs: Need to be able to build out requirements for
features ( use cases, screen mockups, etc ) Must have a collaborative environment so that
these requirements are easy to keep updated Must be kept in the loop on the progress of the
project
Development Management
Manages the developers working on the project
Needs Need to allow multiple developers to work easily
together ( version control ) Need to keep the codebase under control ( code
review ) Need to deal with bugs in the project ( issue
tracking ) Need to be able to track progress of features being
developed ( feature tracking ) Need to be able to collaborate with Product
Management on requirements
Release Management
Balances the needs of the stakeholders and the abilities of the developers to make the release successful.
Needs Setting timelines for a release.
Scheduling feature development iterations Measuring development team velocity
Evaluating product needs and decide on what’s in and what’s out
Need to provide proper QA for the project ( unit testing, functional testing, manual testing )
Tools should help keep it all open
Picking the tools to use
Do pick tools that … … you can get up and running with quickly ( for
those new to all of this ). … compliments your process. … are easy for your team to adjust to.
Don’t pick tools that ... … attempt to fix a problem that isn’t broken. … that are distracting or too cumbersome for
your process. … you and/or your team are not ready for.
For teams new to all of this…
Version Control: Subversion, maybe Git/Mercurial/Bazaar/Monotone
Issue/Feature Tracking: Spreadsheet ( Excel, Google Docs )
Collaboration: Google Docs
Communication: IM, IRC, Email, Meetings
After your team is comfortable with using tools…
Version Control: Subversion, also consider Git/Mercurial/Bazaar/Monotone.
Issue/Feature Tracking: Trac, Mantis, JIRA
Collaboration: Google Docs, Wiki
Code Review: No formal tools; utilize Peer Review and/or Pair Programming
Communication: IM, IRC, Email, Meetings Less big, formal meetings; more smaller “water cooler”
meetings
Resource Management: Spreadsheet ( Excel, Google Docs )
Tools well refined teams will use…
Version Control: Subversion, Git, Mercurial, Bazaar, Monotone Preference towards DVCS
Integrated Software Project Management: Trac, Mantis, JIRA, Teamwork, eGroupWare, RedMine Contains functionality for Bug Tracking, Collaboration, and
Resource Management Another solution is to build links between the Intermediate
level tools to help the workflow
Communication: IM, IRC, Email, Meetings Less big, formal meetings; more smaller “water cooler”
meetings Sandbox environment for previewing new features.
Code Review: Review Board, Crucible, Code Collaborator, etc
Tools well refined teams will use…(cont)
QA Automation Functional Testing ( Watir, Selenium ) Unit Testing ( jUnit, phpUnit, etc )
Continuous Integration: Hudson, CruiseControl
Documentation Code Level ( Doxygen ) End-user ( Wiki, Word, Google Docs, etc )
Summary
Importance of developing a process that works for you, rather make your team work in the process of a tool.
One shoe doesn't fit all - what works in one team may not in another.
Make small strides in making your team more efficient, not large leaps.
Re-evaluate your processes regularly to see if the current tools are meeting your needs.
Questions/Comments?
Thanks for coming!
Tell me how you liked this talk… Submit feedback on this talk to http://joind.in/
1302
Who I am: John Mertic Email: [email protected] Blog: http://jmertic.wordpress.com Twitter: jmertic
Who I work for: SugarCRM – http://www.sugarcrm.com