I'm going to start by apologizing for the amount of exposition I'm about to espouse. Due to some unplanned travel, I've had to take a break from working on my Record Collection series and I felt like I wanted to still post something this week (I'm on a streak of sorts). This is a thought/series of thoughts that I've had on my mind for quite sometime, just finally decided to put it all down.
A Little Backstory
One of my first jobs was as a mechanic for a construction company. I was 16 years old and had learned the hard way how to fix a lot of things and a family friend thought he could bring me on and help me learn a little better. At that point in my life, I really had only ever dreamed of becoming a mechanic. I liked fixing physical things and often struggled thinking outside of the realm of physical space.
Fast forward a couple years. Through a bizarre twist of events in life, I ended up at a community college trying to put together some sort of education. At this point I had learned that there wasn't a lot of money in being a mechanic (at least in my area), but I felt like computers were a safe bet.
This started me on a 12+ year path that's lead me to where I am now. I never stopped turning wrenches though.
My Sewing Machine
A couple of years ago I decided I wanted to learn how to sew. At this point I had owned a handful of Volkswagens and thought I could maybe make some side money making curtains and upholstery for them. If nothing else, maybe I could save some money by making my own upholstery and learn a new skill in the process.
The idea had been kicking around in my head for a bit when I came across a pristine Necchi Supernova from the 1950's.
(Not mine, but it's the best picture I could find. It was taken from here.)
By the end of the day it was in the back of my truck and we were headed home to start a life of upholstering.
Learning In Reverse
Sometimes you start from nothing and work towards something. That's learning forward. You learn math by starting with
1+1 and then work towards
Othertimes, you start from something that worked and you have to break it down to nothing to make it work again. This is learning in reverse.
This is what I had to do with my newly acquired sewing machine.
While it was in amazing shape and had all of the original accessories and documentation, it had been handed down through generations of a family and hadn't actually been used for at least the last decade. When I first fired it up, it would mostly work, but there were a lot of problems with tension that made the stitches mostly unusable.
I spent many hours working on it to no avail.
After disassembling and reassembling, cleaning, and oiling everything to original specs...
I still had the same problem.
WHAT IS GOING ON WITH THIS?
I can take an engine out of a car, dissassemble it, reassemble it, put it back in, and drive away...why can't I get this sewing machine to work?
More time passes, more attempts, more thought, and nothing.
Finally, one night, out of desperation I open the machine and watch how it works through out the machine. Where the cam connects to the bobbin and so forth. I realize that there's a problem with tension on the string. I put my finger on the thread and boom it sews perfectly!
I learned that night that some time in the past 20 years, sewing machine changed the way they use thread from a spool. They pull off the top instead of from the side. This causes a problem when older machines try and use newer thread spools...
Good for You! What does this have to do with programming?
Well, here's where I'm going to thread it all back together...
I'll give you a second to laugh at that...
I've learned through my years working on computers and software that sometimes you need to take a step back, break things down to their simplest parts, see how they work, understand how they connect, and then look at the problem again.
Sometimes, you can't see the forest from the trees.
This is really true, but the solution isn't always clear. There are times you can't get out of the forest to see it for what it truly is, you have to stay in the forest and realize it's where you are. Looking at individual trees can help with this.
A large percentage of your job as a programmer (and a larger percentage in DevOps) is taking something that someone else made and either maintining it or fixing it. I'm not saying that everyone should go out and buy a 60 year old sewing machine, but I am saying that you can learn a lot about a lot of things when you step out of your bubble.
Thanks for going on this journey with me. I'll be back to my normal antics in the coming days/weeks. Feels good to see this idea the whole way through though.