A comment I left on Steve Yegge's latest post:
Steve,
Are there software engineer jobs at Google that aren't so academic in nature?
For example, do the people who work on Gmail have to memorize all of that "baseline" stuff you listed?
Is there room for smart software engineers at Google who like working at a higher level?
I'm genuinely curious to hear your answer. Google seems like a great company to work for, but I'd sooner be bashed in the face with a sledgehammer than have to commit all of that low-level nastiness to memory.
Steve Yegge is one of my heroes, and I've had a fantasy of working at Google for several years, but I fear that we operate in two completely different worlds.
4 comments :
That low-level nastiness is probably not used in the course of many day-to-day Googlers' jobs, but it could be very important in determining a candidate's qualifications. It's good to know how something works under the hood. From my courses at GVSU I learned to program in assembly, could probably build my own calculator, and learned data structures that are all abstracted away from my daily use by frameworks. None of it has been a marketable still while looking for employment, but I value the knowledge. Google wants smart people, not code monkeys.
I--lazy bastard that I am--would probably never make the effort to study up on all that again to even apply at Google. At least now I know what I'd face there so I can save myself the embarrassment.
That is one thing I miss having in the real world, though. Very few of the problems are that interesting. It's mostly just designing databases to model some business requirement, not fundamental computer science. But, making actual money sure beats being a poor college student!
I'm beginning to think learning that academic stuff is more like a rite of passage or hazing ritual for most companies.
You have to demonstrate that you love programming enough to memorize reams of tedious and (mostly) irrelevant crap before you can be "one of us".
It's more about showing your commitment than learning practical information.
As someone who made his way in the industry without any formal training in the academic side and has had to pick up the academics piecemeal: I don't think I'd ever want to be forced to commit that stuff fully to memory, but I definitely think it's important to learn it when you get a chance and be able to swap it into main memory when the need arises. E.g. most of the time doing big-O analysis is irrelevant to writing pragmatic business software, but on the odd occasion where it's useful, you can short-circuit a whole lot of hand-waving stupidity with it.
P.S. Apparently blogger's OpenID auth is broken. Lame.
Avdi,
It's funny that you chose that example. I've often said that Big O is one of the few things I learned in my computer science courses in college that I still find relevant in my real-world programming.
I should add that if I ended up somehow in a job where some of these more academic topics were clearly important, I'd have no problem rising to the challenge and learning/re-learning them.
Post a Comment