How do I get started on something?

Answer: Potato Scripts

I define "potato scripts" as being quick and dirty solutions to complex problems, usually through scripting of some kind. They are not perfect, in fact they are far from perfect. Potato scripts are ugly, unmaintainable, and often infested with errors. However, when used correctly potatoes can be a great part of any meal or software solution.

Planting

To make a potato script, one must begin by realizing what they are planning on doing. Before a potato can be planted, one must intentionally and emphatically say that what is being done is meant for long term growth. Once the potato is in the ground a plan has been set in motion. The potato seed that was planted will yield a harvest and someone needs to come back later to collect the benefits of that planting.

Potato scripting as a concept is really nothing new to the software engineering world. A working version of a solution can be created quickly in order to better understand acceptance criteria and facilitate communcation with stakeholders. The first prototype might look acceptable on the exterior, but behind the scenes is probably a terribly constructed product. If it was constructed quickly then time was not taken to produce a good design. The solution as a whole will be ugly but gets the job done, just like a potato. The first prototype can be a seed that will start the product on a path to growing into being stable, but only if you intend to come back and improve it.

Harvesting

After some time, your potato will grow. To see if you need to take the potato plant out of the ground you have to review and possibly make adjustments to the watering and fertilizing requirements. No one can perfectly plan for the future so regular and purposeful reviews of the potato's status and things learned about the potato must be made. Without these retrospective reviews, no one will know when to remove the potatoes from the ground and they will end up rotting instead of being beneficial.

As time goes on the prototype should be replaced. It was made in haste; it was never meant to sustain production requirements. A prototype might grow with small changes and features, but small changes will not fix bad architecture. A bad solution is a functioning solution until the day that it isn't. Bad solutions enable teams to gain knowledge not only of how to build something but of what exactly needs to be built. A potato script can jump start progress in a project and connect stakeholders to final products, but a potato script is never meant to contain an entire solution.

Replanting

When your potato has flourished and resulted in a usable harvest, the most important thing to do is to plant more potatoes. The original potato is gone; it was used to enable you to create more potatoes. With the new set of potatoes, you can plant and harvest potatoes exponentially until your farming project is done.

With the knowledge gained from creating a prototype and seeing how it grows, you can create more and better prototypes that fit the stakeholders needs more accurately. Rebuilding can be difficult and costly but not as costly as trying to rejuvenate a dead potato.

Becoming a Farmer

Creating a prototype quickly that is sufficient at the time is a great way to get started on a project, but it is a terrible way of ending a project. Sending the first prototype to production is equivalent to eating the potato you are about to plant: you will get no harvest and no more potatoes.

Haters gonna hate, and potatoes gonna potate, but don't hate the potato.