Abolishing Sprint Zero: Leveraging Software Seeds and Generators to JumpStart your Project
Software development is hard. For all our talk about “sprints,” anyone who has been involved in a major software development effort will agree it is more of a marathon. Well, if we have to run a marathon, wouldn’t it be nice to start on mile marker 2? Some inline skates would be nice, as well!
In this talk we will describe a new technique for jump-starting application development, with software seeds and generators.
A seed project pre-integrates a set of technologies, with a minimal working set of services and screens, a set of example automated tests and a fully tricked-out DevOps pipeline. Like an erector set (or a Raspberry Pi Maker Kit—to use a more up-to-date analogy), a seed is designed to be used for building larger projects.
A generator can be used to generate a new project (by customizing seed templates, for example), and, later on, to generate new software components from blueprints as they are needed. Like a casting mold for molten metal, a generator helps ensure new components follow naming, testing, and design conventions.
A properly configured set of seed and generator projects can provide a number of important benefits:
- new project team members can explore and learn using a project small-enough to get their arms around.
- New insights, components, and design patterns can be quickly promulgated and shared within and across organizations
Of course, all this does not come for free. Seeds and generators must be regularly maintained, and they require senior expertise to build and maintain them. However, even a junior team can derive benefit from downloading a pre-existing example from one of the many online sources such as yeoman.io.
In this talk we will explore the process for building and maintaining seeds and generators using a case study of three seed projects developed for a NYC municipal agency using Ruby on Rails, Microsoft C# .NET Core, and AngularJS 4, technologies. We will talk about the lessons learned, commonalities and differences between technology stacks and what it takes to maintain the seeds and generators long-term. We will also talk about our experiences using the seeds and generators to build production applications and helping other groups to do the same. We will discuss the issue of achieving buy-in, even from development groups that did not participate in the initial seed development. Finally, we will explore next steps and speculate on where the next major leaps in software development productivity may come from.
NOTE: This talk can be delivered at the intermediate or advanced level, depending on the audience
Outline/structure of the Session
- Problem statement
- What is a Seed
- What is a Generator
- Angular4/Ruby on Rails
- Angular4/.NET Core
- How-To Documentation
- Automated Tests
- DevOps and CI/CD
- Maintenance Requirements
- Spearheading Enterprise Adoption
- Risks & Mitigations
- Next Steps
- Understand what a seed project is, what a generator is, and how they can help improve the productivity of a software development team
- Understand how to get started with seeds and generators, and what may be required in order to customize them for your organization
- Understand the risks and benefits of enterprise adoption
software practitioners, managers, and other technical stakeholders
some software development background is helpful, but not required