I felt there was a gap in the availability of a particular application on the Linux platform that had equivalents on Windows and Mac OS. To remedy this, I started collecting the data sources I would need to tap into, came up with a list of requirements for the first build (can’t escape my Business Analyst tendencies), and started with some basic code to lay the framework for where I’d like to take the app. It’s all very easy to do these things. About four days in however, something happened:
I Began to Lose Interest
I felt like something was missing. It wasn’t that I needed to think of a snazzier application title or think through the GUI design further to get more excited about developing this app. It was more than the development language and the libraries I would need to use. I was losing interest because I felt like the application didn’t have much of a purpose. It would work, but would it fill the gap I felt was missing?
This brought forth some interesting and probably helpful brainstorming that should have happened when I first started thinking about creating this new app. This isn’t for my day job, so I was doing this for fun. Was it still fun? Sort of, but all projects involve drudgery during certain parts of the work. What I began to realize was that there was scope creep in my original design. I kept looking for new ways to bring value to what I was creating, but I began to doubt the app would bring much value in the first place. I wrote down some of the following observations in my notepad:
- Applications should serve a purpose and make the users’ lives easier. It’s literally what computers were designed for in the first place. Apps can also create a need if it leads to an opportunity for users to improve their lives. I placed a question in my notepad – Does this application make the user’s life easier? The answer was a “maybe,” and honestly, that’s just not good enough.
- Just because a gap exists doesn’t mean it should be filled. A gap doesn’t equal a need. For example, just because you don’t have any golf balls at the baseball game doesn’t mean you need one to play the game. Perhaps there are no applications of a certain type available because the use case is simply not there. It might be that no one has devoted energy to creating the application that is missing. But it’s a question worth asking, because if I wasn’t all that thrilled about using it, why would I want to publish it for someone else to use? Would others be as bored as I was feeling?
Back to Basics
Developing the use case should have been my first step. For example, if someone could quickly gather the information they needed from the Internet, then why would an app that did the same thing be necessary? As a prerequisite for any large project moving forward, I should require myself to fill in the blank on the following statement: “This app will improve the life of the user by providing/doing ___________.” If I can’t fill in that blank, then that indicates that I may not have a very good use case and I probably don’t need to move forward with that idea.
I realized my original design had a lot of “fluff” in it to make the application more useful. If the core functionality didn’t provide enough value, why put in all the work to develop it all the way into a production release? If I had thought through the use case, looked at the available alternatives, then the app I started working on would likely not have left the drawing board.
Finding my Way Back /home
In all, I’m glad I started working on the application that should have never been. If I hadn’t, I wouldn’t have given thought to these questions that will likely drive more of my decisions, especially on larger efforts. One day projects, like PyKBLayoutOptimizer, are fun and thought-provoking, so I don’t really consider them to be in the same category. But I was planning on working on this application for months and maintaining it moving forward. That’s a lot of time to devote to something that might not prove very useful, or even worth it, in the long run. Anyways, that’s how I lost interest and found myself. Thanks for reading. Happy coding!