Speed versus Agility
Noticing a recurring theme and association between Agile Software Development and speed sent me into a mild existential crisis regarding my thoughts and experiences. This "must go faster" attitude also dredged up my post-traumatic stress as a developer working in a "fast-paced environment". It also led to some serious introspection...
When I do Agile Software Development, am I going faster? No.
What happens and what was I doing if not going faster? Simplicity, agility, and principle-based development.
What tend to be the results? I actually have fun doing software development and my clients tend to forget they're doing product management.
This talk explores the implementation of the US Population Clock from the US Census Bureau (the Popclock) from both the human and software system perspectives. We will discuss the design of the system as it relates to various principles and practices typically associated with Agile Software Development; no code samples or demonstrations. At its heart, the story is about reducing the friction that can often arise between the developer doing the work and those who are there to track the work.
Roughly 60% of the story focuses on solution design for the Popclock itself using the principles and practices listed below, the other 40% focuses primarily on the interactions between the developer and the technical lead (could also be seen as the Product Owner, Scrum Master, etc.).
Ultimately, the original set of requirements for the Popclock were finished a month before project end. The rest of the features were easily added within that month. All done without "going faster". This would not have been possible had there not been a focus on technical excellence over speed from the beginning.
Outline/Structure of the Talk
- Mindset being explored.
- Emphasis on speed within the Agile Software Development Community.
- Story based on true events from start to finish of a project.
- Wrapping things up.
The design and development principles and practices discussed:
- Don't repeat yourself,
- you aren't going to need it,
- SOLID (mainly single responsibility),
- Pragmatic Dave's Razor (what I call a philosophical razor proposed by Pragmatic Dave Thomas),
- refactoring, and
The Agile Software Development values and principles touched on:
- Individuals and interactions over processes and tools
- Customer collaboration over contract negotiation
- Welcome changing requirements, even late in
development. Agile processes harness change for
the customer's competitive advantage.
- Agile processes promote sustainable development.
The sponsors, developers, and users should be able
to maintain a constant pace indefinitely.
What can it feel like to do agile software development as a developer?
Yes, have some! (or agility + productivity + fun)