Web App Roadtrip

I grew up in Southern California and went to college in Tacoma, Washington, so I’ve driven the ~1200 miles along Highway 101 and I-5 at least ten times. Once I made it from Marin to Tacoma in a grueling 15-hour slog. My favorite time was the first time I did the trip, when my Dad and I took a few days in the middle to enjoy the Oregon coast. Usually I’d complete the trip in two tiring but doable 10-hour marathon drives.

Regardless of which direction I was driving, or how long I took to get there, one thing was always true: I had to use my time on the road wisely so that I could honor my commitments on the other end. When heading northward this meant getting to school in time for the start of classes, on-campus jobs, and a very important gig as a college radio DJ; when heading southward it was for family holidays & summer internships.

Now that I’m working on my own web app (which I’ll introduce in a post of its own!) I think about those drives. As the old saying goes, “It’s about the journey, not the destination”. But with these drives — and, as I am learning, in some cases with software development — this sentiment may not be so true. There was so much to see and experience along the road, but promptly making it to the destination was crucial because that was always where the true work began.

Likewise has been my progress over the last month of working on my app. I started October with an ambitious plan of how I would spend each working day. But it quickly became apparent that if I were to strictly follow that schedule, I would not make sufficient progress on my application. Following the plan to a T would have been like setting out for that interstate road trip, but then deciding to drive around every block in Castroville because I like artichokes. I would have gained deep knowledge about the city, its people, and their signature crop, but to what end? That knowledge would probably not factor in to my work at school or back home, and I’d still be hundreds of miles away from the real destination.

So, in spite of laying out some pretty awesome goals, I quickly decided to treat my work time more like those 10-hour interstate drives: eyes on the prize, begrudgingly sacrificing some depth-building experiences along the way, because I know I’ll get to some truly mind-expanding work once I’m at my destination.

In the context of building the app, what has this looked like?

  • It’s essentially an API, so I worked on the core logic that delivers unique results to users based on their input. This is its main value-add, and I’m glad to say it’s currently doing a really solid job of returning useful, customized, actionable data.
  • I created an admin panel that allows me (and future admins) to manage the backend data and make sure it stays in sync with what users have created thus far as the details of the product evolve.
  • I also moved some of the admin functionality outside my local development environment and into Google Drive, so that I could maintain some of the core data in a safe place that isn’t subject to database migration errors/blowouts. I also chose to do this admin work outside of the Rails ecosystem so thatI could think holistically about what the app is really trying to do, without feeling limited by the constraints of organizing this information in a Postgres database.

Just like looking at a road map and plotting just the most crucial caffeine, lunch and bathroom breaks along the way, in this phase of creating the app I set up and followed a structure that allowed me to get my work done efficiently. Specifically, I:

  • Used personal daily standup time to reflect on the previous day’s work and goals for the current day
  • Completed 21 feature branches with 56.52% test coverage (or 68.56% coverage if you exclude controller tests — seems there’s a debate on whether these are worthwhile or not; I’m still experimenting with them before forming an opinion)
  • Project managed the work in Pivotal Tracker by using stories, story points & checklists (with a roughly 1:1 relationship between stories and github commits). I would be happy to share this Pivotal project board with any potential future employers who are interested in seeing how I organize my work!

To wrap up this extended metaphor: with the core logic of the app in place, now it’s like I’ve just driven into campus for a new semester of learning. I’ve got a solid foundation upon which to build, yet there is still a ton for me to learn & create. There will be periods of intense individual concentration, but I’m also going to do it with the help of others. And while I had to sacrifice making some interesting detours along the way, now I am ready to dive deep.