Jobs

This is not about Steve Jobs. It’s about my jobs. You see, I’ve been working as a software developer for about 9 years. I got my first job in the spring of 1999. I’ve worked as a freelance programmer, as a team lead, as a senior programmer, as a senior programmer and the CEO of the company, as a consultant, as a teacher, and as an overseeing project manager.
My teaching jobs have been, I’m sorry to say, boring. The reason for that is probably either the subjects I’ve taught (Assembly language, C++ programming, algorithmic problem solving, computer graphics, digital logic circuits, etc.) or me or the students. I’m partial to option four: me and the students. I’ve yet to have a class where the students are really passionate about the subject, and know or care more than I do. There has been exceptions, but they have been small (in numbers and in duration.) I feel like I have been teaching the wrong stuff to the wrong people. That’s why I slowly lost interest and I haven’t had a class that could be called that in about two years now.
The only non-programming-related job I’ve ever had - it was running a company - I totally FUBARed (hint: the UBAR stands for “Up Beyond All Repair”. You figure out the F!)
My programming jobs haven’t been perfect either (from the execution standpoint) but I think the problems in them weren’t because of my lack of technical skills. In fact, I have never worked with an individual who was clearly better than I in most of the programming-related areas.
Now, don’t get me wrong. This is not praise of my mighty skills. And I have worked with at least half a dozen brilliant people who were at least as good as I was, and probably better, but not so much so that I could know that they would always come up with a better answer than I. Again to clarify, I’m not talking about skills in project management, software design, vision, etc. I’m talking about sitting behind a computer and producing elegant, high-quality code that gets some job done. I have had several coworkers that were my peers, and I could go to them and we would sort a problem out together, but never someone who I could look up to as a mentor, and would answer my questions with insights and logic that would have been beyond me. Someone who would give me an answer, and I would mull over it for a few minutes/hours/days and then suddenly go “Aha!” and find out something entirely new. I need a programmer equivalent of Yoda!
I had a teacher like that once. Her name was Ms. Karimpour, a middle-aged woman who didn’t even have a PhD, and I attended her Advanced Programming (C++) classes back in 2001. Most of the programming I know, she taught me indirectly. The amount of C++ she taught me was not huge, but the amount of right attitude I picked up in her class was enormous.
To be fair, I don’t think I’ve ever been a good mentor to anyone either. I have worked with many people who’ve been in the beginning of the road and had potential, but I either bored them away by all the stupid detail I just had to try and cram in their heads, or they thought too much of themselves to accept a “padawan” role, or they simply didn’t thought programming was so exciting a trade to be worth investing almost a lifetime in.
As I said, I have worked with some great people. It might be great to work with a real Jedi master, but working with someone around your own level or a little better, with mostly overlapping knowledge but different thinking patterns have it’s great advantages too. Programming-wise, I’ve only worked with one or two such individuals, the prominent one currently studying to get his PhD, therefore, there’s absolutely no hope of him ever writing any more real code, ever. (I’m really disappointed, Ehsan! I know that’s out of your fear! And I know that you never read my blog so I can write whatever I want about you!)
But of course, not all one needs to learn is programming. I used to believe it was enough until I worked with Farzam for a few months.
I guess I’m a very bad coworker myself. I assume I’m always right, and everyone is either wrong or only correct by accident. I’m a perfectionist, who seldom does the perfect thing himself. As a result, I nag a lot. I have no problem with sharing what I know, absolutely no problem, but if the receiving person doesn’t learn what she should, I won’t waste my time anymore by explaining everything the next time. Maybe I give up on people too easily, I don’t know.

I wrote all that blabber to say that I’ve never worked as a sysadmin, or resident IT support person. I think I’m good at it. I know enough about computers and networks (as a user and programmer) to be able to extrapolate more knowledge or at least know where to look for more. And I think I’m good at handling PEBCAK-type problems (the user syndrome!) I think it’s a less stressful job that can even be fun, and leave me enough time to actually have a life (note that by having a life, I mean spending more time with computers and do my own projects!) When it comes to devising rules and regulations, I’m even better than your average, tea-mongering, job-skipping bureaucrat! I can write a booklet with 6 chapters, 100 items and 60 footnotes about how to organize your Windows desktop!
You see, one thing I’m good at is short jobs (a few hours max.) That’s why I usually botch up software projects, because they are long, even open-ended. That’s why I’m not good at long-term research and academic work. I think a sysadmin’s job is composed of a series of small tasks: install this, upgrade that, evaluate this other one, audit and regulate the bandwidth use, write some scripts to automate these jobs, etc. etc. Of course, if you are a sysadmin in a large corporation with a few hundred or more employees, then this won’t be the case, but I’m not talking about that.
One big hazard of this line of work is the “pointy haired boss”. As a programmer, you mostly deal with other programmers, and if you are lucky, few others. A sysadmin works directly with mostly bad users (stupid, apathetic or ignorant) and pointy haired bosses. I told you I can handle users, and I think I can handle idiot bosses too. I think I can understand what drives both of them (after all, the pointy haired boss is only a stupid user who gets to tell you what to do.) This doesn’t mean I suffer them or tolerate them, but I can at least sympathize with them while I tell them sharply that they are idiots!

Another dream job of mine is as the resident programming guru. One that doesn’t participate in any project and only helps out with specific programming problems; the low-level “how”s, and never “what”s or “when”s. This really is a dream, since I’ve never heard of such a job in the business.

So, if you looking for someone for either of the above jobs to offer, drop me a line!

Printer-friendly version Printer-friendly version