|What do you think is your biggest weakness? Your greatest strength?|
|What are you looking for in a job?|
|Employer Info Home|
I love to think. I love building stuff. I've been building stuff since I was very young, when I and my younger brother (who's now at Intel designing their next-next-generation microprocessor) used to build things out of legos (he still does!). The computer is, to me, by far the coolest medium for creation and artistic expression that has ever existed. I discovered this when I was 12 and took a (very) BASIC programming class in summer school (subroutines weren't covered...too "advanced"!). Ever since then, I've been writing computer programs, first video games and utility programs (as a hobby), and then all nature of things in college and at various jobs. I'm completely self-taught; I learned sophisticated BASIC, sound, graphics programming, and 6510 assembly language by reading the Commodore 64 Reference Guide (and asking my father questions on rare occasions). After that, everything else was easy... it was my senior year at RPI before I took a programming class again (Intro. to AI; I learned LISP; Way Cool!), because by the time I needed anything, I already knew about it (or I just looked it up). I also learned lots of formal stuff about algorithms in grad school. Operating systems were the same deal; at RPI, there were lots of different systems. I don't consider myself knowledgeable about operating system design or system administration per se, but I can get computers to do what I want. It seems like every project that I ever did, in school or out, was in a different development environment, on a different machine (except for the C64 and the original Macintosh, which we actually owned). I'm used to learning new ones as a matter of course.
Although you may think that, not having taken many actual classes, that I don't know much about good software design practice, that is definitely not the case. I believe that I have an extremely good understanding of the principles of good program design (modularity, re-usability, maintainability (including, of course, documentation!), Object Oriented Programming, and all that) because I know why we want to do all these things. From experience. Because when I was very young, I did a lot of them wrong, and came to the same conclusions on my own. None of it was a big surprise, because by the time I heard about "software engineering", I was already doing it. And trust me... after working on a military project, I've heard most everything on "Official Coding Practices". Both GE and the DoD have many a book on them.
So what the heck did I study at RPI? Electrical Engineering, because in high school the computer was just a magic black box, and I wanted to know how it worked. Now I know, and it seems to me that you use pretty much the same thought process as when you write software -- there are just occasional physical non-idealities thrown in. (And it takes a lot longer to build anything that actually does anything interesting!) I still enjoy building hardware projects (I made a really cool 200-LED patterned light display for my other brother's high school rock band, right after I graduated, just for kicks), and I'm really glad I know how the gadgets work, but I've concluded that programming computer systems is more fun than building them. Your designs can do more. It's nice to know the hardware so you can throw on some interesting peripherals, though...
Besides design, one of the skills that I think I am particularly strong in is debugging: the art of recognizing a problem, isolating it, and fixing it. It's definitely an art and a matter of experience, and I've had lots of experience debugging both software and digital hardware. Not only have I had to debug all of my own projects (no, I don't generally write perfect code the very first time, though I think I do pretty well), but I also spent a good deal of time at GE isolating problems (sometimes highly subtle and intermittent problems) in the system that were caused by faults in vendor-supplied firmware. (After paying $25K each for mil-spec communications boards, you wouldn't think that we'd have to send them back to the vendor for firmware upgrades five times!) On top of this, I was also a Lab TA at RPI for two years, where a large part of my duties consisted of helping students whenever they were completely stuck debugging their digital logic and/or assembly code. By now I'm even pretty good at understanding other people's computer code, even when it's not documented properly (or at all). Mind you, I still don't particularly like debugging other people's stuff (I'd much rather be writing my own code, of course), and it is still a very difficult thing. I'll bet I'm at least as good as most other people at it, though.
Since I'm talking about strengths, I should also mention weeknesses. I don't work quickly. (Ask me about my greatest strength and weakness). I am extremely focussed, which is great for doing the thing that I'm focussing on very well -- but I sometimes don't notice the world around me at all. I can also only focus on one thing at a time; to use operating systems analogies, I can't parallel process. (And I'm not great at short-period multi-tasking, either.) Lastly, I'm not really good at many of the little details of personal interaction (I'm lousy with people's names, for example). Over the long term I work with people very well, (ask me about working with people) but I have little in the way of "charisma" that charms people at the outset.
Other random things that I'm proud of and that might interest you: I have an incredible attention span. I've been known both to code and to play 8-player board games (specifically, Avalon Hill Civilization) for sixteen hours straight, with barely a break for food. I almost never get sick. I've never taken a single sick day since high school (where I think I took one or two). I have excellent self discipline; I missed something like five classes in my entire undergraduate career (three because of job interviews, and two because I forgot about daylight savings time). During my first three years of college, I never failed to turn an assignment in on time (though I cut it close quite a lot! I'm not as good as my brother, who doesn't even procrastinate. He's scary). I slipped a bit during grad school, but then, I didn't have any solid deadlines to meet then, either... I was working on my own project at my own pace, and loving it. Once I was given hard deadlines again at DDC, though, I rose to the challenge; all my projects were done when they needed to be. (Ask me about aggressive schedules.) Lastly, as well as being strong in engineering, I think I could also have done very well in "liberal arts", if I had cared to (maybe better). I've A'ced every non-technical course I've ever taken, usually without much effort (I can't say that about my math grades!).
If you were somewhat disappointed in my answer to this question and wanted to hear more about what I do for fun, well, designing stuff is probably the single thing that I think is the most fun. Creativity, artistic endeavor, and all that. I think it's still art, even if my media are not the classical ones. But, indeed, man cannot live on art alone. If you want to hear about my social side, ask me "Do you actually have a life? What do you do in your spare time?"