The "Objectives" section of most resumes seems to read:
"I'd like to use my superb skills at communication and interpersonal interfacing in a challenging, yet rewarding, environment to enhance the fiscal viability of my employer".
Which translates to:
"I talk real good, so hire me and I'll make you rich".
Which doesn't really say anything.
There are a lot of factors that affect job choice: does it enhance my career?, does it pay well?, is it fun?, and where is it located? Overall job satisfaction is based on a mixture of all of these, and I recognize that one often has to trade off one for another. My current plan is to do contracting for a while, and gain a broad range of experience before I seek the perfect long-term job to settle down at.
I've been doing embedded systems and real-time control software since I got my Engineering degree in 1983. I enjoy the challenge of writing time-critical software that must never fail in a destructive way, but want to do it in a different venue. There are many other fields of programming that have similar challenges. In short, I'd like to find a job that uses the skills that I have and gives me the opportunity to gain new skills. Some areas that I'm particularly interested in are: Operating systems, security, networking and signal processing.
The two most lucrative career paths for a software engineer are contracting and working at a startup. I am at a point in my life where I have the luxury of being able to take the risks of a job that might not be there in a few years, or even a few months. I also recognize the benefits to working as a permanent employee at a stable company and could be attracted by such things as an exciting project or an easy commute. For a short term job, I am willing to make a lot more concessions than I would for a permanent position.
For me, the things that go into making a job fun are a technical challenge, and being allowed to do a good job. If racing cars were my profession, rather than my hobby, I'd write software for fun. I love the challenge of solving difficult problems with an elegant solution. I also like to take artistic pride in my work. I enjoy designing and writing software, not debugging and maintaining it. That is why I like to invest the time up-front and do it right rather than have to do it over. I even wrote a missive on the subject: Writing Debuggable Software. On the other hand, I've spent enough time in the industry that I understand when a project has to get out the door last week, and that can be as much elegance in optimizing engineering time in the short term as there is in optimizing processor, or even engineering, time in the long term.
I live in Felton, which is in the mountains near Santa Cruz and Scotts Valley. While I would love to find a job within bicycling distance, the economic reality is that most jobs are over the hill in the Silicon Valley. Due to the vagaries of traffic flow and the various roads over the hill, a job geographically further might be an easier commute. This is one area that I'm willing to be a lot more flexible for a short term job than a permanent one. As a matter of fact, I'm interested in contracts in other portions of the country. There are many places that I think that it would be fun to live for three to twelve months such as: Portland, Austin, Seattle and Boston.
I have a very broad background of skills and interests and I enjoy exercising them. I am happiest in a job where I have a diverse set of responsibilities, including design, implementation and even some documentation. I can read a schematic, know how to operate an oscilloscope, know which end of a soldering iron to grab, and can occasionally even write several consecutive coherent sentences.
It's all very well and good to say that I want a job that is close to home, pays well, exercises my programming skills and gives me a chance to gain new ones, but that doesn't really discuss what I want to do. One problem with listing fields of interest, is that if I don't mention one, a potential employer might think that I'm not interested. Rather than just looking at what I'm interested in, please look at why I'm interested in the various things. What it boils down to is that I'm interested in anything that provides an interesting technical challenge in an enjoyable work environment.
Operating systems have long been of special interest to me. The software works close to the hardware, has real-time constraints, must not break and if something does go wrong, must recover gracefully. Combine the above with the resource management aspects of an operating system and you have just about everything that makes programming fun. I don't find anything scary about interrupt routines or asynchronous events, though I will admit that they can be a pain to debug, which is one reason that I find good programming discipline so important.
I've been using Linux at home since 1994 and it is currently my favorite work environment. During the last couple of months at Packetlink I actually got to poke around inside some of the kernel and device driver code and enjoyed myself immensely.
Multiprocessor systems are a lot of fun. They are asynchronous, time critical and have some interesting resource management and communications challenges. From an engineering standpoint there is always a point on the price/performance curve where it is cheaper to add more processors than it is to increase clock speed. And yes, my senior project in college was a multiprocessor operating system.
Networking interests me for two reasons. First of all it is a field of a lot of opportunity, "the next big thing" as it were. There is a lot of money to be made in the field of networking, and I'd like to have some of it. Second of all, networking is in many respects an instance of multi-processing.
Digital signal processing was one of my focus areas of study in college. While I have not had as much opportunity to work in the frequency domain as I would have liked, it is still an area of particular interest to me. Much of my signal processing experience has been detecting events in a noisy real-time signal, but I still enjoy it when I get the opportunity to fire up an FFT, and do some classic signal processing.
Computer security appeals to the desire to either beat the system or to build the unbeatable system. I got a taste of it contracting at Atalla and found that I really enjoyed it. I also see it as a strong growth area, as more and more critical information is stored on computers and transmitted over unsecure networks.
When I bought my Palm Pilot I quickly developed an interest in PDAs. It is extremely handy to have, as they phrased it "ubiquitous access to data", and can see a lot of potential for small form-factor computing.
I describe a natural born engineer as someone who will spend three hours figuring out how to do a thirty minute job in twenty, once. When faced with a technical challenge, I often get as much pleasure from building the tools to make my job easier as I do from using them. My interest in tool-building also extends to the process of engineering software, in other words designing a process that makes it easier and faster to write stable software that does what it is intended to. Of course, in order for tools, or processes to do any good, they have to be used, and must be designed and implemented in such a way that they actually make life easier for the person using them.
My home computer has been running some flavor of *nix since 1990, first Xenix, then in early 1994 I installed Linux. In the past seven years I have learned most of the basics of system administration. While I am not looking for a career as a system administrator, I would be interested in contracting in system administration. I recognize that as junior level system administrator I would not command the rates that I earn as a senior software engineer, but I feel that the experience would be worth it.
Discussing my College Sr. Project gave me an idea for what my ideal job would be:
Developing an Assymetric Multi Processing Motherboard and Linux Kernel. Since
the kernel does not do anything that requires floating point math, or very much
processing power for that matter, by offloading the Interrupt handling, task
scheduling and other kernel tasks to an inexpensive master CPU, that could
free up more expensive CPUs from the overhead of all the context switches to
handle interrupts and kernel grunt work. It's my guess that $30 worth of hardware
for the master processor would free up far more than $30 worth of performance
on a $300 "workhorse" processor.
Back to the top.
Last Updated 09/26/00