After putting a little thought into it, it comes down to two words, new and challenging. Yes, sometimes both are at play but really either of these is where the rush comes from. As developers we are always looking for that high, however we can't always get it, making it better, making it more efficient keeps us going, with a reward in the final product.
New, new is obvious, writing anything new is fun because it's void of the same old structure, new code is fun to write but what's even better is the underlying framework in a new environment, or better yet something you're convinced, per google, has never been done; or posted anyway. New could also be a paradigm shift, for instance that first time instead of parsing a Notes view you walked an xml file, or used a new language to walk that same Notes view.
Challenging, the challenge draws you in, or makes you step back, and look at it, you make notes on paper and then start typing, only to turn away to make more notes. Lately the most challenging things I've worked on take more time parsing in the car then they do writing. Imagine taking a picture, easy enough, now imagine going Ansel Adams on it. On your commute to work tomorrow think about the subject, the angle you want to shoot at and the angle of the sun... and then execute. Which one takes longer? As for the picture, is it rewarding? That's coding.
I was going to write about one of those exact efforts, one that took hours to ponder in the car, a couple emails to my father (a Math major in college and an Oracle developer), and an IM with a friend, and i realized i had a hard time getting across what I was trying to achieve, so if you want in, here are the high level det's. Essentially it's a license manager:
- You want to purchase 20 user licenses (broadcastr.net).
- I need to give you a code that has those 20 licenses embedded
- You can't figure out the code and make the 20 licenses, 200,000
- The software has to quickly return 20 due to translations are held up until the licensing is verified
- No lookup tables since it will add to overhead
- The function that processes the code is compiled.
It took about 2 hours to write, on the last of 4 other short lived 15 minute attempts. It just wasn't coming to me, hence the reward when it became clear. How did I do it? Let's just say you take the number and mix it up with a bunch of random numbers, add thing, subtract things, parse strings and then wrap it all in a bunch of hex values, some used, some not.It's two functions, one to create and one to process, the latter being the only one in the product.
So there there you have it. The little project that got me thinking about the journey, the journey we all travel from time to time.