
Ask HN: how do you deal with the job skills chicken-and-egg problem? - brosephius
say I want to break into internet startup world, but my programming skills are currently confined to desktop dev. many job listings I've looked at want experienced software engineers that can build highly scalable web sites. how exactly do I build these skills without actually having a web site that has millions of visitors? and how do I demonstrate these skills to a potential employer? it seems like I can't get the job without the experience, and I can't get the experience without the job :P
======
fleitz
Scaling each website is different, after you get the low hanging fruit (cache
control, output caching, gzip ), it's a matter of investigating where your
load is and reducing it. This means profilers, debuggers, etc. It's a process
not a product, however most people think it's a product.

It's easier to integrate a bunch of products than convince someone that their
approach to solving the problem is wrong.

The scalability issues most sites have are that of attracting users. Since no
one knows how to scale it, and it probably doesn't have any REAL scalability
issues what I would do is in your current position unnecessarily add things to
whatever you manage to help it scale. Scalability always sells well to
management so it should be easy to get approval.

What you then want to do is google "website scalability" and add something
like memcached or output caching / adding cache control headers to your site.
You'll want to pick whatever is popular as whoever is interviewing you for
will think you know what you're talking about when they google for "website
scalability" and see a list of the same technologies. Also, the various
language camps have their preferred solutions, so you'll want to pick
technologies to integrate that will mesh with whatever language you want to
get a job in. Don't worry whether it is the preferred solution for your
current language camp.

Also, you'll want to use some kind of load testing framework inappropriately
to load test your site. Get caching working properly, then run apachebench
<yoursite.com/mainpage> Take however many users you have and the current
requests per second and then multiply to get the new number of users your site
scales to. ((curUsers / curReqPerSec) * newReqPerSec) = newUsers. Use that
number on your resume / to management when you declare success.

When you actually get the job, use Google Chrome to test your site, attach a
profiler to your webserver and profile it to see what actually takes the
longest. (Make that thing take less time) Also, read about human perceptions
of load time so that the site appears fast even though it isn't.

------
keeptrying
Build something. If no one will give you a project then give yourself one. If
you want a rails job then:

1\. build a rails website and put it out there. It doesnt need users just
great functionality with no bugs. Thats impressive.

2\. contribute to open source. These guys wont let you commit till you get
good enough and when they do its the best resume you can get for a coding job.

Just get off your ass and build something.

------
byoung2
I have a degree in English, and until a few years ago, I had no "real" web
development experience. I have done web design as a hobby since 1998, but
companies want to see experience at other companies, not just your own sites.
Here's what I did:

2006: Formed my own web design company and built a portfolio

2007: Used the strength of my portfolio to get a freelance gig at a startup

2008: Used the experience working at a startup to get a job at a medium-sized
company ($6 million/year revenue)

2009: Used the experience at the medium sized company to get a job at a bigger
company ($30 million/year revenue)

At my current job, I work on several sites with millions of unique visitors
and I've learned a lot about scalability that I'll use in my own projects or
at future jobs.

If you're in Los Angeles, we're always hiring.

------
cperciva
If nobody else will hire you, hire yourself.

------
nostrademons
Teach yourself skills that companies with huge web sites value, parlay that
into a job at one, and then learn all you can while you're there.

I went into Java desktop apps when I got out of college, mostly because I'd
done Java desktop apps before I went into college. After about 8 months of
that, I realized there was no future in Java desktop apps. So I started
hanging around the interaction/web designer at my company, got him to teach me
some CSS and JavaScript, supplemented it by reading voraciously, and got on a
web project at my employer. (I wasn't exactly a complete web newbie
either...I'd done a fairly major PHP app in college, but I viewed that as a
technology dead-end that I didn't want to get into.)

My employer's technology stack was a dead end too, so I quit to found a
JavaScript gaming startup. The startup died, but in the process I learned more
JavaScript than I ever imagined I would. It was enough to get into Google.

Once you're at Google, you'll learn all about building highly scalable web
sites. I work on search, one of the most highly trafficked web sites out
there. I think this focus on scalability is rather silly, though - I'd rather
learn about machine learning and data mining while I'm here, because those are
the skills that can open up big new startup ideas for you.

------
codingthewheel
Never be daunted by job-posting lingo. Half the purpose of that lingo is to
rule out people who are uncomfortable with the terms. Learn a popular web
development framework and start building. Today. With or without a job.

Then parlay that into your interview process. Do NOT get hung up on "gee, I
have no idea how to scale to ~1 million users." Almost nobody entering web dev
for the first time knows how to do this. Many who've been doing web-related
work for _years_ don't know how to do this. Scalability is just one aspect of
web dev and for a majority of projects (corporate IT projects with 1 - 100
users) it's a complete non-issue. Nevertheless, they might still say
"experience building scalable web applications". Do NOT let this stop you from
interviewing.

You have one huge advantage while seeking a job in web dev as opposed to the
desktop world: your work is immediately visible to anybody in the world. Every
website you build is a portfolio piece. And if you can discuss these in the
interview, and communicate above all your enthusiasm for the work, you'll get
the job. Somewhere.

Good luck!

------
JayNeely
Take internships. Even if they're unpaid. This may not be popular advice, and
you do need to watch out for internships that are truly exploitative, but many
small startups simply have limited resources, and are looking for people who
_want_ to make the experience instead of pay tradeoff.

Ability to learn and solve problems will be more important for these positions
than previous experience.

Also, _n_ thing the advice of work on your own projects. If you can't think of
an original problem you'd like to solve, choose a web app you really like and
try to recreate your own version of it. The main thing is to have a complete
goal, like "Learn how to build a site with Rails that shows me graphs of a
user's twitter network's activity", not "Learn Rails".

------
zafka
I guess this would be a really good time to build your own web site. If you
are really serious, get a few old computers and serve your own site. You could
then simulate high traffic in the comfort of your own intranet.

------
imp
I got my current web dev job by building my own website in my spare time. I
don't have a CS degree or any other programming experience besides what I
built. If you want those skills, go out and get them!

