How I Built Schedu
16 September, 2020 - 4 min read
Week 1: Building out the MVP
Walking into this project, I knew that project management could make or break my success. Before touching any code, I listed out all of the main component of the app (epics), the steps needed to get those components done (tasks), and the order in which I would do them (weekly sprints). I dumped all of this information in Airtable, added some fancy automations, calculations, and views, and now I have a tool that tells me exactly what I need to do, when I need to do it, and how not doing something affects work down the road. In previous projects, I simply went with the flow. Whatever was on my mind to code that day was the focus. However, this hasn’t led to any fully completed projects yet 😅, so now my approach is to overly plan. So far, it’s definitely working.
Next, I picked my stack. I’m pretty comfortable in React and Bootstrap, so by default that was picked for the front end. I wanted to keep this project as simple and streamlined as possible, so for the backend I decided to go full Google Cloud Platform / Firebase. The documentation looked well-maintained, and the platform offers everything I would need to support the app. The only other additions are that I’m using Sendgrid for emails, Sentry for logging errors, and Segment for analytics. I didn’t spend too much time picking this stack because I’m writing my code flexible enough so that I can unplug and plug as needed in the future. After this step, I started my daily task of going to the project plan, getting the next available task, opening VS code, and getting to work.
Overall, development has been going smoothly. However, I ran into two obstacles that slowed me down a bit. First, I spent an entire day debugging an issue with Firebase functions. I copied and pasted working code from a previous project into my Schedu code assuming that it would work the same… but it didn’t. Was it my
config file? Are the right project keys stored in my
.bashprofile? Am I importing the right packages? Turns out, a new update for the Firebase package introduced the error, so all I had to do was use a previous version. Two lessons here. First, if there’s an issue, look online to see if others are having the same issue. Second, I should keep track of all packages that I’m using in the app and subscribe to any updates so that I know exactly how the app would be affected if I upgrade to the new version.
The second obstacle was that working with timezones is hard. There’s no long story or lesson learned here. I just really had to think about edge cases and implementation more than I anticipated. Here’s a shameless plug for moment-timezone.
What I’ve learned so far
The biggest learning so far is that coming up with tasks and features is a lot easier than actually doing them. I definitely over-scheduled the amount of doable tasks this week and ended up spending some late nights trying to stay on schedule. I’ve since pushed some features off to later releases so that I can have a more balanced workload.
Secondly, I’m learning to appreciate the art of early feedback. I walked into this project with one idea of how I wanted this app to look. However, as I talked to potential users each day, I learned that some features I prioritized aren’t actually necessary and some features that I threw in the icebox were a necessity to some.