

Ask HN: Advice for a newly grad, avoiding an intellectual rut. - misuse-permit

[tl;dr I'm looking for advice on how to spot an intellectually stimulating job]<p>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.<p>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 <i>for</i> the job). I want to actually be using my computer <i>science</i> background (I know a lot of interviewers ask questions about algorithms, but how many jobs actually require this knowledge?).<p>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.<p>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.<p>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?<p>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.
======
kd1220
I'm a CS graduate with 10 years in the field.

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.

------
gcheong
_"there seem to be a lot of crap jobs out there, lots of people looking for
experts in Java or .NET."_

Choice of language has little to do with whether or not the job will be
intellectually challenging or whether the company will provide opportunities
for you to grow your skills. There are a lot crap jobs in Java and .NET
because there a just a lot of jobs in those languages in general. So unless
you are keen on using a specific language I would try to be as language/tool
agnostic as possible. As to how you detect whether a job will foster your
intellectual growth, try asking some questions along those lines in your
interviews. For example:

"How far do you feel you have come in terms of your skills compared to when
you first started working here?"

"What was the most challenging thing you have gotten to work on here?"

As far as trying to convince employers that you can pick up whatever they are
using, my experience has been that employers asking for X years of experience
in Y are not likely to be convinced and the likely-hood of changing their
minds is probably proportional to the number of years they are asking for. So
look for employers emphasizing fundamental skills over particular technologies
because they already get it and it won't really be a question.

------
brudgers
> _"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"_

The time to invent something new is when it will take ten weeks to complete
your project using existing technology or five weeks using new technology and
it will take two weeks to develop the new technology.*

The wheel has already been invented, so there's no point in building your own
hexagonal version - focus instead on what is important: shipping.

* Credit to Neil Stephenson

------
athst
IMHO if you can work with a startup that is using technology you find
interesting, that would be the best thing - you'd get a lot more breadth of
experience and you'd have more of a chance to play with newer stuff. If you do
join a big company, like you mentioned, make sure it isn't one of those Java
shops where you wouldn't learn anything. I think that's a perfectly legitimate
thing to ask in an interview - what kind of technology you would have the
opportunity to work with.

------
adelevie
<http://card.io>, which seems like a _really_ cool company, is hiring:
<https://gist.github.com/821454/>. I'm guessing the Java and C skills would be
useful considering that 1) they're building SDKs for Android and 2) they're
doing heavy duty image processing.

Good luck!

------
ianterrell
You bring it to the job, not the other way around.

~~~
lhnz
Listen to this guy. If you let the job push you around you are the problem:
you must engage with others in your tribe and interest them in the tools and
techniques that you wish to use and learn. Even if the company is change
adverse over time they will listen to the value you bring.

That said, picking a company should have very little to do with their
technology stack and everything to do with the people that you work with. Find
out about them: (a) do you respect them? (b) are they intelligent? (c) are
they open-minded? (d) are they engaged in learning new things?

------
impendia
Consider grad school. I didn't regret it :)

