| [tl;dr I'm looking for advice on how to spot an intellectually stimulating job] I'm a newly grad in CS who's doing part time work over the summer while searching for a job. Fortunately for me, the jobs aren't in demand - I am. This comes with the consequence though that there seem to be a lot of crap jobs out there, lots of people looking for experts in Java or .NET. I'd like some advice on how to spot a job that will actually foster my intellectual growth, and not keep me stuck using the same language/technology day in, day out. I want to be encouraged to learn new programming languages and technologies on the job (or at least for the job). I want to actually be using my computer science background (I know a lot of interviewers ask questions about algorithms, but how many jobs actually require this knowledge?). I don't want to be a glorified IT professional, and I really don't want to get stuck at some company lego-programming Java code, which is what I feel most of my non-academic work has accumulated to over the years. Maybe I'm being too harsh on myself, but its hard to be proud of my work when every 30 minutes I have to lookup an example or reference of some part of an API, and then modify it for my purposes. Maybe this is normal. I'd like to think that I'm smart and passionate, but of course its hard for me to judge. That said, I'm confident that with enough work, I'll be able to land a job at my ideal company. The trouble is, I don't really know where to look. For what I'm pursuing, what do you think are the best types of companies to look for. Will tech giants like Google, Apple, and Microsoft have what I'm looking for? Should I search for smaller companies to start with? What about start-ups, would this be a good idea for someone straight out of college? (note, I have no debt, and money isn't much of a concern to me... yet) Lets not forget industry either. Which industries do you think encourage what I'm looking for, and which will tend to stifle it? I'd like to hear your advice and learn about your experiences after college. Most of my hardcore experience is in Java, C, and C++, so advice on convincing employers that I can pick up other technologies quickly would be appreciated as well. Thanks. |
I've worked at 3 different companies and, compared to college coursework and projects, not a single one of these jobs has been intellectually stimulating for me. In fact, my first task at my first job was to document Java code created by foreign contractors. Most of the code was get/set functions for member variables. Nevertheless, there have been projects that I relished, but they have been few and far between.
Most of the work you do in college is individual work. It's completely the opposite in the working world. You have to work on a team of people, and your focus is building a product, not learning new things. This is not to say that you won't learn, but that aspect comes in a distant second to creating a working piece of software, on a schedule, that meets a business need.
My advice on keeping your intellectual needs met: do your brainy stuff outside of work. Work is not your muse; it's not your professor. Work pays the bills so you can live how you want outside of work.
At two jobs I was actually singled out and mocked for doing "advanced" things that had immediate positive effects on the business. Superiors and coworkers can feel threatened by a brainiac. Politicking isn't limited to the Beltway. These companies weren't exactly tech giants, but you'd probably find this situation is possible at any company. So being street smart is also a requirement. Don't showboat unnecessarily.
If you find a company that interests you, use your alumni association to find people who work there. Get in touch with them and ask them questions about what they do, what they like about the company, and what they don't like. Do some networking and research the work environment before you send a resume. It's very difficult to gauge a company from a job interview since it's a stressful situation and you're focused on presenting yourself as the ideal candidate.
Also consider jobs that aren't primarily tech-oriented, but permit you to use technology to do your job better. At a former company there was a sales guy who knew programming fairly well and he used it to streamline his processes. He was able to handle more clients more efficiently and he got promoted quickly. If there's something non-technical that you absolutely love, then taking a related job and applying tech to it might lead to interesting results.
As for start-ups vs. small companies vs. giants. It all depends on what you're comfortable with. Start-ups are risky but the atmosphere is generally pretty fun and they are often more open to using new technology and unorthodox methods. As companies get larger, the bureaucracy sets in and things become more about following a process than finding something that works. I'd recommend joining a start-up to any CS graduate, but do it before you settle down in life.