I've been thinking a lot lately about what makes me tick. What is it that I really like about this job? Having been a software engineer for 25+ years, I still wonder what it is that makes me wake up every morning excited to continue my dominion over the silicon drones at my fingertips.
One of the things that makes me tick is an insatiable technological curiosity. Every day, I work on unique problems for my customers, my employees, and myself. I think it's the curiosity aspect that keeps this field of work interesting. It boils down to the types of problems I'm trying to solve and the questions I'm asking.
Here are a few questions I've been asking lately:
- What's the best solution to processing a million or more records in memory?
- How does Google query billions of documents every nanosecond?
- What the heck is Data Science and why do I care?
- Are we going to look back on JavaScript as a huge mistake?
- What's the best way to teach a new coder programming concepts?
- What is this GO, Swift, Rust, Insert Your Language Here all about?
I constantly grapple with questions like those. What's great is that I work in an industry where I can just try to solve them myself.
Let's take the first question from the list. “What's the best solution to processing a million or more records in memory?” A client of mine receives hundreds of thousands of responses to advertisements on a daily basis. It took them hours and hours to process these records and it was becoming a real burden. I decided to investigate whether it was possible to process these records faster.
During some spare cycles one weekend, I spent a few hours playing around with some C# code and .NET Framework structures to see if we could process these records more efficiently. During this investigation, I discovered the Dictionary<> class provided by the .NET Framework. By carefully structuring our hashes/keys, we were able to process this code in minutes versus hours, resulting in some very happy users. As an additional benefit, we've rolled this concept into multiple processes around the company, resulting in many more hours of total savings.
So what was the underlying cause of this outcome? I believe it was innate curiosity. That curiosity made me attempt to solve this problem. Was I sure I could speed up the process? Absolutely not! I had a little confidence but it wasn't 100% guaranteed. It took curiosity and will power to work through multiple iterations, techniques, failures, and, ultimately, successes to come to a resolution. Luckily for me, this one paid off.
It is fun being curious. Your day can never be boring if you're curious and if you strive to satisfy that curiosity. Take the time to read an article on a subject you know nothing about but would like to, install that new compiler, try out that beta, go to a session where you'll never use a technology but would like to know more. If you want to “level up” as a developer, take the time to satisfy that curiosity.
One option is to broaden your horizons with a great book on curiosity. You can't go wrong with “A Curious Mind: The Secret to Bigger Life” by Brian Grazer (Simon & Schuster, 2015, ISBN: 147673075X). I read this book over the summer and found Brian's stories amazing and enriching. This is one the rare books that has had a powerful impact on my life.
I want to emphasize one real benefit to satisfying that curiosity...it's fun and, arguably, the best part of this job. Try remembering the first time you made a computer do something - anything - it doesn't matter how long you've been doing this, spending time opening your mind to new ideas is something magical!