I've just completed my first app build, and even though it's been a few days since writing my last line of code, there's already been a flood of ideas for how to improve, iterate, and evolve its functionality. In fact, it's an almost annoying barrage of ideas (that may or may not actually be good) - it'll stop eventually, right?
My first app is the PHL Covid Testing Ruby gem. It uses OpenDataPhilly's testing location API and allows the user to search for a nearby testing site in Philadelphia, PA (by name, zip code, drive-thru, or walk-up) and then view full details for a selected location. While I created this app to flex my object oriented Ruby muscles, I also wanted its functionality to be meaningful and truly useful in the user's day-to-day life.
The biggest thing I learned about development in the process is this:
"Focus on the step that is in front of you, not the whole staircase".
Not only does this apply to something like setting up your environment before diving into writing code, but it also applies to learning to code as a whole!
When first starting my app build, like many, I felt lost and had little confidence in the code I was writing. At every turn I was looking back through lessons I had completed for refreshers on concepts, reading through far too many StackOverflow posts, and wasting time watching YouTube tutorials that attempted to boil a million concepts down to a 30 minute video. Feeling frustrated, I put my trust in the quote above, and stubbed out the basics - starting with creating classes and identifying their responsibilities, then establishing the necessary has-many and belongs-to relationships, I began to feel the momentum building and giving me a clearer and clearer picture of what steps I needed to take next.
That momentum is what I've come to recognize as a true sign of progress in my coding journey. If you would have asked me a month ago if I could've built a Ruby Gem from scratch, of course I would've asked, "what's a Ruby Gem?" - but the cumulative result of consistent incremental change is truly a force to be reckoned with. If I hadn't spent months laying a foundation of fundamental coding practices and concepts, I would've completely fallen flat trying to create my own (extremely simple) CLI app. If I hadn't started development by stubbing out the core structure of my code, I wouldn't have been able to see the path to the finish line so clearly. Looking to the future, without building my first CLI, I wouldn't be able to build by first web app.
In short, while it may sometimes be hard to see the big picture in the midst of uncertainty - put your trust in baby steps.