This page describes the setup and experiences of an ExtremeProgramming project that started software development from a clean sheet in June 2000. We hope to share our experiences and solicit feedback as the project progresses. ------------------------------ About Product Sight ( http://www.ProductSight.com ) Product Sight specializes in component business applications for collaboration across the product realization processes for highly engineered products such as planes, trains, and automobiles. Our customers include Original Equipment Manufacturers (OEM), Suppliers, and e-Commerce Market Exchanges that deal with highly engineered products and custom parts, as well as the technology providers that integrate our components into their more comprehensive solutions. Product Sight has assembled a formidable team with extensive knowledge and experience in engineering, production planning, manufacturing processes, and product development practices. We work closely with our customers to create application products that deliver strategic e-Business benefits while making the day-to-day work lives of our users easier and more productive. ------------------------------ Our XP Team Current: * 1 - CEO * 1 - CTO - Product vision and direction, Domain expert, Development Manager * 1 - Product Manager - OnsiteCustomer * 3 - XP Java Developers - Developer, see ProductSightXpJavaDeveloper for a position description. * 1 - Acceptance Test Developer Planned: * 2 additional - Developers As of August 1, 2001 we were not recruiting for ProductSightXpJavaDeveloper positions. You may be interested in this position description if you are recruiting for XP developers and want some ideas on how to describe an XP job. --------------------------------- Company Characteristics * We have strong domain knowledge and experience about best practices for improving our customer's businesses. * Our goal is to encode improved business practices in component applications. * We will work closely with partners and customers to fit component applications to their eBusiness infrastructure. * We expect to eventually evolve a framework that supports a suite of component applications across the Product Sight application domain. Expected Technology Characteristics * Component business applications that leverage web standards and application server architectures * Standard industry XML definitions for product data and custom part transactions Note the above list is labeled "expected". We are trying to be careful to apply YouArentGonnaNeedIt and not overly constrain the problem. However, we think it's likely that we will have market reasons for adopting these technologies and felt we needed to establish some criteria for desirable skills when recruiting. The XP approach will be to add them as UserStories when they become a priority. ---------------------------------- Why we chose XP as our development approach This account of the Product Sight XP project was originated by BruceWinegarden. In the Wiki tradition, others will hopefully elaborate on our team experience as we progress. We have not yet written a line of production code but we have already found XP useful as a model for thinking about how to set up a completely new company and begin product planning from a clean sheet. Much of the reason for starting this new company came from our frustration with how poorly technology companies in our experience delivered application capabilities that really worked for and satisfied their customers. We Are Using XP For Rapid Return On Development Investment. XP guides you to do only those things that add value. Encourages participants to constantly ask "Is this the best use of our time?" Customer constantly makes business priority decisions such as: * We should do this story first because it will make the biggest different to our business. * Gee that sounded like a nice feature but we can get by without it if I can have story B instead. Developers constantly make technical priority decisions such as: * What is the simplest thing that could possibly work? * YouArentGonnaNeedIt. (YAGNI) We are using XP Because It Is Risk Averse by setting a development pace with a consistent rhythm. XP provides self correcting checks and balances by using small steps with constant feedback at all levels. We are using XP Because It Results In "Healthy Code" that is: High Quality, Readable, Adaptable, Maintainable. I Like XP Because, XP stimulates learning and I like to feel smart more often than I feel dumb. ------------------------------------- August 14, 2000 - Progress Report We have just completed our first iteration towards a production release. Everyone on our team is pumped about the early successes we are having. I think our biggest lesson has been test first and how much more rewarding each day of development becomes when we have confidence in the quality of our code. Notable accomplishments: * All requested user stories were completed. * Got it right the first time. When we asked our customer to functional test a completed story they all passed the first time with no changes required. * Met our default velocity estimates. * Did it with a 40 hour week. Milestones / Major Events: Moved into and setup in a great 1500 sq ft office space. The main feature is a large 20' x 30' room we use as an XP development lab. It has windows on one side overlooking the woods and a covered balcony (great for breaks and brainstorming). White boards, and bulletin boards now cover all of the other walls. We currently have two XP pair workstations sitting back to back on two 5 ft wide tables. Reached critical mass for our XP team. We have four developers and one dedicated onsite customer. Four developers is good. Three 3 was awkward for pairing. Our timetable for getting started with ExtremeProgramming: * June 26-29 - 4 days Exploration Planning Game / mock * July 10 - 21 - 2 weeks Exploration Iteration 0 * July 24-28 - 3 days Release Planning Game, 1 day Iteration Planning Game * July 31-Aug11 - 2 weeks, Iteration-1 Complete * September 22 - 8 weeks, Release-1 Complete Release and Iteration Time Periods: * Release = 2 months, 4 iterations * Iteration = 2 weeks Note that 2 months is closer to 9 weeks than the 8 consumed by the iterations. The "extra" week is dedicated to a Release Planning Game. What to use for default velocities when you have no history: ReleaseVelocity - Story estimates stated in days * 64 days = 4 developers X 4 days X 4 iterations * 64 days = %40 of 160 engineering days Iteration Velocity - Task estimates stated in hours * 2 hour per day per developer --------------------------------- June 14, 2000 - Progress So Far Recruited Initial Team This activity really made us think about the minimum requirements for an XP project team. What we learned is that XP requires more than many typical projects start with. Often a typical project gets started with one developer and maybe someone part time to supply requirements, this is usually accompanied by promises to add more resources as the project progresses. We also made the decision to hire a Product Manager to act as the OnsiteCustomer from the beginning. Our initial gut reaction was to spend the money on an extra developer and let our CTO guide specifications. When we discussed this, we decided it would be a false economy, because our CTO has other responsibilities, such as business development activities, and couldn't guarantee that he would always be available to address developer questions as they came up. Our minimum XP team has 3 full time people, 1 product manager and 2 developers, one of which is also acting as TheCoach. We think this is enough to start, but not enough to sustain an XP project. We would like to grow the team to 3 to 4 developers soon, so that we have more possible PairProgramming combinations to keep us fresh. Selected Office Space Our primary consideration was space to create an appropriate environment for XP was our primary consideration. We also wanted a location that was central to the greater Seattle area, with easy access near the intersection of I-90 and I-405. Our office is 1200 sq ft for a planned XP team size of 6 to 7 people, including TheCoach and OnsiteCustomer. We think the space we found is nearly a perfect layout, it has a large room 20' x 30' with windows on one side overlooking the woods and a covered balcony (great for breaks and brainstorming). All other walls are begging to be covered by white boards. There is also another fairly large 15' x 20' space we may use as a conference room, or to setup personal spaces for developers. In addition there are two private offices so that our CEO and CTO can conduct business without disturbing the development team. We hope to move into this office in a week or two. Next we will buy computers and setup our development environment. ---- ''"Please come to Boston in the springtime..." Seriously, XP and Java, it sounds like the job I can't find. --JavaSchrod'' ---- You should relocate to Chicago because my wife certainly isn't going to be relocating to Seattle in the next 5 years.