Thursday, July 23, 2020

Role, Goal, and Dole

In agile software development, a user story traditionally follows this template:
As a [person in a role], I want [some software feature (the goal)] so that I can [achieve some benefit to the user or business].
Some years ago I came up with an easy to remember rhyming mnemonic for this, "role, goal, and dole", where I use dole as a synonym for benefit. The user story template then becomes:
As a [person in a role], I want [some goal], so that I can [achieve some dole].

Tuesday, July 14, 2020

Jigsaw Puzzles

For most of my career as a software developer, I have used statically typed programming languages such as Pascal, Ada, Java, and TypeScript.  Recently, however, I briefly dabbled in using the dynamically typed languages JavaScript and Python.  Debugging all of the run-time errors in the dynamically typed code reminded me of my earliest years of programming in BASIC in which I would have to spend time searching for misplaced commas.

When I switched from JavaScript back to TypeScript, I sensed an increase in my productivity and my confidence in the correctness of my code.  To explain to a layman the difference between programming in a dynamically typed language as compared to a statically typed language, I came up with the following analogy.  It is the difference between assembling a jigsaw puzzle in which all of the tiles are square versus one in which the pieces are of a variety of different shapes that can only interlock in the correct way.

Tuesday, June 30, 2020

CroftSoft Agile Glossary

A tongue-in-cheek glossary of agile software development puns that I have invented over the years:
  • Au Pair Programming: a variation on pair programming in which an experienced software developer is paired with an inexperienced software developer
  • Scrummerfail: a combining of an agile software development methodology such as Scrum with waterfall development, widely known as "scrummerfall", but taken to the extreme in which the entire development process is waterfall but all of the terminology associated with the process is based on agile
  • Slog: a sprint lasting more than four weeks
  • Technical Deficit: an ongoing accumulation of technical debt that is passed on to future generations