Saturday, September 28, 2019

Mountains out of mole hills

Make A Mountain Out of A Molehill

 "What are you doing?" This question was asked innocently enough while I was showcasing a personal project for a coworker. We are both attempting to learn Python and though we are both beginners with the language I would argue that he has more knowledge of Python in a practical sense while I'm primarily focused on what to do once I have enough Python knowledge to be dangerous. Despite considering myself a beginner in Python a quick glance at the screen, then back at his confused face, then back at the screen put his question into perspective.

At the beginning of the year I set out in earnest to learn Python. Python 3.7.4 was chosen by default. Warnings regarding Python 2 reaching its end of life at the start of the following year kept flooding the console every time that I attempted to use it or associated tools so it seemed like the right move at the time. A simple Python web application demo quickly came together. I settled on Flask as a front end because I wanted to do this whole learning Python thing right. With "Hello, World!" displayed in a browser window I gave myself a pat on the back and immediately went looking for a database.

Any senior level developer can already see where this is going. What began innocently enough quickly grew legs and with it more problems. I stalled out over the next few weeks attempting to understand how to run Redis locally? Why Redis? Well, it's Python, isn't it? Eventually I determined that it would make sense to run a local kubernetes (k8s) instance. After all, why not do this database deployment thing the professional way. Months went by and "Hello, World!" faded from memory. Between work and this personal project time was scarce. What once seemed like a fun project started looking like a day job.

Months went by and now it was time to add Bootstrap 4. What could possibly go wrong? Have I mentioned that I am not a designer in any respect? Days, weeks, months. It all became a blur as I learned more than I ever wanted to about the difference between Sass vs Less, how to fix the position of a copyright, the more interesting points of flexbox. The project had consumed me at this point. I locked myself in a conference room between meetings at work and searched for answers. What image pull policy should I be using for my local docker registry? Why is my exposed deployment not providing an external-ip so that I can access it outside of the cluster? Did updating kubernetes really just break helm and tiller after all of that time that I spent figuring it out the first time!?

I looked back at my coworker after being lost in thought for what I am positive was several seconds. The shift in my demeanor must have been apparent. I had no idea what else to say so I simply uttered "don't worry about it for now". We covered the finer points of "Hello, World!" and he taught me some things about Python.

Long story short, it's easy to lose sight of why you started any project. Often times a developer's greatest asset is an ability to narrow down scope to something tangible. In this sense I went overboard intentionally to thrust myself into learning Python. It's been educational to say the least. If I had it all to do over again would I do things the same way? Probably.

What are you working on and have you got a roadmap?