In the past years I've worked on numerous Flash projects with various teams. While I have witnessed enjoyable and even successful results from sheer creativity and enthusiasm for the medium, I have seen a limit to the amount of complexity that can be handled without a good process in place.
When I joined 9mmedia two summers ago I found a team who had already been investigating and experimenting with their process. It was around the time Flex 2 came out. Our team's efficiency has been ever increasing and we soon found out the natural interaction within our team and with our project goals had a name: Scrum.
When you have the mandate of creating a piece of software you are given a set of high level goals for a product that has yet to see the light. Experience will tell you there is no way to plan all the functionalities and underlying details of a good application because to be called good, an application needs to have been tested and improved. And until functionality exists, it cannot be tested. "Planning ahead" has its limitations and doing Scrum means being aware of these limitations.
At the beginning of a project, an inclusive to-do list is written with no particular order or specifics but with just enough detail to convey the goals of the project. That big list, called the Product Backlog, is then reviewed and prioritized. The most critical tasks are moved to a smaller list, called a sprint, so they can be executed first. Once the first sprint is completed, the remaining items on the Product Backlog are re-prioritized and the new top priorities are moved to a new list through which the team sprints again. This continues until the product is delivered. The duration of our sprints is usually 1 month. Daily 10 minutes meetings are performed to make sure the team's resources are always best allocated and to let everyone interact directly and get on the same page.
In our projects, nearly every feature involves actionscript coding, service architecture, usability and graphic design. While Java services may pass unit tests, custom Flex components may function perfectly and comps may look great on their own, the need for integration is omnipresent. Scrum allows us to arrange our sprints to timely bring these elements together with a minimum of time wasted. To kick off development we use a lot of default Flex components, create more basic services allowing the core functionalities of the application come to life more quickly.
Having a testable product from an early stage is invaluable. It empowers us with knowledge that constantly improves our decisions about when and how to start working on custom components, expand our service APIs and tweak our graphics. Add to that the constant and early catching of bugs, tight team collaboration, complete project management transparency, real priority driven workload, and the confidence our team is always firing on all cylinders and you will understand why we scrum.
Synchcronicity project from sprint to sprint