Should I quit or continue?
November 22, 2009 6:46 PM   Subscribe

Requesting advice with my career in computer science. Briefly, should I stay or should I go?

I love what I do (compsci research, heavily engineering/coding based). I started programming at 13, growing up in EAfrica where I had access to information and tools but no guidance. This meant I had to find my own way through which made me quite tenacious.

At 18, I moved to the UK and did an ugrad in compsci in a mediocre university that aims to churn out mid-level sw engineering types. I did quite well and chose to do a PhD purely because I wanted to learn more about compsci. The net result of this was that (1) I realised that I "get" compsci enough that things make sense (2) that I love lower level stuff (kernels, hpervisors, hardware, systems, etc) (3) that I love to code and love technology (4) I seem to possess a great amount of tenacity at actually getting things working.

However, it also made me absolutely come to terms with my limits. While I can most "do" anything in my field, I find it takes me longer than my peers, my progress is not as quick and while I have some natural ability and affinity it pales in comparison to the other people I work with who are very, *very* good. Across the board I find the people who excel in my field and area seem to have much more natural talent and this translates to more rapid progress and output quicker (sometimes by up to a factor of 5-6). I've also realized that while I can recognize and apply good/clever ideas and understand their impetus, I lack that little bit extra in being able to actually generate the ideas. This leaves me feeling slow, dumb, unworthy and frustrated. It eats away at me a lot.

My top career goal would be to contribute to changing computer science (e.g. a new compression algorithm) or be involved in creating a technology or mechanism that does (c.f. software virtualization in the early 2000s). Half of me thinks I should just trudge on and continue to do what I do as slowly as I do it and I might at some point make this happen. The other half of me just wants to quit and go and do something else, i.e. make a comfortable life for myself -- do more than keep on dreaming and making miniscule progress hoping I can make a contribution.

I absolutely understand that natural ability is inborn and that such people are few and far between (and such mavericks are certainly necessary for the advancement of any field), I'm not aspiring to be one. I'm just wondering, is it possible to make a difference by wanting to make a difference *really* badly and continuing to soldier (hobble?) along? I'd appreciate any personal experiences to help me put this into better perspective.
posted by gadha to Grab Bag (6 answers total) 3 users marked this as a favorite
When you're young in a field like CS, all you see are the mountain climbers: the people that scaled high peaks of innovation that no one had even thought of. But most computer scientists, even distinguished researchers, are actually road builders, building the foundations that allow everyone to travel through the mountains. Forgive the analogy, but a mentor of mine (a math phd that quit that field because he knew he would never climb mountains) told it to me once wistfully, saying that if he had realized how much of a contribution you could make as "just" a road builder, he may never have left math for the world of software.
The odds of you being a mountain climber are pretty low. But that does not mean that you cannot make a meaningful contribution to the field of study. You are incredibly unlikely to come up with a new amazing compression algorithm or the new direction that computing will take, but it is entirely possible that you could lay the foundations for better models of security in cloud computing, for example, and it is on the backs of the hard workers that the field really advances.

Ok, now, having said all of that, I can't leave without getting a ding in on CS academia. You can soldier on in academia and make contributions, or you can go out in the world and make possibly even more meaningful contributions and also a decent salary. That is the amazing beauty of CS, and in fact, I do believe that sometimes it is easier to make meaningful innovations outside of academia when you're working in the heart of the real (vs theoretical) problem. Don't leave academia just because you're unlikely to make a brilliant advance in the field, but don't stay because you think it is the only place you can make a difference.
posted by ch1x0r at 7:09 PM on November 22, 2009 [4 favorites]

Like ch1x0r says, a lot of the interesting (to me) work in CS is outside of academia, for example in search and open-source development. So it's definitely not either/or for you. Figure out which environment you'll thrive in and enjoy, and make contributions from there.
posted by zippy at 7:29 PM on November 22, 2009

I once heard Ed Lazowska say something to the effect that, although he was rarely the smartest of his peers, he was more successful because the ability to work hard meant a lot more than brilliance -- especially in systems. I'd guess he'd say "soldier[ing] along" would absolutely be worthwhile.

But I wouldn't spend too much time worrying about whether you'll revolutionize your field. A lot of extraordinarily smart and capable people never do so (see ch1x0r's comment). The real question is this: do you love research? If you do, then you're probably in the right place. If not, it might be time to move on.
posted by Serf at 7:36 PM on November 22, 2009 [1 favorite]

My boyfriend's a software engineer. He's also a slow coder but his projects are cleverly designed, well thought out, well documented, and they pass test first time. This is valuable and his company loves him. He loves solving puzzles and fixing problems too and has a job where he gets to do that (creating business solutions) so he's happy even though many software guys would consider what he does unglamorous. Slow doesn't mean anything as long as what you make is good, and amazingly creative ideas are useless if they're implemented badly.

So I don't think you need to leave CS at all. But you probably should stop comparing yourself with those around you and instead focus on what you're good at and what you love, then build yourself a career doing that. It may mean changing to a different area in CS (e.g. changing research groups, leaving academia) or tweaking what you're currently doing, I don't know enough about the field to tell. Maybe try networking a little more widely, talking to people doing different things with CS, see what's out there. You definitely have a lot going for you though, hard work, attention to detail and tenacity are important parts of research and that part where you love your work and really understand what you're doing is extra awesomeness.
posted by shelleycat at 8:52 PM on November 22, 2009

Oh I should also add that my boyfriend has gotten faster over the years, eventually, practise does really make a difference. So even the slowness stuff isn't going to dog you forever.
posted by shelleycat at 8:54 PM on November 22, 2009

I would suggest that you make it a career goal to work for some enterprise that values your unique skill set. Maybe something like the OSS division of some large company like IBM or Google. Consider that your skill set is one that would be of value to a well-constructed team. Let the fast-and-easy folks churn out the bulk, and give them (and you) the luxury of assigning some difficult problem to you to work through at your own pace?

Or perhaps some organization that values quality over quantity. Some dev shop making websites and apps for volume customers probably wouldn't value the keep-going-until-you-get-it-perfect work ethic, but a place where simplicity, elegance and near-perfection are much more valuable than speed. Like maybe a company that makes automation tools? Car/plane/rocketship control devices? Medical devices?

Or to put it a different way, I'd suggest looking at career options where the computer science is the product, not a back-end cost of overhead. A bank, for example, doesn't really care if the code is perfect, only that it works. If it is slow, its cheaper to add more hardware than it is to pay someone to optimize. Where places like the above, where quality is the deliverable, may well need someone like you.

(I'm having the same sort of problem in my career. I was a computer engineering student, and realized I hated it. I just wanted to fix stuff. I found a job that I loved, and slowly, the realities of the computer-as-appliance mindset is making my skill set less valuable. What's the point of paying me two hours of labor to fix something that only costs a couple hundred bucks? It sucks.)
posted by gjc at 5:41 AM on November 23, 2009

« Older Remember print magazines?   |   Help me find a Simpsons screensaver I remember... Newer »
This thread is closed to new comments.