Job Postmortem
The 2nd postmortem post...--
Boring history...
Once upon a time in 1996, 4 research scientists at the Digital Mapping Laboratory at Carnegie Mellon University created a spin-off company that would utilize the programs and research done at the lab. With some of the Ph.D students in MAPS Lab, they created a modular system for putting many various types of data together, and creating a 3D visualization of the geographic data using the tools and libraries from the lab. They received government contracts to continue development of the software suite, TerraTools, and sold copies to US agencies and oversea VARs (value added resellers... These are software middlemen who pitch 3rd party software to their local companies and government agencies, often include training and/or contract works).
And for a time, it was good.
I received the offer on Dec. 13th, 2003, accepted it on Jan. 4th, 2004, and my first day at TerraSim was Feb. 1st, 2004. It was hard breaking into the code base, as there are well over 2.5 million lines of code, and many (especially the old MAPSLab's code) were poorly documented and not very reader-friendly. But half a dozen programming tasks and a few weeks later, I got the hang of things and started implementing a number of key features in the next release of the 3D realtime database viewer. Over the next 6 months, I implemented over half of the new graphics tools and GUI enhancements.
Over the summer months, the gang left Pittsburgh one by one, and I moved to schenley apartment to roommate with jt, so I can pretend to be a cmu undergrad for a year longer. At work, I was charged with the task of creating a new product line, using COM/ActiveX to interface between our programs and 3rd party software. Since then there was a gradual and steady decline in quality of life at work. The COM environment is hard to work with and cumbersome, to say the least; the new usage of the existing programs reveals bugs in old lab codes that predates mankind; the 3rd party API is massive, buggy, and uselessly documented despite their best effort (supposedly) to support the developers. Most importantly, the project quickly overtook my normal, more interesting, shorter tasks and consumed my hours at work, preventing me from working on computer graphics related work (which was supposed to constitute at least half of my responsibilities, accordingly). I tried hard to keep my life outside of work colorful and fun, and indeed the summer was great fun traveling to visit everybody and fall was not too bad either (see: Pittsburgh Postmortem).
And for a time, it was good.
Nevertheless, I knew I will not stay in Pittsburgh any longer than I have to, so quitting TerraSim constantly lingered in the back of my mind...
Thus it was a gloomy Tuesday after the Chinese new year of 2005 when I flesh out my plan to quit. I would leave when the next version of software is released in May, and go backpacking in China. Little did I know that I wasn't the only one making exit plans... And company lost 4 employees over the next 3 months, including the director of research (my supervisor). ... So I took a partially unpaid leave and came back from china for another year of hacking...
--
Insights
It's funny how heavily job satisfaction is influenced by the outcome rather than the course to get there. Regardless of how many new things learned, regardless of how much experience gained and regardless of all the personal growth along the way, at the end of the day it's the sense of accomplishment that really counts. Even though all the elements mentioned certainly contributes, without the milestones reached or product packaged it's hard to feel productive at all. I think you know what I'm going to say already... What I realized over the past year is that when it's not working, knowing complexity of the problem doesn't help me feel better; and when it finally worked, it didn't matter that it was not a computer graphics project.
The problem with a spin-off that doesn't grow, is that it ends up having to deal with complex software engineering problems that usually happens in larger companies. 25 years of source code implemented, modified, reimplemented, and modified again by dozens of PhDs who just want their thesis done... by the time TerraSim was born, the code base was outdated, tattered, and obfuscated (not to mention a lack of in-source and external documentation). The company end up lagging many many years in terms of updating to new technologies and revamping old programs.
The world of government contractors is also something I care not to experience again... As explained above, the product I was given charged of was difficult and very unsatisfactory to implement. After nearly a year of work the software was still extremely buggy, and would crash left and right at more extensive trade show demos, etc; and my boss would say: "wait until you see the work of other companies." This 'whose tomato is less rotten' reasoning is just not acceptable for me... And that was a important reason for many of my other concerns about the company's software: 10 yr old graphics, inadequate UI, slow processing times...
but I digress.
The company is understaffed. That is the undisputed truth. Growth of a small company in a niche market is surly a colossal task. But it was clear if the company have fewer of the above problems it would have far greater potential [of being bought, make lots of money, etc], and people would stay. That and location. Aw. Pittsburgh, the it's-not-so-bad-but-everyone-keep-leaving city was a important reason for quitting.
--
Quitting
quitting. is. hard. very hard.
The entire process took over three months, including multiple 'talks' with my boss about the reasons (except the most important one just mentioned ^^;; )... MBA, Pittsburgh, growth, family, friends... causing much stress on both sides... finally he just said, 'I'm gonna feel bad regardless of how u handle ur departure, so just do what makes u happy' ... And that was that.
It's not so much about loyalty, nor was it so much about responsibility, though obviously they are very important. The company undoubtedly taught me much, most important ones could not be put on my resume. Besides the obvious and perhaps relatively-narrowly-scoped programming skills, software engineering processes through the experience is invaluable. Communication skills, written and spoken, to clients and colleagues, analytical and marketing... I have as many reasons to leave as there are reasons to miss this company (just as there are just as many ways I contributed to it). The interesting balance would be broken if I stay any longer. So quite simply, as I've told many, it was just time to leave.
old job: software engineer
new job: professional bum
start: 02/02/2004, 09:00 AM
end: 06/09/2006, 05:00 PM
duration: 859 days, or 123 weeks, or 2 yrs 4 months 8 days
estimated work time: 545 working days, or 4360 hours
bottom line: my first job is great, quitting is also great, and everything is just the way it should be. I will miss terrasim, and I will miss Pittsburgh...

0 Comments:
Post a Comment
Links to this post:
Create a Link
<< Home