According to the recruiters who came to my school, software development at Microsoft gets done by three disciplines working together: Program Managers, Software Development Engineers, and Software Development Engineers in Test.
Program Managers, they're quick to point out, are not "managers" in the banging-the-secretary sense of the word. They're nobody's boss; they manage projects, not people. Making sure the schedule is up to date, coordinating with other teams, etc. In other words, all the stuff us coders don't like to do, these guys get done.
SDETs are the quality-control. Just because there's a separate "testing" discipline doesn't mean developers churn out buggy-ass code and have someone else clean it up. We're still reasonably sure everything's working as we intend it when we hand it off to test. But what if you've got multiple applications open, and our application is the one in the back, and
this dialog is open, and you mouse over
that button? Is it clickable? Yes, it is, and no, it's not supposed to be. Who's OCD enough to even think of
trying that? And how much time per day can you stand to sit and
think of things like that? Five hundred million
monkeys customers banging on their keyboards would have found it. And so did our SDET.
I was hired as a Software Development Engineer. I shape the program's behavior to my will. From an empty code file, I create Something out of Nothing. I imagine that an Edge from an alternate reality where I'm a Program Manager would call me a "code monkey".
My point is that it takes different kinds of people to make a project work, and theoretically we were all hired to do the type of work that we prefer to do. I couldn't do a PM's job, and as much as I wanted to work for a
bona fide Software Giant, if they'd offered me a job as an SDET I've have turned it down. I don't want to pick things apart; I want to
create.
My first assignment was to see what happens when we introduce X; find and fix all the problems that show up. Next, help out on project Y by writing some unit tests. In other words, first I had to go on a bug scavenger hunt through the most poorly documented codebase I've ever seen, only changing a line or two here and there to smooth out the rough edges where it interacted with the new technology. Then I had to churn out code to put someone else's code through the paces in the most monotonous way possible. I've been there for six months and I haven't
made anything yet! I auditioned for a Broadway show, and somehow wound up as a stagehand. My morale is low, and my productivity is keeping pace with my enthusiasm.
As for what I'm doing to move myself out of the rut, next week I'm adding improv lessons to my list of things I do outside of work. I was improving twice a week in New York, and I miss it. Hopefully an improved social life will make a less than stellar work life more tolerable.
Keep on keeping on,
Edge