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
iman | 12-Mar-08 at 9:21 am | Permalink
hi …
“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.” :
.(excuse me if i’m wrong about you)
and i think , this is why you always do your projects from scratch
” after all, the pointy haired boos is only a stupid user who gets to tell you what to do”
this is the most terrible experience i’ve ever had.( and i don’t know what to do with these situations)
ahf | 12-Mar-08 at 5:41 pm | Permalink
aaah… I have the exact same feeling when I teach.. the worst feeling in a class is when you feel the students do not care about the subject and its not important for them, actually I think any student can be helped, whether slow, dumb, with lack of background or …. but I do not know of any solutions for the Ignorant ones who don’t have the motivations. How to inject motivation I guess would be my biggest question. I’d admire anybody with any solutions :).
It just seems so funny for me to visualize you as a system admin, kind of seems like “Mike Tyson becoming a karate judge for girls under 12 years old !”
hadi | 12-Mar-08 at 8:24 pm | Permalink
One of the reasons I came to PishroSamaneh, was that I thought there are some great people (specially you) from whom I can learn
But unfortunately, We miss you so much there.
MatGill | 13-Mar-08 at 9:28 am | Permalink
I’ll write more soon. For now, I notified Ehsan that you’ve been biting his back in here
So expect a visit soon
MatGill | 13-Mar-08 at 9:49 am | Permalink
It’s 2:03 am. I have a class tomorrow. Guess what? Damn glibc update on ubuntu hardy was broken. System crashed like hell! I had to start from live CD and then install with dpkg in the most unusual way ever:
cp –parents `dpkg -L libc6 | xargs` \mnt\x
Okay enough of that. Very interesting post. I’ll probably write something like that in my own blog soon. But for now, I just wanted to say that we share exactly the same dream job! I mean the last one you mentioned. As a matter of fact I was doing something like that for a very short period of time (while getting paid). However, as far as the money is _not_ concerned, I’ve been doing that for about 4 years, or maybe more. Even now I occasionally get emails from desperate people looking for help, trying to solve a bug in their code or looking for a solution to a problem. In fact most of my friends describe me as the “last hope” when they have these “now what” type of problems. The only problem is that once you are the “one” (because there is only one of those the “one”’s, huh?) then when you run into problems, my God have mercy on your soul. Gee I hate those moments (which happened quite often).
Anyhow, I think I’m going to have somewhat the same or similar future as that of Ehsaan. However, I force myself to write simple worthless pieces of C++ and Java code every once in while just not to get stuck with a totally dumb scripting language like Matlab. Damn Matlab! Damn it!
MatGill | 13-Mar-08 at 9:54 am | Permalink
Was I sounding too fond of myself? Even if that’s the case, sometimes it’s good to be frank about your thoughts.