About a month ago, I planned the StoryTime release that goes out today. If you work in software, you might guess that today’s release is not quite what I had in mind a month ago. Regardless, today is the deadline, so the next version of StoryTime will be out there by the end of the day. That’s how I roll.
The word “deadline” sounds ominous. Cross this line, and you’re dead. Or more figuratively, pass this point in time without finishing, and disaster is sure to strike. Apparently the former meaning can be attributed to the American Civil War, and it was literal. The latter meaning goes back to 1920 in the newspaper industry. Finish that story plate by the deadline, or it will go in the garbage without going to press. (Thanks, Wiktionary.)
Deadlines push you to get on with it. In software development, they provide a heartbeat that brings a product to life.
Without deadlines, I would go off on more tangents than I do. I would add more scope than I could handle. I would put a half-dozen irons in the fire, never finishing any of them. I would re-design and re-write parts of the system that are already good enough, moving them toward unattainable perfection. I would find all kinds of reasons to delay.
Do you work on a team with these bad habits? I have the cure. Set a deadline, and stick to it. Then set another. Make the deadlines 70% tighter than you think is possible. Keep tightening each time until all of your bad habits are squeezed out.
Then, as the deadline approaches, you might have to adjust your notion of an acceptable release. Or you might have to push it out by a day or two. That’s what happens in real life.
By the way, you never have to release garbage. I am not suggesting that. If you think I mean that, it’s your own fears talking. Apply discipline to your work so that you can release what you have. Then err on the side of releasing “too little” rather than delaying to squeeze in just a bit more.
For the previous release of StoryTime (1.2), I gave myself an extra day to get things right. Life got busy, so I moved the deadline rather than stress about it.
For this release, I have to reduce scope. I am trying to release the Writing Desk, the place in the application where authors can create their own story-games. So I started with a mini-redesign of the entire app. Okay, so maybe that was a slight tangent. After designing the Writing Desk, it made sense to apply some of the ideas to the rest of the app to keep it consistent.
Then I had to design and implement a new API for the authoring service. The StoryTime API spec was written using Swagger and needed an upgrade to OAS 3.0, the latest standard for defining RESTful APIs. So that was a big chunk of work.
Third, the application already has a lot of stuff going on. That’s the technical way to put it. The application client is build on React and runs in a Web browser. In the land of React, good citizens use Redux to manage the state of the client. Want to remember that the user prefers the red theme? Flip a bit in the Redux store. Want to show a list of stories? Fetch them from the service and stash them in the Redux store. Then the screens just read from the Redux store and show what they will. Easy peasy.
Except that it’s not. After an extra week of wrestling Redux into the mix, things are back to working about as they were. The benefits of doing this work ought to become clear as the application gets more complex. Perhaps I will not notice. Perhaps it will keep things from grinding to a halt.
One way to find out if Redux “works” would be to build another functionally identical system without Redux. Hmm, that feels like a tangent. I know people who dedicate their entire careers to this kind of tangent. They never accomplish anything useful.
I don’t have time for it because I have a deadline.
So here we are at release day, and StoryTime works pretty much like before, although it looks slightly better, and the backing service is ready to support authors. The Writing Desk itself will have to wait until the next release.
And after that, you’ll still need a way to publish your creations and get them into the Library to share with the world.
And after that…