
Ask HN: How many have learned a language they hated just to get a job?  - mlLK
I'm an undergrad about to graduate here in December and I can't express how frustrated I am 'weeding through' all the .NET, C#, ColdFusion, J2EE, ASP jobs within 25 miles, not only on the obvious job boards, but on my School's Engineering job board as well.<p>I could very well be looking in all the wrong places (openings within my commute), but if I can't find an opportunity I can properly invest my talents with while working along side other developers/designers than going to sink my time learning a language I'll probably end up hating.
======
makecheck
Learning a language you hate takes you very close to hating the entire job,
which is no way to work. Never settle for that, life is too short.

Keep working on side projects that _do_ interest you, and make them public, so
that it's always easy to show prospective employers what you can really do.
Spend your time boosting your skills and having fun, even if your first actual
income comes from something completely different, like mowing lawns.

One thing about programming is that it can be done from anywhere; try applying
for a job that's outside your local area, and see if there are any that allow
remote work. Some companies won't offer this unless you have years of
experience, but some might do it anyway; it all depends on how good they think
you are.

------
d0m
I just wanted to tell you that what you've learn in other languages are
usually usable in many languages, even if it's not standard procedure. For
instance, with C++, you can use Boost and use foreach with a (kind-of) lambda.
It's not a real closure, but still, my point is that don't dismiss things of
your favorite language when you need to use other ones.

I remember implementing a genetic algorithm in C++.. I used a functional way
of doing it and it turned out to be a real pleasure. I even made it multi-
threaded using a STL-like threading library which encouraged a functionnal
style.

And also, don't forget, by learning new language, it will make you a better
programmer, period. There are also way more than "programming" in a software
job.

Communication between developpers, Communication with the client, designing a
robust system, etc. Implementing in your not-so-favorite language might only
be a small pourcent of the real job.

That was my 5 cents on the subject :p

~~~
strlen
Okay, this comment will sound trollish, but that's not my intent. I am not an
C++ advocate by any stretch of imagination and I presently program in Java for
living (and certainly like my job). Note, however, I am also speaking of in
the context of professional programming, not open source projects/communities.

I tend to find that C++ jobs and the C++ developer community is usually (key
word being usually, not always or even "almost always") more pleasant than the
Java and even dynamic language jobs and communities.

I'd guess first reason is that C++ isn't very useful when you're doing simple
work (such as data base driven websites, although it's certainly possible
e.g., okcupid). The sort of projects where _only_ C or C++ make sense tend to
just be more interesting (embedded, systems programming, high performance/low
latency computing).

As it isn't an easy language, it takes more motivation than just money to
learn it when there are other choices on the market. It's difficult for all
the wrong reasons: not because it introduces powerful concepts like Lisp and
ML-family languages do (which take time and effort to learn and understand),
but because of complexities of manual memory management (especially if your
dev organization doesn't like boost::shared_ptr and boost::scoped_ptr),
inadequate standard libraries (stl and boost are nice -- again, if your dev
organization allows you to use them -- but you almost always have to go beyond
them and build your own data structures), etc... However as a result of the
difficulty barrier, people who program in it tend to be smart and passionate
and are more likely to write tools in Python and Perl and learn Haskell in
their free time.

Additionally, when the PHB mandates C++, he can appeal to the developers'
favourite (and most dangerous) indulgence: premature optimization instead of
telling the truth ("I don't want to get fired if I screw up, so I am going
with Industry Best Practices"). I've seen organizations go Perl to C++ and
OCaml+Scheme to C++. There would be discontent, but there usually wouldn't be
an exodus. I've never seen companies go Perl to Java or C++ to Java without an
exodus of developers (either _before_ the switch, allowing the switch to
happen, or _after_ , caused by the switch).

------
brainlock
Maybe a bit late, but here is my experience.

At the end of the job search I had to choose among two companies. One was
developing in python, the other in php. At first I felt inclined towards the
python-based one, mainly because of my taste in programming languages. I had
sweared to myself I wouldn't do java, asp or php, and like you I was
disappointed at the fact that the vast majority of job offers required those
languages.

After getting to know both, however, I ended up going to the php-based
company.

I realised that what I actually dislike of java & co., more than the languages
themselves, is the mindset that the people pushing them _often_ have. Mind
you, often, not always. And that was the key.

The people at my company started this project about 10 years ago, and at the
time php was the natural choice. They're not the old-aged, process oriented,
boring, enterprise-y. They're agile, quick, creative, curious. We use git,
introduced and extremely cool release management strategy, started a new
project in python, moved a lot of the functionality on the client (on the
browser), and so far even the work on the php backend has been a lot of fun
(~1 year into this job).

I'd say the key factor is: do they have a hacking mindset or a process-
enterprise mindset? With the right people php can be fun too :-)

~~~
pilif
and of course: Do they play UT2004? And how much being made fun of would you
have to endure for having to retype that obscure command in your ubuntu
terminal just to get the Alt-modifier key to work again.

And don't get me started about averages...

Glad to have you with us :-)

<? if ('1foobar' == 1) echo " _sigh_ "; ?>

------
dkarl
If you don't like the idea of uprooting yourself to find a job, you'd better
move to a big tech area _now_. Don't put down roots in a place where your
every career decision will be compromised by the lack of opportunities.
Eventually some local downturn will force you to uproot yourself anyway, and
all your career sacrifices will be for nothing. Just move to a huge tech hub
right away, and then you can feel (relatively) comfortable putting down roots.

------
cperciva
On my CV I have "Languages used: C, sh, perl, awk, Maple, x86 assembly"
immediately followed by "Languages NOT used: C++, Java, Erlang, Haskell,
Python, Ruby, PHP, C#". I'm sure it has resulted in me not being offered some
jobs, but I'm not sure if it has cost me any jobs _which I might have
considered accepting_.

Don't ask what languages are being widely used. Ask first what jobs/companies
you're interested in; then find out what languages they require.

~~~
bravura
Please don't take this question the wrong way, but what kind of programming
jobs do you usually take?

~~~
cperciva
My expertise is in computational algorithms, cryptography, and security; I
sometimes wander into numerical analysis or data compression. I don't do
_programming_ per se; but it's a tool at my disposal when a research or design
problem requires it.

I'm not looking for a full-time job right now (I'm working on Tarsnap) but I
do occasional consulting in the areas which interest me.

~~~
GeneralMaximus
Do you actually _hate_ the languages listed under "Not Used", or do you just
find them useless for the kind of work you do?

~~~
cperciva
I dislike those languages, in part because I find them unnecessary for my
purposes, and in part because I hate their fanatical adherents.

------
waterlesscloud
Thesis- hating a language is a mark of a good but not great developer.

Hating the sort of work a language is usually used for is something different,
however.

Perl is the one exception, of course. All right-thinking humans hate perl.

~~~
gtani
point : in your enterprisey java/.NET shop, you can play with clojure, scala,
F#, groovy, j/iron Ruby/python, axum. Fun stuff. Write tests, build tools,
analytics. if you get called on it, you can argue it takes less time to write
support structure code in __, and you're a busy guy.

~~~
strlen
I'd love to see Perl6 released. By incorporating first order content free
grammers, it could the same for CFGS that Perl did for regexes. That would be
world changing.

As for PHP: structured, clean PHP (written by people with an education and
development experience in other languages) looks like Java. So why not just
use Java: you get better performance (without having to compile it to C++) and
access to great libraries. Of course, now that you're on the JVM you might as
well start using better languages (Scala, Clojure, JRuby), which to operations
look like just another jar/war file.

------
yourabi
Think about moving after graduation.

If you hate your job it will seep into other aspects of your life. Life is too
short for that.

Go out and find your adventure.

------
zavulon
I feel your pain. For my first "big corporate" programming job, I had to do
PowerBuilder development. Coming from Java/C++ background, it was like hell on
Earth.

I stuck around though, did PB for a while, and 2 months later a Java position
opened up, which turned out to be great.

So - I wouldn't get too caught up in that, but YMMV

------
strlen
I wouldn't worry about the language bits (as long as it isn't something
entirely brain rotting like ColdFusion, ASP, PHP or COBOL), as much as by the
fact they all seem like the usual enterprisey "read text from a database
display it on a screen" jobs. A CRUD app in Ruby or Python is certainly a lot
more fun to build than in Java (and most importantly, easier to maintain and
modify), but it's still a CRUD app.

I'd suggest looking into a different geographic area, joining a _technology_
company (which produces a software product; serious Internet companies fall
under that umbrella).

I'd recommend high-traction, well funded start-ups that have been around the
block (with _serious_ technical identities); big tech companies like Amazon,
Google, Microsoft or Yahoo are a good bet too: they solve very interesting
problems and are willing to mentor you. Yes, they typically use various forms
of blub for _production_ code. However, no one will object to you writing a
prototype in Python (or an IDL->code translator in OCaml), and you'll be able
to pick up skills that are rare and meet serious hackers.

The reason I don't recommend smaller start-ups is that their goals aren't
always aligned with yours: your goal is to build up the skills needed to solve
big, interesting problems; depending on the founders, investors and the market
the goal of a start-up might be to make _any_ product, even if there isn't
much technical skill (for you) to be gained by building that product.

Knowing something others don't know (it could be machine learning, search,
compiler construction, systems programming, numerical analysis, etc...) means
you're not a commodity. If you're not a commodity, you're much more likely to
be allowed to use non-commodity tools (e.g., start a pilot project in Python,
Erlang or Haskell instead of Java or C++, or start adding Scala modules to an
existing Java application). It also means better pay in the long term, but you
should _not_ use pay as a yard-stick when deciding on your first job: an MBA-
type "founder" might be really desperate for you to a web app for him, but a
software company is making an investment in you.

Edit: see the comment from cperciva -- if you have skills (in his case
security and mathematics, from his FreeBSD and academic work) that others
don't, you can find ways to use tools that you enjoy using: either by finding
a workplace which uses these tools or having enough "clout" to introduce those
tools to other companies.

------
vital101
I very nearly learned C# just so I get could a job in my geographical area.
Turns out, if I was a bit flexible there were a lot of jobs out there doing
the PHP development that I really enjoy.

Don't make too many compromises though. Learning a language that you don't
like is going a bit too far to get a job I think.

------
gte910h
You're looking on the wrong job boards most likely. I almost never see any of
those languages where I end up seeing jobs.

Try looking at meetups (which allow job posts), job postings advertisements on
programming sites, etc instead.

------
abstractbill
I've learned a bunch of languages while working at justin.tv, and have
disliked each of them to some degree. Think of it as the price of admission to
being able to do interesting things.

------
bcrescimanno
By not broadening your skill set and opening yourself up to opportunities
using the languages you've listed, you are seriously limiting the scope of
your job search anywhere. Don't let the "big buzz" on the web fool you, the
majority of developers are holding jobs in shops that use Java, C, and C++.

That said, take the advice of people here and don't constrain yourself
locally. You're at a perfect time in your life to be free and go wherever to
find the work you really want. Take advantage of that freedom!

------
noodle
my advice would be to simply apply to any job that you think you might be
interested in, regardless of the language. most entry level positions have an
expectation of a learning curve.

submit a cover letter that states how quick you are at learning new things and
how you're willing to put time into learning their chosen language before you
arrive.

for most companies, entry level hires are about picking up the talent, not the
experience. demonstrate your talent and drive and you'll have a decent chance.

thats how i got my job, at least.

~~~
strlen
The only thing to avoid are companies that don't care about developer talent.
Their goal isn't to grow talent, they want to find someone who will jump right
in and meet their business needs (no more, but also no less) -- and when they
leave, can be easily be replaced. That's why they're using these technologies:
they can just look for somebody who knows Struts 1.4, Oracle and Spring (or
w/e) (and these people are plentiful).

That's not to say they don't care about _any_ talent: it's just software
development is neither their core competency nor a competitive advantage. They
may have great pay and hours (and may be doing something great for the world),
but if you're a programmer because you love programming, you should go (at
least for your first job) to an employer that will invest in you.

~~~
noodle
best to avoid, perhaps, but even if you do throw them a resume, they won't
interview you because you don't have the skill set. so, doesn't matter too
much in the end.

------
etherael
ColdFusion was the big one, I hate the language with a white hot passion now,
no job is ever worth the abomination of learning that steaming pile of
garbage.

To a lesser extent, C# I ended up learning only because a side project was in
desperate need of more coders. I didn't like it much but nowhere near as bad
as CF.

And lesser still, Java proper the language rather than the environment. I
don't much like it but I totally forgive it because of the JVM and all the
excellent other languages that run on top of it.

------
ax0n
I generally despise development. I can "program" (make small tools, scripts,
etc) but I don't have the "developer mindset"

I learned PHP and MySQL to get a promotion when my boss was considering hiring
from outside the company. I generally don't hate PHP -- in fact, these days, I
rather like it -- but I did have to do something I was averse to in order to
land a job.

------
shib71
Programmers these days.

In my day we programmed in Java and liked it. ASP was the GOOD web programming
language. We had to code up hill in both directions...

But seriously, there are good and bad points to every language. Sometimes I
think the willingness to just love the good and work around the bad is half of
being a really good developer.

------
btilly
My first programming job was in VB 3.0. It was a horrible and awful experience
at a churn and burn consultancy, but it was a job and gave me a chance to make
connections, learn Perl, and get a better job that I liked much more.

If you don't have any experience you should accept that your first job is
going to suck in some ways. I would suggest not worrying about the quality of
the company or environment so much as the presence of opportunities to do
different things, grow, and move on. Which you _will_ do at some point.

And in this market, being picky is particularly unadviseable. :-(

~~~
strlen
I'd actually suggest being picky about the first job. Reason for that is that
once you're younger, companies are investing in you. Once you're older, they
expect a return on that investment.

However, I'd suggest being picky not about the language used, but about the
difficulty/challenge/"hard-core" feeling of the position. Pick the company
that had the toughest interview questions (don't even consider one that
doesn't ask you to write code on the whiteboard!), uses technology that is the
most challenging (rather than simply complex), solves the most difficult
problems and is willing to let you work on a team solving those problems
(rather than assigning you to e.g., QA).

It's always harder to go "easy->tough" than "tough->easy". I'd hire a systems
programmer to write web applications (if that's indeed what he wanted to do),
but I'd be hard pressed to hire a web developer to do systems programming
(unless he had open source work to show for it).

Additionally, right or wrong certain large companies prefer work this way:
they hire new grads from the outside for junior positions and then hire
internally (i.e., promote) for _core_ senior positions. They will,
occasionally hire someone with experience from a comparable large company for
a senior position (after a difficult interview), but they won't hire someone
coming from a start-up for a senior and _core_ (i.e., software engineer vs.
QA) position. The argument is that large companies have certain processes and
challenges which are unique to them and don't occur in start-ups.

They also won't hire an experienced person for a junior position, knowing they
(statistically speaking) won't be motivated enough while earning lower pay to
advance through the ranks to fill a senior role.

So if you'd like to work in certain places (e.g., you want to be at IBM
Research) it's _much easier_ to get your foot in the door as a new graduate.

I would say, there's may be a period of 2-4 years from "get your last degree"
to "seen as damaged goods by big corp". In practice this means, you can try a
particularly interesting start-up right out of college _or_ (if you feel your
career is going nowhere), go back for a Masters and make yourself a "college
hire" again.

It's not fair and there are exceptions (I'd imagine Google generally ignores
various big-company anti-patterns in hiring, although they're still seen as
"favouring new grads" by ignoring experience), but it's a possible consequence
of choices one makes.

~~~
btilly
Interesting. Everything you say runs directly counter to my experience.
However I've also never worked at the kind of large company that you're
talking about.

With one exception. My first job involved consulting at Bristol-Myers Squibb.
The result of that was that for some time I was unable to enjoy Dilbert
cartoons because the wounds were too raw. They were true.

Based on that experience I wouldn't _want_ to work for that kind of large
corporation. Luckily tech tends to be filled with young companies that grew up
with very different cultures, so I've never again had to suffer through that
kind of dysfunctional culture.

------
astrec
I've never learned a language I've hated to get a job, but I've learned to
hate many languages (or at least aspects thereof).

 _Learned_ being the operative word.

At this point in your career you'd be well served to learn idiomatic blub a
few times over, in the same way you'll be well served to work with a variety
of personality types.

When the time comes for your next venture, be it in 6 months, or 6 years,
you'll make a better decision i.e. grounded in understanding, about each.

Rinse; repeat.

Edit:

I'm not suggesting you take just any old job, however. Be discerning.

------
klodolph
I learned "corporate" to get a job. It's comes with a huge collection of
bizarre operators with baffling precedence rules and a template library that
spews out errors to rival C++ STL circa 1999. It also changes, my most recent
job introduced me to the "cloud" type which got everyone excited but then we
learned it causes segfaults whenever it interacts with the standard "security"
classes, and suddenly I'm managing two separate platforms.

------
adn37
I've learnt Java (J2SE). I have an embedded systems background. Hated it at
first (lack of possibilities vs C/C++), but in the long run there are
benefits. Frustrations are still there and the fun is limited (no risk, no
fun), but you can work your way out. Brainwashing yourself is option #1.

I still enjoy working on side projects too, with the tools I like (web dev,
PHP MVC...).

------
bmcleod
I would suggest that the correct thing to do at that point is to move
somewhere with a better tech community in the languages you do like.

I moved(without having and commercial experience behind me) to a more
technical city just as I was finishing Uni and managed to find a much better
job with much better coworkers than I could have had in my starting city quite
quickly.

------
windsurfer
I never "hated" Perl, but I only learned how to use it because I heard it was
pretty useful. It grew on me and I now love it.

~~~
kmak
Perl was my first language, and my progress suffered as a result. Don't get me
wrong, I love Perl and use it for things, and while there are many ways to do
things, most of the ways are fairly awful, and I had to go through many
iterations of writing the same code to now at least be somewhat confident.
Probably as a first language it would've been nice to be forced to be clean
initially! Perl allowed me to get away with so much..

------
pragmatic
So you don't want to work with .NET or Java or ColdFusion or ASP (classic ASP
3.0?). What do you want to work with?

------
TeHCrAzY
How can you hate any language until you have spent the time to learn and
understand it?

~~~
strlen
> How can you hate any language until you have spent the time to learn and
> understand it?

There's also a risk that if you don't know a popular, but bad languages (or at
least take time to understand why people call it bad, rather than just read
what other people have said), you won't know to avoid other languages built
along the same lines.

Also, while a language _overall_ might be unpleasant, it can still teach you
new concepts. I had to be dragged screaming and kicking away from Perl and C++
into Java. However, Java has got me thinking "if only there was a garbage
collected statically typed language with a good concurrency/threading story
that wasn't as verbose, had first class functions and (optionally) did some
form of MI/mixins". That thought lead me onto Scala, OCaml and (once I have
some free cycles) Haskell.

------
jey
Get a job somewhere with cooler jobs? Like the SF Bay? Seems like the obvious
fix.

~~~
strlen
Or Seattle, WA or Boston, MA. Additionally Austin, TX and Portland, OR.

Honestly, Bay Area (and especially San Francisco proper, rather than Silicon
Valley) do suffer from too many "widget" start-ups, which should be viewed as
media companies, solving social problems -- _not_ technology companies. New
York and LA start-ups tend to be even worse in that respect.

When I visited Boston, I noticed the start-up scene had a more of a "hard-core
tech" feel to it. I saw purely technology start-ups. The people calling
themselves entrepreneurs were _engineers_, not marketers and project/product
managers (as is often the case in Bay Area; note: that's not to say PMs and
markets aren't important!). There was more "ZFS vs. btrfs" talk and less
"agile lean customer development start-up" talk.

~~~
jey
There's plenty of real tech in the SF Bay -- you just have to have enough
sense to look for it since, yes, the signal-to-noise ratio in SF is a lot
worse than other tech areas.

~~~
strlen
Not implying there isn't. Quantitatively, there is likely still more real tech
in Bay Area than anywhere else. I am in Bay Area and likely not going anywhere
:-) It's the signal-to-noise ratio can be distracting and upsetting for
somebody new. I've seen lots of smart young technologists waste away
implementing a "business guy's" vision and (after three-four years of nothing
but web development) end up unhappy, but with few other career options.

------
fisadev
JavaScript is my hated-needed

------
fizx
Where do you live?

