Sunday, August 02, 2009

Future Direction

The past two months have been productive. I got a ton of work done on Allacrost, read a few books, and trained like a maniac. Since my last post I've competed in 11 different races. Yeah, I'm getting slightly crazy about it. I didn't get any work done for my iPhone development though. I'm not very motivated to do it since I don't really need the money right now and I'm pretty sure its not something that I want to do long-term as a career. At this point I'm not certain if I'll continue working on it or not. Its been nearly four months now since I quit my job at National Instruments. I can scarcely believe that so much time has gone by already.

I met an incredible woman last week. She and I have a lot in common and I like her a lot. I hope that she becomes someone very special in my life and I in hers, but time will tell. One of the many traits that I admire about her is her drive. She knows what she wants to do with her life, what she has to do to get there, and works very hard to achieve that goal. And I am envious of her for that. I used to be in the same circumstance, and it made me very happy and very fulfilled to live every day knowing that I was getting closer to my own goal. But as I got closer to it (I'm talking about my years in grad school here), I came to realize that what I thought was my ideal profession wasn't really what I wanted. I had wanted to be a university professor, but as I got to know the lives of professors better throughout my years at UT Austin I realized that it was not right for me. To be a good professor you have to work so long and so hard and devote nearly your entire life to your research. One professor I still keep in touch with works something ridiculous on the order of 80-100 hours every week. I couldn't do that. I'm too eclectic in my interests and activities and I strive to maintain a healthy balance in my life. I want to enjoy my work and I want to work hard at it, but I don't want my life to be totally consumed with my work.

When this woman shared with me what she is planning to do with her life, I began to think a lot more about my own plans for the future. What do I want to do? Who do I want to be? What sort of career do I want to pursue? The rest of this post is going to be about trying to answer these questions.


The Ideal Job
"What would be your ideal job?". This is a question that I am asked quite often lately. Here are the properties that my ideal job would have, ordered from most to least important.
  1. Extremely intellectually challenging
    I want to design elegant solutions to solve difficult problems.
  2. A great degree of creativity
    I am a very creative person and I feel that I need to have creative freedom in my work to be happy.
  3. Flexible schedule
    I really need to have the flexibility in my work schedule. I don't think I could handle strict working hours well because of my training.
  4. Promotes learning new things
    I love to learn and I want my job to require me to continually learn and grow. It would be great if I was required to study many different areas (history, music, art, culture, etc.) and not just learning new technologies.
  5. A good work-life balance
    I want to put in my hours for the week and be done. I don't want to have to take my work home every night or be expected to put in (paid or unpaid) overtime on a regular basis. And I don't want my boss calling me and bothering me when I'm at home.
  6. Beneficial to society
    I want to feel like what I do is making a difference in the world. I don't want the purpose of my existence to be to help a corporation turn a profit.
  7. Ethically sound
    I won't work for an entity that I feel has poor business ethics, like Microsoft or Intel. I'm a good person and I want to do good things. I don't want to help or be a contributing factor to a corporation that I view as evil.
  8. No Windows
    I know this is a strange one, but I don't want to work in a Windows environment. I just don't like using Windows and I feel that it hampers my productivity because its so closed and proprietary (not to mention it annoys the crap out of me as just a standard user). I would love it if I could work in Linux, although I'd be fine with OS X too. Any POSIX compliant environment would satisfy me really.
  9. Open source
    This one is more icing on the cake for me. I would love it if the work I did was available under an open source license. I like being able to share what I do with the world rather than having to lock away and hide my work in a proprietary safe of sorts. This also includes being able to work with open source technologies and tools, which I am familiar and enjoy working with.

I honestly wonder if such a job even exists in this world. My last job only met criteria #3, #5, and #7 on that list (33%). In the past six months I have found a very small number of jobs that come close to meeting all of my criteria. I am pretty sure that I am just going to have to compromise and pick a job that comes as close as possible to meeting my ideal. With that in mind, here are some possibilities that I have been presented with or have been considering recently.


Military Scientist/Engineer
Almost all of the cool/interesting job offers in the Austin area that I've come across have been related to military technology. These jobs were either working as a contractor or researcher for a company or lab on what sounded like some very cool and interesting problems. But I have a moral dilemma here. I want my work to be for the betterment of life, not for the destruction of it. I'm an idealist but also a realist, and I realize that this type of work is necessary and that there are people willing to do it. But I don't know if I want to have even a largely indirect impact on taking a human life.

Missing criteria: #2, #6, and maybe #3, #4


Game Developer
In the past year or two I've received a small number of requests from local game companies in the area for an interview, no doubt due to my work on Allacrost. When I was younger I actually wanted to be a game designer and went to college with that in mind. A game developer is a very demanding occupation, however. I often hear of developers having to put in insane amounts of hours, literally living at the office especially during "crunch time" a few months prior to a product's release. This is extremely undesirable for me, and remains the top reason why I have avoided becoming a professional game developer. I have no doubt that the work will be intellectually challenging and will allow me to learn many different things (this is why I work on Allacrost in the first place), but I don't think I would have the same feeling of achievement and satisfaction from developing a game than say, doing research that advances science.

Missing criteria: #5, #6, #9 and maybe #3, #8


Research Scientist/Engineer
Mmm, I love that title. It sounds so hot. Often when I describe my ideal job its something dealing in research. I think I would love it if I could do something like developing simulators and other software tools for scientists and researchers. For example, modeling chemical and biological reactions, creating data analysis/visualization software, geological simulations, etc. Working as this sort of assistant among various fields of science, engineering, and perhaps other fields would definitely allow me to achieve my goal of learning. That's a specific example anyway. One problem is that many of these types of jobs require a PhD, something which I currently lack. Its not easy for me to find a good position that is local in Austin, that's the major problem with it that I face. I'm also concerned about what type of demand would be required for such a position.

Missing criteria: maybe #3, #5, #8


Large Engineering Firm
This is the type of work I did at my last two jobs. I don't think I'm cut out to be a corporate drone, at least it hasn't worked out well for me so far. I'm mentioning it here though because it still remains the easiest way for me to get a job, just not the easiest way for me to be happy with my job. I do have an interest at working for nVidia (who I interviewed with a couple of years ago, though it didn't work out). They have an office near my home and I think I'd have the opportunity to learn a lot in that company, but the Austin office is small and I think the type of work I'm really interested in at that company is located at their headquarters in California.

Missing criteria: #2, #9 and maybe additionally #4, #8


Small Start-up
I've also been considering perhaps working for a smaller, young company to see if that type of environment suits me better. But I hear that many small start-ups are full of workaholics, which makes sense. I would imagine you'd have to work really hard to compete with the larger, more established businesses. I also wonder about whether or not I could be creative in such an environment, since I would imagine the goal of a small business is to merely survive and avoid unnecessary risks. My feelings toward working at such a job right now lean slightly negative, although if I find the right one I would give it a shot.

Missing criteria: #2, #5 and maybe #3, #4, #8


Entrepreneurship
Of course if the job I want to do doesn't exist, I could always start my own business and create it. I've given this idea some thought as far back as 2006 and I have hung on to a few ideas that I have for what type of business I could start and how it would be run. I've managed a "business" of sorts online with Allacrost for over five years and I've been pretty successful at that. But there are a few major problems with this option. The first is time. I know that if I pursue this option, its going to require me to work a lot harder and a lot longer than any of the others, which has a good chance of ruining my desired work-life balance. The second is risk. The business may fail and I may end up with a large debt to pay off (I hate owing money), and if so this would force me to get a job to pay off that debt which I may or may not like. And another downside is that if I own and run this business, its very likely that I'll spend my time managing the business instead of working on the interesting problems myself. That would defeat the purpose of my creating the business in the first place, since I'd be doing work that I didn't enjoy but enabling others to have my "ideal job". Yes, the irony is thick here. Its not completely off the table, but its not something I'm likely to pursue unless I find evidence or a convincing argument or two for pursuing this route.

Missing criteria: #5 and maybe #3


Moving Away
This isn't a perspective job, but is something I've been considering for the purpose of finding a job that I am happy working at. Maybe I should be more willing to move away from Austin so that I can cast a wider net in the job market? A couple weeks from now will mark my five year anniversary living in this great city. I live by the mantra that I shouldn't just settle down and get comfortable in one place for the rest of my life. I should continually uproot myself, shake things up, and live a life full of diversity and challenge.

But its so hard to even think about moving away from here for a number of reasons. I love Austin. Of all the cities I've lived in it is by far my favorite. The triathlon scene out here is great too and has become a major part of my life. I'm worried that if I move to a new area (especially if the climate is colder), it will be more difficult for me to enjoy this sport that I love. And I just met someone too. You might say "So what? You'll meet someone else wherever you move to". That might be true, but its so difficult for me to find a woman that I really like and really enjoy being with. I know its kind of silly to factor this into the equation having only known her for a week, but if things go well and I get a job offer outside of Austin several weeks from now its going to be a big consideration.

Possible places I've been thinking I'd like to move to include (in no particular order): Portland Oregon, California, Germany, Switzerland, and New Zealand. Actually New Zealand is probably out of the running now because I don't believe there is a wealth of jobs in my specialty over there. Really anywhere in Europe would be nice. I appreciate the European lifestyle much more so than I do the American mindset (this might be a subject for me to blog about another time). It would be a little nerve wracking to move to a non-English speaking country, but it would motivate me to learn another language and I think it would be a great experience.


Graduate School (again)
This is not a long-term solution/career (obviously, although if it was feasible I wouldn't mind being a student forever). Of course this is something that I've mentioned before and I still consider it. I feel that getting a PhD could help me in finding that elusive ideal job, or at least something close to it. But its such a significant investment of my time and energy. I've been a grad student so I know what its like. I'm afraid that if I go back to school, I'll have to give up other things that I love. Specifically, I'm afraid of not being able to seriously train and compete in races because I won't have the time to do so anymore. I already gave up athletics for six years of my life and I don't want to have to give it up a second time.

But if I do choose grad school, I have to decide where and what to study. I'm not sure if I want to go back to UT Austin. Its a nice school, but I still have a bitter taste in my mouth from my experience there. Studying in Europe sounds like a great idea, and I hear that over there they treat graduate students more like human beings and less like.....well, American grad students. I'm not sure if I want to study computer engineering anymore either. Neuroscience is still a really attractive option to me, although I need to be more familiar with what it means to do neuroscience research. If I could use my knowledge and skills in computer engineering and apply that to neuroscience, I think I could become some kind of intellectual bad ass. :)


Decisions
There are a lot of decisions I have to make and a lot of directions I can move myself in. I guess its nice to have the freedom to make this choice, but I do often miss the days where I already knew what the best path for me to take was. Writing this has helped me organize my thoughts and feelings about the matter though. And I also realize that the perfect job isn't going to be looking for me. I have to be proactive about my options and see what I can do. If I had to choose one of these options right now, I think I'd go with research scientist.


That's all for now. If you have any suggestions/advice for me as far as career move, I'd love for you to share it. Thanks!

Labels: , ,

Wednesday, April 15, 2009

Reasons for Resignation

Last Friday, April 10th, was my final day of work at National Instruments. I was overwhelmed with a bittersweet feeling in those final two weeks. I still think its a great company and a wonderful place to work. Above all else, I really like all of the people I met and worked with there. It was very difficult for me to make the decision to leave because of that. I was employed at that company for only 18 months, from October 2007 to April 2009. I'm going to address everything that led up to my decision to leave and the reasons why I ultimately did leave. First I'll start with an outline of my job history including why I took the job in the first place, then I'll explain what factors caused me to leave


History

Pre-Employment
I had interviews with three different groups at NI. After those interviews I was asked to rank them in order of my preference. I ranked the Instrument Control Software group as my number one choice and eventually that's the group that I ended up working in. I chose them because they did device driver development, an area of computer engineering that I was not very familiar with. At that time I wanted to do something new to explore my interests and see if it was something that I liked doing. Plus I had been working on Allacrost so much at the time that I really didn't want to do even more application development than I was already doing.

Oct 2007 - Nov 2007: Training
My first two months or so were all training, which was fine. I was pretty shocked when I first learned that I'd spend an entire eight consecutive weeks in training before I'd even start working. The training itself was fine, although later I came to realize that very little of what I learned in training applied to my job. Only about one quarter of the time I spent in training was useful to me at my position, but the training I was enrolled in was directed toward applications engineers (a form of tech support). It wasn't particularly well suited for a research and development engineer like myself in my opinion.

Dec 2007 - April 2008: Application Development
When my real work first started I learned that I would be the only engineer in my group that would be working on VXI for the time being, which had me a little concerned. My first assignment was addressing problems in an internal automated test suite for our VXI driver. The primary issue was that it didn't work on systems with hyper-threading or multiple CPUs and we were developing a new embedded controller (VXIpc-882) with a dual-core processor. The code itself was almost as old as I was (over 20 years) and we even had to use a very old operating system (Windows 3.11) and version of our software to perform this test. The test was very cumbersome to setup and user error was a common occurrence, while error reporting mechanisms were nearly non-existant. The code reflected the state of the application. It was poorly written, poorly documented, and poorly designed. My job was to re-write this application with a proper design, utilizing proper synchronization mechanisms, provide the user with a better interface, and better documentation and error reporting. Working with/rewriting old software was not a foreign experience to me and I was content for the time being. However, I had joined this team with the expectation of working with others and learning driver development. Almost six months into the job I still had virtually no exposure to any of this. I told myself to be patient and that it would get better soon.

May 2008 - Oct 2008: Testing
The next several months were testing. Testing, testing, testing, and testing again. I did nothing but run tests and analyze problems that occurred during those tests. This period was very annoying because it was so tedious and unchallenging. Someone with only a high school diploma could have done my job during this period of time. I found the work almost insulting when it caused me to ask myself "I struggled through 2.5 years of grad school for this?". Even more frustrating were the actions we took when a test failed. Instead of fixing the problem or even finding the exact source of the problem in some cases, we'd either run the test again and hope that it worked, or I would be asked to add a hack to the test application that I wrote to circumvent the problem. I voiced my strong opposition to this policy on more than one occasion. Because the VXI team was so small (it was mostly me) and fixing each problem could take weeks or months for one bug resolution, the replies that I received were "we agree with you, but we don't have the resources to do that". I understand of course, but that still didn't make me like the situation that I found myself in. I anxiously awaited the end of this testing and the new release of our driver software. Once again, I told myself to be patient and to expect things to get better.

Nov 2008 - Jan 2009: Research
After we released the new version of our driver, I finally got to do something related to driver work. I investigated potential problems and solutions in providing a new feature for one of our existing products. This too, though, was a disappointment. First I leveraged a similar but unrelated software product our code produced and was told the changes to make to get it to work for our product. Then it was a matter of me reading through Microsoft's documention (sometimes acceptable, sometimes incomplete, and sometime hidious) to find the answer to "Can we do X?" or "How does Y function?". I produced a prototype solution as a proof-of-concept that was the only highlight of this otherwise uinteresting work.

During this peroid of time, I also came to learn just how badly written our driver software was. The code did not conform to any standard, there was very little documentation, and the design principles it employed were downright blaspemous. I've never seen the concept of inheritance applied in such a disasterious manner. I was totally ready to dive in and begin fixing it. It needed to be re-written from scratch just as the test application I had worked on was. But to do this all by myself with no driver development experience and little help from the existing code base would have taken me years. The company wasn't willing to invest additional resources to truly fix the root of the problem. A good analogy would be applying bandaids and ice packs to a man with broken bones and internal bleeding. That's what the company wished to continue doing, and from a business perspective it makes sense because additional investment in this area isn't likely to produce a profit. But knowing that didn't make me like my situation any better.

Feb 2009 - Apr 2009: Vista Support
The next few months after that I worked on making our software compatible with Windows Vista. Sometimes the work was bearable, but overall it was just frustrating. I still wasn't doing anything related to driver development, and by this point I didn't want to anymore. Any "driver development" in VXI I understood to be just fixing a bug in a really bad mess of code. Even looking through the code was extremely frustrating because it made no sense at all and the nonsense was never explained anywhere. My tech lead explained to me that the only good way to fix a bug in this driver was to walk through the code with a debugger and look at the call stack to figure out what was going on because it was such a tangled mess of spagetti that you couldn't understand it just by looking at it. I tried looking at it anyway and found that he was absolutely correct. I also learned that VXI software development was being moved to our Shanghai office by the year's end (read: my job was being outsourced). That provided me with some relief knowing I wouldn't be stuck doing this for much longer. But still there really wasn't anything in my group that I thought was interesting and would enjoy doing. During my final few months my manager also let me spend 50% of my time on a research project with another group to see if that would be something that I would enjoy. I found it interesting, but it wasn't something that I would have liked to do on a permanent basis.


The Decision
Ultimately, these are the factors that forced me to consider leaving my job.
  • I was working by myself most of the time
  • My job was often intellectually unchallenging for me
  • The majority of my responsibilities were supporting a legacy product
  • I didn't find my work interesting
The final point was what put the last nail in the coffin for me. Its somewhat ironic, because at my last job at Freescale, I hated the company but loved my work. Then with National Instruments, I loved the company but hated my work. This position helped me realize how important it was for me to enjoy what I was doing at my job.

I started thinking about leaving around November last year and made my resume public to see if any good job positions came my way. In early January, I revealed to my manager that I was considering quitting and that I had already started looking for another job. My manager made a great effort and addressing what he could of these issues after I shared them with him. He suggested that I talk to some other groups in the company to see if I would be interested in their line of work. I did talk with a few other groups earlier this year, but unfortunately due to the hard economic times no one had an opening. As the disappointing days of work dragged on, it remained unknown when I would be able to do an internal transfer to a different position or when another exciting job opportunity would come my way.

During each "phase" of my employment I often thought like this: "I don't like what I'm doing right now, but if I am patient it will be finished and I'll move on to something better". Its ironic because when talking with my boss' boss about my job concerns during my final weeks, he pointed out that VXI software was moving to Shanghai and that things would get better. But that knowledge wasn't enough for me. I was sick of waiting around hoping things would get better instead of being able to take action and make the situation better myself. And that is what ultimately lead me to resign, even though I did not have another position lined up. Life is too short to spend it doing something you don't like.


Next Time
Now that I have much more free time you can expect that I'll be blogging more regularly. Next time I'll talk about what my plan is for employment/income and what type of job I am looking for. To highlight the goal of finding work that is interesting, I'm planning a retrospective analysis of my interests as they have changed over a period of time. I also have a lot more to talk about regarding religion. In fact I'm only half way through that set of video clips I've been sharing. So look forward to all of that.

Labels: ,