Eating the Elephant

Megan Smith
3 min readJun 8, 2021

Yesterday, I finished my very first command line app.

Yeah, that sentence still sounds weird. After three days of blood, sweat, tears and toil I created my own small inventory manager, based in general on RPG inventories.

Initially I definitely bit off more than I could chew. I like big ideas; figuring out all of the little working parts feels a lot like building with those K’nex science toys my Grandma used to give us as kids. I loved building with them and, as with most things, paid the instruction manual no mind. A creative at heart, blind experimentation has always been a key part of my process.

Coding, I have realized, requires a little more finesse than slap-dashing color on a page or Frankensteining my K’nex monstrosities. That’s not to say I don’t enjoy it! But it does mean that I need to rebalance my creative process when it comes to software programming.

My Grandfather–a delightfully salt-of-the-earth, D-I-Y kind of man– has a saying that has become somewhat of a mantra in my family:

“It’s like eating an elephant. Do it a bite at a time.”

My family and I are no strangers to struggles of all stripes, and this has gotten us through them all. So, it’s almost kind of funny that this very specific and helpful advice that is practically hard-coded into my DNA fled my mind while working on my Inventory Manager.

Looking back at my Phase 1 project, I definitely did not take it a bite at a time. I got SO wrapped up in the final idea, the finished piece, that it was very easy for me to get waylaid by (honestly? very simple) mistakes. Sure, I had a general domain sketch, but the fine details in how SQL, Ruby, and ActiveRecord should interact were a stumbling block for me. I frequently got frustrated, and when I got stuck, instead of persisting through the problem, I did what I do with my paintings: move on to the next, intending to come back later.

You can see how for a time-lined project, this would present a problem. While I was able to get my MVP off the ground, it’s hardly elegant and some functions could definitely use improvement (for example, I still have yet to figure out how I can map an array of data into a TTY-Table without having to hardcode values, or why I can’t get my arrays to print to console in a little more human-friendly format). Still, she’s finished and functional (and I did manage to prettify the output a little bit. Small victories!) and I couldn’t be more proud of myself for persevering through frustration, distraction, and unfortunate life circumstance to complete it.

Having pooled my learning over the past several weeks has both bolstered my resolve to completely own this program and revealed to me areas that I could improve in:

  • ActiveRecord and how it functions in general. This project showed my I understand the general concept, but definitely need to delve deeper into the finer details for a functional understanding of it
  • Using ActiveRecord instead of wanting to continue to lean on the more familiar functions of iterating through premade arrays
  • And of course, eating the elephant. The devil is in the details, and honestly, I kind of glossed over them. If I had spent more time figuring out not just the relationships between classes but how they interact with each other and my database, I imagine that my code would be a lot cleaner and more concise. I plan to keep working on it as I continue to shore up my understanding. Eventually, I would like to implement it in a program of my own.

Until then, though, I’m just going to keep eating the elephant. A bite at a time.

--

--