DevOps @ The Hub: Collaborative tools for startups Communitech September 4, 2012 Startups In this week’s edition of DevOps @The Hub, we cover an area of tooling relevant not only to ‘techies’ but to ‘biz’ folks as well. It’s called collaborative tooling, and it involves three key elements that not only demand teamwork, but can help startups succeed when used effectively. They are: Awareness: When ‘tech’ and ‘biz’ peeps are aware of each others’ needs and capabilities, a startup will be better prepared to tackle business-related problems. Alignment: Once you have achieved awareness, the next challenge is to align technical and business needs to a set of common goals. Far too often, technical decisions are made because they are “industry best-practice”(as discussed in the Version Control article) without taking into account the context of the startup’s specific business environment. Action: Effective execution of both technical and business strategies is important if a startup is to succeed. While your startup may think it has the best idea since Siri or sliced bread, it will likely become part of a very grim statistic unless it defines goals, designs metrics to analyze feedback, and follows a proper technical and marketing implementation plan. Helping to build better awareness The AppsFactory team is comprised of both highly technical and business-savvy individuals. We’ve found that open and effective communication has helped the staging/product-management team gel effectively with the prototype development team to produce quality applications. Having been a technical PM in the past, I’ve been quite fortunate of being both on the PM and prototyping teams this term, so I’ve dealt with issues that both ‘techie’ and ‘biz’ individuals experience when dealing with each other. One thing I’ve found, and what most ‘biz’ guys can relate to, is that it is often difficult to interrupt a ‘techie’ who’s in the zone and coding away on the latest and greatest product feature. Other than trying to catch the developer on a coffee break, how can you interrupt genius at work? One possible solution is to use a collaborative tool such as Campfire to break the ice. Simple and sleek-looking, Campfire is a great business group chat app that allows users to share information and store files shared during the session. Campfire does a really great job of providing searchable transcripts of sessions so that team members don’t have to bother each other with requests for information already discussed. This is especially handy for new hires, for whom it eases the transition and reduces knowledge curves. This means you can develop your product more efficiently. Achieving alignment and setting up your action plan As mentioned in the Version Control blog post, an effective way to align your team is to increase awareness of the business context and design processes and schedules that fit that environment. While better awareness and alignment go hand-in-hand, startups often fail to properly execute on their ideas. Most companies have dedicated project managers to help fill that gap and co-ordinate activities such as planning, alignment and implementation. Unfortunately, most startups lack resources to support such a dedicated role and often this requires both ‘techie’ and ‘biz’ individuals to take on this role collaboratively. “Lean” project management methodologies such as Agile have been designed with the modern-day startup in mind, to help co-ordinate teams and improve collaboration organically. For instance, Agile/Scrum breaks down the classical definition of project manager into two separate but inter-dependent roles: Product Owner, who has final authority and responsibility for the product vision and improving the ROI. Usually a ‘biz’ person takes this on, since they are tasked with managing end-user/stakeholder expectations while prioritizing the product backlog based on business needs/requirements. Scrum Master, who is responsible for guiding the team and facilitating meetings. The Scrum Master negotiates with the product owner and removes team and organizational impediments. This person schedules tasks and helps make sure they are performed. Based on my experience as a technical project manager/product owner/scrum master in the past, the very definitions of these roles are always a point of contention and they should not be set in stone. In fact, role assignments should be based on people’s individual qualities, not their titles. While this goes against orthodox Agile mentality, I often quote Miyamoto Musashi to drive this point: Do not develop an attachment to any one weapon or any one school of fighting. How to manage your Action Plan While we briefly went over Agile in the previous section, the goal of this segment is to highlight tools that not only help you manage your team’s action plan, but your individual plan as well. Using the Basecamp tool, there are several qualities that allow it to stand out from other project management tools on the market: Ease of use: Designed by the same guys who brought you Campfire, Basecamp offers a light-weight and simple interface that allows your team to collaborate on tasks/issues. To-do lists: Basecamp allows you to create as many to-do lists as you see fit and allows scrum masters/tech-leads to assign team members and due dates. Better yet, you can create discussion threads for each to-do list item to help manage conversations efficiently. Progress Bar: Want a bigger picture of what was accomplished? Basecamp offers a progress screen which shows finished work in an easy-to-use linear view that can help drive daily stand-up and lesson-learned sessions. Integration with other apps: The Zapier guys did a great job creating a GitHub integration so that instead of having to update both your GitHub and Basecamp account, a post-commit push will automatically trigger a flag that will update your Basecamp task item. While not specifically marketed as an Agile-based tool, the lightweight design and ‘flow’ of the tool is a great bonus for any startup or rapid development team. If your team requires Agile-specific tools, we highly recommend solutions such as Jira-Greenhopper (by Atlassian) or Rally. Kanban Another project methodology worth exploring is the concept of Kanban: A method for organizing tasks with an emphasis on just-in-time delivery and realistic work output. It emphasizes the individual/team to pull work from a queue, and the process, from definition of the task to its delivery, is displayed for everyone to see. For more information, and interesting case studies, please see the following article here. What do you need to get started with Kanban? It’s easy! All you need is a white board, marker and sticky-notes: Some notes: Each sticky note represents a task/feature that needs to be completed. Depending on the context, a sticky note should contain information on when the item is due (to help with prioritization), and issue number (to reference an item in Github or a tracking software). Please see the sticky note under the Sanity column: that one is late so I’ve highlighted it as red to ensure that who ever is doing the sanity check for that feature knows that this is an urgent task! Each column represents a state the sticky is in. Once the sticky note has completed that state, you move the sticky towards the next column to the right. WIP – The concept of WIP (Work in Progress) is key in Kanban. Similar to the story point concept in Agile where you assign a maximum amount of story points per sprint, the WIP value determines the maximum amount of work each state can handle. This is very helpful for both product owners and scrum masters as it creates a very realistic snapshot on what the team can deliver to its shareholders/end-users. A Kanban board is also a great tool for personal task management and there are web-based solutions for individual use. Here’s one example of a Kanban board that I use (please note, this is only an example ;)), but if you are like me and want to run the code locally (ie. prevent anyone outside your team looking at your board), please go here and follow the instructions in the readme.md file to install it.