As I've said before, the freedom to leave is one of the most important. One must feel strongly about the benefits of a situation before giving up the freedom to walk away.
Sometimes it takes me a long time to leave. I'm often one of the last to depart an interesting party. I spent fifteen semesters at The University of Colorado. I lived in Boulder for twenty-four years. I've worked at Tyler Technologies for over four years.
I've been thinking about leaving Tyler for a while. I've learned a decent amount and written some good code, but I've also spent a lot of time writing boring code. Our product has some interesting solutions to typical government software needs, but in the end most of it is "Let the user enter this data into that view and store it over there. Take data X and make it look like Y so we can use the Z that we already built." Once I got that down, most of the interesting bits lay in what this and X are. And while I'm glad to have learned about legal descriptions and property appraisal, they don't hold fundamental interest for me.
I informed my manager a year and a half ago that "my time with Tyler is limited." He said he'd do whatever he could to keep me there, but I told him that the sorts of things I'd like to be working on are beyond the scope of what the company should pursue at this point.
I'd considered quitting as early as last summer, but the times at which it would have been auspicious to leave were also fairly hectic personally, so it was nice to have stable employment at which I'm appreciated (if underutilized). Before I went to China, my manager and I agreed that when I got back I'd wrap up the project I was working on (an implementation of a calculation method which proved to be 10% interesting and 90% tedious) and then work on an interesting module until I was ready to leave, "probably in May or June."
I came up with the "May or June" timeframe by intending to move out by the time my lease is up in June. I could spend March through May talking to potential employers with interesting projects in cool locations and then move in early summer... or perhaps in late summer, after traveling around the U.S. for a while.
Yet again, as the auspicious time for departure approaches, I've found reasons to put it off. My job search progress is nil, in large part because I've spent so much spare time drumming, roleplaying, hiking, and attending concerts. But there are work reasons, too.
Based on dissatisfaction from many customers, the president of our division has said that the module I'm working on is our top priority. I understand the customers' frustrations: most of the original development was focused on our largest client who, after a management change, decided not to buy the module yet. At around the same time, I was moved off that project and my time focused on Utah, sales analysis, big bugs, and other areas varying in degree of interesting. The module therefore never had a complete feedback cycle with clients who actually purchased it. And since the client we originally focused on does some things differently than the ones who are using the module, some behaviors are a bad match to user desires. After collecting complaints, we held a meeting and agreed on a two-phase approach. The first phase will deliver easy solutions to some annoying issues. Phase I will be included in the upgrade to our new release, slated for this and next month. The second phase will feature some more time-consuming but intellectually interesting solutions to some fundamental issues. I've refused to give time estimates on Phase II because I won't know what's needed until we've researched and experimented.
I told my manager and our president that I'm committed to completing Phase I. I've also said that I'm open to staying through much of the development of Phase II, leaving perhaps in September. My reasons for this delay are two-and-a-half fold.
First, I'm interested in sticking around because I take pride in my work. By completing, or at least making progress on Phase II, I'll be able to do a better job on some things I did when I was fresh out of school and didn't know any better. I'll be able to use some interesting techniques from my graduate-level courses on natural language processing and machine learning, the promise of which was one reason I was interested in this job originally. Plus, I figure if I do a good job using interesting computer science techniques I'll have something more worth discussing at a job interview with a prestigious company.
First and a half, my company is looking to hire a smart and creative someone interested in working on this module.* I'd like to work with the new developer on the existing product and design for Phase II so that I don't indirectly hand everything off to someone who spends a month going "What the smeg? Who wrote all this jibba-jabba? Why in Belgium did he do that?" As Eric Steven Raymond wrote in
The Cathedral and the Bazaar, "When you lose interest in a program, your last duty to it is to hand it off to a competent successor." He was writing about open source projects; it's not as big of a deal in my case (Tyler can hire a competent successor after I depart). But I'd like to perform a quality handoff as a professional courtesy: I don't enjoy diving into weird code without advice from the author and I figure other programmers don't either.
Second, staying employed lets me spend significant portions of the summer having fun while still getting paid (instead of cashing in unspent time off for a lump sum). If I were to start a new job in June I'd only have a couple days saved up by the time the weather was cold and the nights early. I've got enough money that I could afford to put my stuff in storage and take a summer-long road trip, but I don't have a good candidate for the passenger seat in such a performance and I'd feel guilty about using all that petroleum by myself. I'll be able to spend about 20 days of vacation (that's a month of workdays) between now and September and extra vacation is on the table (along with extra money or something else I think of) as an incentive for sticking around through Phase II.
So unless someone has a compelling reason why a three month road trip would be a good idea, I think I'll go month-to-month on my lease and figure out how to spend another month of time off.
What happens to our intrepid programming hero? What sorts of vacation plans does he have? Stay tuned for the next edition of
flwyd.livejournal.com to find out!
* If you, or someone you know, is interested in employment programming in Java with a focus on extracting names, property locations, and other interesting data from semi-structured text, drop me a line. I realize that "I'm quitting because I want to work on something more interesting,** want to take over for me?" isn't the best sales pitch, but I think the opportunity is worthwhile. Phase II should involve some really interesting work, there are other cool projects that need someone to work on them, the environment is fun, and you'll be well appreciated and compensated. I'm leaving in part because I want to move to Boulder, the west coast, or somewhere else nifty. I don't have any ill will toward the company or its current employees (at least on most days).
** If you've got connections or leads pointing to computer science-type positions relating to natural language, GIS/mapping, programming language development, artificial intelligence, or unusual human-computer interaction, put me in touch.
My résumé is fairly up-to-date.