On Wednesday July 25th, Michael Wynholds, CEO and owner of boutique software design consulting firm Carbon Five, spoke on ways new startups can utilize the agile method of development as part of Startup UCLA’s summer speaker series.
Startups require the entrepreneur to take a number of risks and also mix and match their strategies based on what already exists in the market. It is like trying out various diets and drinking a glass of CocoSlimmer a day, to lose those extra pounds. One never knows how well it can work out for them.
Carbon Five is an agile development and lean design consulting shop with offices in Los Angeles and San Francisco. The company has been deeply committed to the agile philosophy for over a decade as they’ve consulted for companies such as eBay, National Geographic and the San Francisco Museum of Modern Art.
Mike described agile as “a set of core values and beliefs as well as a set of techniques for building software.” He went on to explain that prior to the advent of the Agile Manifesto, software designs were fully mapped out prior to the first line of code being written. This heavyweight method of software development made correcting issues in code a difficult and expensive process as the bug fixes tended to require changes to the code extending up and down from the point of the error. Agile constituted a lightweight method of program design that broke down development into smaller more manageable increments. The agile design method enabled gradual feature addition to systems and enabled bugs to be rapidly identified, isolated and fixed without major disruptions.
Carbon Five uses a modified version of the agile method called Extreme Programming or XP for short. XP complements the agile method by breaking down the programming process into twelve areas with the goal of creating maximal feedback between end-users and developers. Mike discussed a stripped-down version of the XP process that involved techniques that were directly applicable to the startups in the audience. “XP techniques can be classed into general areas of planning, communication and development,” said Mike.
“A story is a single feature that is expressed from the point of view of an end-user,” said Mike referring to the first stage of the planning process. He went on to explain how user-stories are created, “user stories begin on notecards with several subheadings. The subheadings are: “As a” denoting who the user is, “I can” denoting what the feature allows the user to do, and “So that” describing what end-state the user wants from the feature.” Mike recommended that startups conduct story writing sessions in order to create a backlog of features that can be addressed according to the priorities of the business.
“After creating a backlog of stories, the next thing to do is prioritize them,” said Mike. The agile methodology calls for addressing the highest priority stories first and Mike recommended that startups “ruthlessly prioritize so that resources are used as efficiently as possible.” This means that the features most critical to early-adopters should be given highest priority. Mike suggested that startups make use of the Pivotal Tracker program in order to log and organize their stories.
In order to track and ensure that teams are efficiently employed, estimations should be established on the length of time a team spends on a project from inception to completion. “Estimation helps create a roadmap that lets you know exactly how long features will take and enables you to plan milestones as you move forward,” said Mike. Having teams guess estimation times on projects prior to beginning them is an opportunity to gauge whether all team members feel the same way about the time it will take to do a project. If a team member feels a project may take longer than others have estimated, it may be because they have keyed in on a problem everyone else overlooked.
In addressing the communications aspect of the process, Mike recommended a morning meeting routine called the daily stand-up. The daily stand-up involves each member of the team stand and tell others in the group what they accomplished the day before, what they plan on accomplishing during the current day and what the blockers are (if any) keeping them from finishing their current task. To supplement the daily stand-up, Mike also recommended the “I like, I wish” routine as a once or twice a month exercise. “With “I like, I wish,” said Mike, “you can zero in on the issues that are negatively affecting you and fix them. You also can focus on the ones that are beneficial so that you can do those more.”
In closing, Mike went on to describe specific techniques used in programming. He discussed TDD or test driven development. TDD consists of programming a suite of automated unit tests that developers can use to ensure that their program is working well with the changes they’ve added to it. TDD tools allow developers to run through a variety of scenarios in order to test the stability of their programs.
Perhaps Mike’s most unconventional suggestion was that startups utilize pair programming. “Pair programming has two people coding: one person driving and the other navigating. The driver is making sure the code is right and the navigator makes sure the code stays on the right path,” said Mike. He further explained that the strength of pair programming was the ability for one of the users to prevent the other from entering a “rabbit hole,” where a bug is hidden so far in the code that an inordinate amount of time is spent trying to find and fix it.
Mike closed by recommending that people familiarize themselves with the Agile Manifesto and read Extreme Programming Explained: Embrace Change by Kent Beck as well as Refactoring: Improving The Design of Existing Code by Martin Fowler.