Time is short in a startup and the edge cases are many. I have noticed that when I am building features for The Food Corridor, especially admin or edge case features, there is a progression based on frequency of feature need. An example of this is something like handling a refund, which is not a core use case.
- The first time, the issue is handled via a developer.
- If it happens more than once, the process is documented in a google doc. It might be triggered by an email from another part of the system. We have an entire google folder called ‘operations’ which is full of such documents.
- The developer automates the process via a rake task. The rake task is a thin layer around a service class, which is tested.
- Non technical admins get access to the process via a web interface. The web interface plugs into the service class as well. This web interface may handle only part of the issue, and require access to other systems (in the case of a refund, access to the payment processor).
- Non admin users get access to the process via a web interface. This web interface is fully fleshed out.
For core functionality, you obviously want to push the ability to self serve to the end user as soon as possible. It simply wouldn’t make sense for us to build out the ability to schedule bookings, limit it to a developer or admin user.
But for a lot of functionality, this progression is helpful. The developer has time to fully understand the issue by handling it him- or herself. The documentation generated by handling the issue manually is a great start for the requirements document. And if an issue only pops up once every quarter, or even more rarely, a minimum amount of developer time is spent on it. If something happens often, it is far more likely to get automated.