One of my very first blog posts was about what fuels my passion for technology & writing code and this blog post could be considered the continuation of that one. If you are a follower of mine on Twitter it won’t be a great shock if I admit here that I’m addicted to learning, but that doesn’t really describe it well enough. It took me a long time to realize what was really going on.
At the time of that post I was starting to feel what I’m describing here but at the time I couldn’t really put my finger on it. I said the following.
My mind just doesn’t seem to stop thinking or wanting to tackle things. In reality my passion level is on a growth curve. Even if I am tired, I do not stop.
A few years later and that curve is even steeper. I’m learning faster now than before and I didn’t think I could go any faster, but I have. I suppose you can’t identify a pattern until the pattern has repeated enough times but now I’ve identified the pattern.
My career is a totally predictable sequence of events.
- Join a new job.
- Within the first 6 months establish myself as a key influencer on a team.
- Within the first 12 months I gravitate to the organizations toughest problems. I want to be the one to solve them.
- Solve the problem.
- Look for even harder problems.
- Solve those, too.
- Run out of problems that were harder than the last.
- Eventually go absolutely bonkers from boredom to the point it makes me extremely unhappy. I mean extremely unhappy. Life sucks so bad when I’m bored.
- GOTO 1
Another pattern is frequent crazy weekend coding seems to surface when I’m not challenged daily.
Yesterday I watched a video of Sabrina Farmer’s heart felt talk about her career. When she spoke about the beginning of her career it hit me like a ton of bricks. Especially these quotes.
If there was something I didn’t know, I wanted to work at that company.I worked at Nasa to learn about scale.I went to WebMD to do their data warehousing.
If a problem seemed impossible, I wanted to do it.
This nails it. Right now I’m in the middle of building bigger and bigger systems. The next one bigger than the last. I’m almost scared at the size of the system I’m in the middle of building while I write this. I will want to build a bigger one though when I’m done because it gets harder and harder, and that makes me happy.
I am the most happy when I’m challenged which is twisted because I also doubt my abilities the most when I’m challenged because with challenges comes failures. I’m a competitive person. I see people writing code or having deep knowledge in subjects I don’t understand, so I ask questions, and more questions, until people are probably blue in the face.
I go on crazy weekend coding tangents like trying to build a columnar database that supports a subset of SQL syntax in a weekend. A year ago I didn’t know a lick about bloom filters, bitmap indexes, delta encoding, cooperative scanning or that CPU branch prediction existed and how threading can really hurt performance by introducing excessive CPU cache invalidation causing hundreds of extra CPU cycles when it should have been done in less than 10. Now I do.
I used to play organized sports and my programming is almost a reflection of that competitiveness. I see some production piece of software and I think “I bet I could make something that goes faster than that” . So I find the material I need to learn to have the knowledge to try.
So what does all this mean?
I have challenge addiction.
Is this a mental problem? It really feels like it at times. It’s hard to find employers that can keep up with re-positioning me to keep up with these needs. What is wrong with me? In a project thats making tons of profits and everything is going according to plan and everyone is happy is an environment that makes me so unhappy I cry at night. An environment where we are debating, white boarding and thinking so hard how to solve a really hard problem for a customer is when I am happy.
So far up until now I embrace it, but I have to admit there are days where I wonder why I’m stressing out so much. It’s really hard to explain, but most people just tell me to slow down, or relax. The problem is, that is what makes me terribly unhappy. So I’ve just kept my foot to the floor.
I’m extremely proud of my growth, especially this last year. I only dreamed about what I’m building this year. This last year of learning and experiences have been my biggest leap yet.
I’m still not satisfied though.
- Batching and pipelining linearizable operations in replicated logs
- Trick to reduce allocations improves response latency in Haywire
- Improving the protocol parsing performance in Redis
- Mencius and Fast Mencius a high performance replicated state machine for WANs
- Tuning Paxos for high-throughput with batching and pipelining
- Scalable Eventually Consistent Counters
- Create benchmarks and results that have value
- Routing aware master elections
- My new test lab
- Responsible benchmarking
- Understanding hardware still matters in the cloud
- The “network partitions are rare” fallacy
- Messaging and event sourcing
- Further reducing memory allocations and use of string functions in Haywire
- HTTP response caching in Haywire
- Atomic sector writes and misdirected writes
- How memory mapped files, filesystems and cloud storage works
- Hello haywire
- Active Anti-Entropy
- Lightning Memory-Mapped Database
- September 2014
- May 2014
- April 2014
- March 2014
- February 2014
- January 2014
- November 2013
- October 2013
- August 2013
- July 2013
- June 2013
- May 2013
- April 2013
- March 2013
- January 2013
- October 2012
- September 2012
- August 2012
- May 2012
- April 2012
- February 2012
- January 2012
- December 2011
- September 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- February 2011
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010