Recapping the last chapter, I'm managing a dev team, doing a fair bit of C and Java development mixed with some TCL and the occasional RPG IV. I've gained a bit of arrogance, but also quite a bit of real-world development experience. Technically, I'm doing fairly well. I've also been able to develop some fairly decent team management skills. Unfortunately, I still have a problem with authority.
During a management meeting, I had a difference of opinion (fairly loudly and colorfully) with the president of the company, and it was decided (surprise!) that my services were no longer needed. By this time, I had moved home and been telecommuting for over 2 years, so logistically this wasn't as big of a blow as it could have been (thankfully). This was, however, the first time I had been unemployeed since I got my first job almost 8 years prior.
I took some contract jobs that were lucrative in the sort term, and even took a job at another Fortune 500 company doing nCurses development. While that may not sound sexy, I felt like I came home. This was also my introduction to vim, one of two takeaways from my time there. The other was the concept of the Senior Dev. He was like the oracle. All of his answers didn't make sense immediately, but were always (after hours or days of pouring over the problem) found to be spot on. I didn't care how long it would take, but I wanted to be one of those guys.
After another falling out (where I called the CIO a name you apparently can't call the CIO of a Fortune 500 company in his presence), I was escorted from the building and forced to find work elsewhere.
Luckily, I had been "helping" a buddy of mine get his startup off the ground (basically, doing a lot of the low level coding while he took care of a lot of front-end stuff). He had been trying to convince me to come out to OKC and join him for quite some time, but with a family, I preferred the stability and benefits of a "corporate" job. Now that both were gone, I packed my bags and headed out West.
Start-ups. They truly are magical. All the money you can spend. Nothing to do but dream up cool shit. Build awesome stuff all day, with nobody to answer to. We'll figure out how to make money later.
I did my first serious web development here using Python and Twistd. We used MochiKit mostly for the front-end stuff (jQuery wasn't really a "thing" yet). I learned tons about technology, but I also learned quite a bit about the technology world at large.
Almost as importantly, this experience solidified my belief that technologies were almost interchangable. Language was unimportant, so long as you understood the basic constructs. This has enabled me to accept positions for which I had 0 applicable experience.
At one point, I found myself with the title of CTO (not as glamorous when the employee count is 5, but still looks good on a resume), sitting down at the virtual negotiating table with Yahoo! to discuss acquisition. For a few brief moments, I was worth a little over $2 million. In one of the few regrettable decisions of my life, I agreed with the rest of the team that we should hold out. Flickr was about to be acquired by Google (or so we thought), so Yahoo! would be forced to return and accept our slightly higher asking price.
Needless to say, there weren't any other opportunities that even came close, and a year or so later we decided to shutter the virtual doors (half the team was remote) and ride off into the sunset.
Over the last several years, I had matured to something just before middle-age developer. A short list of the main lessons:
- Developers are craftsmen, who have an entire toolbox at their disposal. Knowing which tool fits the current task is not always obvious.
- The best product doesn't mean anything if you can't market it properly.
- There's always some new way to build software just over the horizon. Don't get comfortable.
- Code is fleeting. Today's masterpiece is tomorrow's rubbish.
Even with all that newfound knowledge, I was still an arrogant little whelp who still didn't fully understand the relationship between business and software. That knowledge comes in the next chapter.