Building apps from the "inside out"
Tags: career, motivation
Published: 2020-08-23 05:26:38

Before I begin, I want to give credit to the following post for my inspiration.  If you have a few minutes, I highly recommend you check it out:

https://dev.to/afonsopacifer/how-you-can-stay-motivated-to-work-on-personal-projects-565a

We've all been there... you're performing a routine task, or staring at a spreadsheet or database, and suddenly, it hits you.  You think to yourself, "If only I had a way to... [insert idea here]" - and from that point on, your whole day is ruined.  It's just like the description in the movie "Inception" - you're consumed by the seed of an idea - every time you perform that same task, you're distracted by the notion that there's a better way.  Not only that, you think others might have the same problem you do, and you should build an app to solve it for you (and everyone else).

### So, what now?

If you're like me earlier in my career, you start mapping out the steps, and you start building out the app in your head from left to right.  First, you need a login screen, but before that, you need a way to track users.  Before you can do that, you'll need to pick a framework, do you use raw Express, or pick up something new like Nest.js?  What about the front-end, React of Angular?  REST API or GraphQL? ... and where will I deploy it?  Do I bother with CI/CD, or just ship it?

Before long, fatigue starts to set in, and you haven't even started yet.  You decide to put the idea back on the shelf, along with a dozen other ideas you never really started.

![Developer Fatigue](https://dev-to-uploads.s3.amazonaws.com/i/yhxmg3yp9dsip59uc416.png)

### So, what went wrong?

This is a trap I call building from "left to right" instead of from the "inside out".  It's a trap I fell into many times, which forced me to change how I approach these moments of inspiration.

### The Answer

Now, when I feel this itch, I focus on the thing that caused the inspiration in the first place.  Then, I build just enough to scratch the itch, which might just be to load a spreadsheet into a database and run a simple query, or create some custom visualization to display the data in a new way.  Whatever the reason, I just focus on scratching the itch.  Then, once the itch has been scratched, I can take a step back and ask myself, "How motivated am I to continue?"

If the answer is "not very", then I can walk away with a sense of accomplishment, but also a sense of relief that I just saved myself hours of building an app I didn't really want to build.  I recommend taking a few extra hours to share what you've built so others can benefit, which might come in the form of a new GitHub repo, a new website, or just a post to share with your friends or co-workers.  Not only will others be able to benefit from your hard work, but it will also maximize the sense of satisfaction you get, making it easier to start on the next one.

On the other hand, if I'm not ready to let it go, I can keep going, focusing on the next itch, and the next one, until I run out of things to do.  Then, I wrap it up and move on with nothing but a smile on my face.

### Summary

Before we wrap up, I want to take a moment to compare this process of "scratching the itch" to what Agile enthusiasts call the Most Viable Product (MVP).  Oftentimes, when designing an MVP, we still get caught up in all the "must have" details like a login screen, user management, along with a laundry list of other not-so-exciting features.

This approach of building apps from the "inside out" works great for side projects because our time is valuable, and we don't want to waste it, but I encourage you to bring this same mindset to your next design meeting.  Because when it comes to your work, your time is still valuable.

For more ideas on how to avoid this trap when building new products, I recommend reading the Innovator's Solution by Clayton Christensen.  This books provides some great examples from companies that have had huge success starting small, failing fast, and adapting quickly.

Do you have any tips on how you stay motivated working on side projects?  Please leave your thoughts in the comments!