Like everyone else, I have a wide variety of interests. Two of these interests came together at the August meeting of FMburgh, the Pittsburgh FileMaker Developer Group. (Yes; I realize it is the end of October. One of my other interests is procrastination, but I’m not ready to get into that now.) First, I love building custom business solutions using the FileMaker Platform. This is a good thing since it also happens to be my job. Second, I love riding roller coasters of all types and sizes. As Exhibit A, I present the fact that I have ridden 88 unique roller coasters in 14 different amusement/theme parks in 5 different states in 2016.
For this special meeting of FMburgh, we met offsite at Kennywood, a local amusement park and fixture of Pittsburgh summers since 1899. Instead of meeting on the first Wednesday of the month for just two hours in the evening, we spent the day riding the various rides with our colleagues. While waiting in line, we were able to discuss our takeaways from the FileMaker Developer Conference held just a few weeks previous along with general FileMaker items of interest to our local user community. It was during the course of the day that I began to realize the similarities between custom app development and roller coasters. If you will indulge me, I would like to spend the next few minutes illustrating these parallels.
To begin, the non-rider sees only a roller coaster in the broadest of terms. On the flip side, the avid rider knows whether the roller coaster in question is of wood, steel, or hybrid construction. Beyond that, the enthusiast knows that it could fall into the category of a traditional sit-down coaster, an inverted coaster, a suspended coasters, or a winged coaster.
My impression is that to the outside world, all programmers and all of the custom solutions we build are the same. To paraphrase Scott Adams, people think we make mobile apps that do data in the cloud. However, those of us on the inside know the differences. Some projects have a large scope while others address a specific business need. Some apps are used locally by individuals on their iOS devices while other apps are hosted to allow a large number of users to connect via the web.
Before boarding the train, every rider must pass through the entrance to the roller coaster. These facades range from the simple to the extremely elaborate. They hint at the style and theme of the ride and are designed to entice each guest into riding the given ride. At the entrance, we are also told how tall we need to be and if we should be worried about any pre-existing medical conditions. Some rides even offer a seat so that we can test the restraint system before entering the ride queue. Armed with all of this information, the potential rider may skip the coaster and find one more in line with his or her preferences, struggle with some apprehension but still ride it, or enthusiastically run to the platform with the hope of riding it more than once.
The “entrance” to building a custom app has a number of similarities. It all starts with a project description which tells us the problem the clients needs to solve and serves to pique our interest. This short description quickly expands into a full list of requirements for the app and potentially any concerns or dependencies that must be considered in order to see it to completion. With the requirement gathering complete, we must then decide whether to submit a proposal or not. It could be a case where the scope is too large or too small for us to tackle. Possibly, the client’s business is outside our area of expertise, or we are just not a good match with the potential client. There are other projects that we find intriguing but determine we must proceed with caution. We need to fully understand the scope and make sure we are a good fit for all of the reasons listed in the previous sentences. Finally, there are custom apps that we know we want to build for any number of reasons. An existing client needs a solution to address a new business need and we enjoy working with them. From the project description, we can tell the project will be exciting because it is different from what we have done before and will stretch our FileMaker muscles. Or, the custom app could be in our wheelhouse as a solution that falls into our area of expertise.
After selecting a ride and passing under the entrance marquee, we come to the inevitable wait until it is our turn to ride the roller coaster. Typically, this wait time for is governed by two factors – the popularity of the ride and the attendance level at the amusement park. In these instances where the wait is measured in hours instead of minutes, there are methods for reducing the potential wait time. I usually visit these high-thrill rides as soon as the park opens and before the crowd level begins to build. I also avoid visiting on the weekends and instead select a day in the middle of the week. Such planning is not required for every roller coaster. For the smaller rides, we are often able to walk through the ride queue and immediately board the train.
Much like a roller coaster, the size of the project often governs the “wait time”. As developers, we are ready to begin programming after that first meeting. Our subconscious examines each business problem and determines which technique would work best to address it. We do not want to “waste” time modeling it; we want to start building it. However, contracts, and possibly non-disclosure agreements, need to be signed. There is also the issue of determining payment terms. For the smaller projects, we are often able to dive right in, especially if the custom app is for a current client and we have a well-established working relationship. For larger projects, we need to talk to the users to gather more details about the workflow rather than rely on the brief description we received from management during the initial discussions.
After winding our way through the queue, we finally find ourselves on the platform and ready to ride. We select our preferred seat – front row, back row, or somewhere in between – and board the train. Once securely buckled in, the train climbs the first lift hill or is launched from zero to fast in mere seconds. From that point, we can just enjoy the ride. As noted previously, there are many different types of roller coasters. There are big ones and small ones. There are long ones and short ones, both measured by distance and time. Some are built for speed, and we get to experience breathtaking drops and steep climbs. Some are built to flip us upside down, and we get to experience a series of stomach-churning inversions. Some are designed to take us out and back while others offer a series of quick turns over a small amount of real estate. At the end of the ride, we find ourselves back on the platform and exiting the train, planning our next roller coaster ride.
As with roller coasters, the wait is a mandatory part of the custom app development process, and, as is often the case, the wait is usually worth it despite any initial frustrations it causes. When we are finally able to begin coding, we have our choice of seats. It could be at our desk, at our local coffee shop, on the recliner in our TV room, or even on-site to allow for close and constant collaboration with the client. It is rare for a development project to run from start to finish without incident. We have all had to deal with scope changes and scope creep. It is also possible that the method or technique we planned to use to solve a given problem does not work the way we thought. There are ups and downs as we encounter each of these issue and then work through it to find the ultimate solution. Sometimes these ups and downs are gentle and other times they are an intense series of twists and turns. Regardless of the route we take, we always find our way to the end with a complete and functioning custom business solution. Like roller coasters, even if the project is similar, the resulting custom app is always unique. And just like every roller coaster, it’s always worth the ride.