This is the second part in a series covering software jargon. As I mentioned in my first post, I’m writing this series to create a glossary of terms around specific areas of custom software development (technical, process, and design). I hope that these posts will make it easier for non-technical people to ramp into their first custom software project. I mean for these definitions to provide enough context to follow a conversation without going too deep. Additionally, you should know that there are nuances in many of these terms that I will not cover here.
Creating custom software is a long, complicated journey, and putting processes in place can help prioritize and deliver working software. In this post, I’ll cover some common process terms you’ll hear working on your first custom software product.
Definition: A methodology for creating custom software.
The Agile Manifesto outlines a set of principles for developing custom software. Examples of principles in the Manifesto include working software over comprehensive documentation and people over process. Agile encourages iterative development, where the team can continuously apply what they’ve learned throughout the project. It’s also meant to make it easy for teams to pivot as priorities change.
Definition:A methodology for creating custom software.
Waterfall development is an approach different than agile for creating software. It emphasizes a lot of upfront planning, which results in requirements docs and designs that outline the behavior and look/feel of the application you’re building. The development team comes in after the requirements are created to implement what has been documented and designed.
Definition: An artifact that lays out a path for delivering a product.
Teams will often segment product roadmaps into milestones or releases of work. A milestone may include several new features that combine to create a new experience for users. For example, a milestone for Google Docs may have been the ability for multiple users to edit a document at the same time. A roadmap should be a living document the team updates to reflect new learnings and prioritization changes throughout a project.
Definition: A process for working in an agile software development environment.
Scrum introduces several recurring activities into the software development process. A sprint retrospective is an activity where the team reflects on the previous sprint cycle and identifies areas to experiment with improvements. Sprint planning is where the team plans their work for the upcoming two weeks. Backlog refinement is where the team refines future work and reviews priorities.
Definition: Contains all the work (user stories) for a team contributing toward a software product.
A backlog allows teams to prioritize work through sprints. It also helps the team track progress through scope completed and make projections around delivery. A backlog may include several different types of developer work, such as bugs or developer chores. Common backlog tools include Pivotal Tracker and Jira.
Definition:A unit of software development work.
User stories describe functionality the team will implement. They are typically framed from the end user’s point of view. For example, a user story might be “A user can share a photo to their feed.” They may include additional information that describes the behavior in more detail. Stories may exist at many levels of fidelity. The further away a team is from the implementation of the story, the vaguer it is or the sparser the details. In agile, user stories have a corresponding story point value (estimate).
Definition: A form of estimating effort to complete a user story.
Story points create predictability around what a development team can deliver. They are not directly correlated to time (one point does not equal one day). Instead, a team estimates the complexity of a user story compared to other user stories. Story points use an arbitrary scale, but a common example is the Fibonacci Sequence (1,3,5,8,13,21,34…). It’s important to note that two stories with the same story points will likely take different times to implement.
Definition: A measurement of how much work the current team can deliver in one sprint.
As I mentioned in the story point definition, they are not directly correlated to time. Therefore, velocity exists to help forecast team progress across time. Velocity is typically an average of story points delivered across the last N sprints. Any single sprint is likely slightly higher or lower than the established velocity. There are many caveats in using velocity to forecast future feature delivery. For example, adding three team members will likely affect velocity.
Definition: Recurring unit of time for delivering work, commonly two weeks.
Sprints are at the heart of the Scrum process. Most other Scrum activities (retrospective, planning, refinement) are all planned with the sprint at the core.
Definition: A method for organizing tasks and visualizing them flowing through a process.
Kanban is typically a lighter-weight approach to organizing work than a backlog. You can use Kanban to track activities and maintain accountability for the work that happens around implementing custom software. This could involve organizing user interface/user experience design work or organizing tasks for the business team to refine requirements and gather user feedback.
Definition: A set of user stories that describes a larger piece of added value to a product.
Epics are constructs available in the most common backlog tools. They can help track the team’s progress through a related set of work. They typically map to terms on a product roadmap that business team members can understand.
Jargon, from Process to Design Terms
In my next post, we’ll dig into some of the common design terminologies you’ll hear when building custom software. As I mentioned above, please comment with your own development terms, definitions, and examples.