Sunday, October 04, 2009

What I do with about 25% of my life

Sometimes people ask "what do you DO as a software engineer?" (not often. it's not really sexy or really confusing. but it's a little of both, and sometimes people are trying to make conversation.)

Well, it's about 25% coding, 25% organization, and 25% looking stuff up.

Coding: this is "doing things." Ever take a programming class? it's kind of like that. I'm writing mostly java code to put little buttons on pages or deal with objects and save them to databases or call other services and stuff. Sometimes it's a little complex, but the real codey code is nothing that you couldn't learn in a year in college. This, incidentally, is the fun part. This is the part where I (like every engineer) am a wizard! Where entire worlds flow forth from my fingertips like Zeus's lightning! Where I merely cough and mountains of data get processed into pudding! Where I make furniture fly and books flap in your face like that haunted room in Poltergeist! It's a real kick when I actually get to write code.

Organization: this is "doing things right". There's a million ways to sort a list, say, but half of them are horribly slow. And you wouldn't even know it until you tried it on a list of a million things. You could also call this "software engineering". Knowing which algorithms or data structures to use when, knowing what will be easier to reuse in the future, structuring your code so it's easy to read, making tradeoffs for speed and efficiency. This is a thing I almost never learned in school. Or maybe they alluded to it in some classes (like "you should really write unit tests", say) but we never actually worked on it. And it is kind of fun.

Looking things up: this is "figuring out how to do things". It's a weird job where, if you don't know how to do something, the answer is "google it." (or maybe that's not so weird anymore.) Sometimes it's "I need to understand this concept" (like asynchronous RPC's or dependency injection); this is sometimes kind of fun because I feel like I'm "leveling up" every time I can do a new thing. Sometimes it's "argh what is this thing called, I know what I need I just don't know the exact syntax" and that is not fun at all. One could argue that my quibbling here is BS: if I don't know the exact syntax, I don't actually know the thing. You don't actually know something until you implement it. This is the same school that advocates actual writing code during job interviews. I think I partially agree. (Looking Things Up is still boring though.)

And maybe 25% is just overhead/meetings/tech talks/etc. So it goes.

And this is why working on my own projects is fun too, because it's a different balance. At work, everyone's done all the easy parts, and we have to polish a lot around the edges. When I'm coding on my own, I can just put on my welding goggles and call forth a firestorm of code. But the cool part about the Organization and the Looking Things Up is that it gives me new spells in my spellbook, so next time I want to do a side project, I can cast a friggin' meteor swarm instead of just a magic missile.

Add it all up, it is a pretty good deal. And I have the jitters from summoning fiery code demons today and yesterday. Boy am I tired.

No comments: