
Ask HN: What is the minimum level of experience needed for a web developer? - ruswick
Hi HN. I've been doing web development for a while now, and consider myself to have a moderate amount of skill. However, after months of looking for an internship, I had very little luck, and was turned down for every paid and most every unpaid internship I applied for. I can't imagine how difficult it must be to get an actual job in web development. The problem is that most listings provide very little in the way of requirements, and look for "ninjas" or "rockstars" and want "a background" in certain things, but hese terms are ambiguous and hard to interpret, and I often don't know what they expect. When you are hiring web developers or interns, what do you look for and what are your minimum requirements of their skill set?
======
eriksean
Many smaller shops will hire you based on what you have done, not your years
of experience or eduction - build something with a database, admin area, front
end.

It doesn't have to be beautiful but it should be functional. If you can have
done this, you can find a job. We've been hiring for six months in Minneapolis
and I've lost track of the number of candidates who don't understand SQL
injection, password hashing, MVC and other web development basics. I've even
had two who couldn't write the simplest of programs (think FizzBuzz. Actually
I gave one of them, literally, FizzBuzz. )

I can't speak to interns but I expect web developers, even entry level ones to
be able to:

    
    
        * Slice a PSD into HTML/CSS 
        * Build a site with a MVC framework
        * Write SQL without an ORM.  
        * Write SQL with an ORM.
        * Be able to implement pre-written jQuery plug-ins
        * Be able to write custom jQuery plug-ins
    

If they can write javascript without a framework, thats a bonus. If they
understand design patterns, thats a bigger bonus.

------
rogerbinns
When doing hiring I want to see evidence that you are a web developer. Acronym
soups on a resume are irrelevant by themselves since everyone does that. Quite
simply you need to have a portfolio that substantiates your list of acronyms.
You can bet I will do a view source and view network traffic on it.

What is important to me is also that developers communicate well. In an
interview I put them in front of the whiteboard to explain something they
claim to know well from their resume, looking at the communication.

You could do that sort of thing in advance by writing a series of blog
postings, for example showing how you came up with the top level design and
implemented one of your portfolio items.

Attention to detail also matters and is a strong signalling mechanism. For
example your text above has a spelling error that is picked up in Firefox and
Chrome.

~~~
mustefaj
Honestly, if a spelling error picked up by a browser casts a negative shadow,
or reflects an inability to pay attention to detail... sigh.

~~~
aasarava
Why sigh? Spell check is free and ubiquitous in this day and age. If someone
is writing to a potential employer and overlooks that squiggly red line
telling them something is potentially wrong, why should I believe they won't
also misspell a variable, use = instead of ==, or overlook important compiler
warnings?

~~~
rogerbinns
Not to mention this example is in your face. For most attention to detail
issues there isn't an obvious red squiggly - instead you actually have to pay
attention to detail.

------
snowwrestler
Folks looking for web development work in the U.S., and are willing to move,
should do some job searches in the Washington, DC area. There is a major
demand in particular for Drupal developers, as more and more cabinet agencies
and trade associations are switching to that CMS. But in general open-source
web dev is booming. It seems like almost every large dev shop and PR agency
I've talked to (and I talk to lots of them) are hiring developers right now.

------
actsasbuffoon
When I interview potential co-workers, I usually have a few criteria. In order
of importance:

First is personality/culture fit. We don't have to be BFFs, but I need to know
that you can get along with the rest of the team. If I hire you, I'm going to
have to work with you for the next few years. My ideal team member is smart,
respectful, and can take a joke. Can you disagree with people respectfully?
Can you admit when you're wrong? Even more importantly, can you tell me when
I'm wrong?

Second is willingness to learn. In a given year we might start out building a
Rails app, switch to another project building an Ember app, write a backend
service in Java, then finish off the year with an iOS app. I don't expect you
to know how to do all of those things, but I need you to be willing (and
excited) to learn a new technology when the need arises.

Third, and this is a somewhat distant third, is all the stuff I told you I
needed in the job listing. Most of the stuff that I claimed to need is
actually negotiable, even if it didn't sound negotiable in the ad. I'd sooner
hire someone a bit more junior than I'd like if they surpass expectations on
the first two criteria.

Don't worry too much about the job listing. Get in there and scedule an
interview. What's the worst thing that can happen? It's not like they're going
to stab you because they wanted someone with more experience.

Your best bet is to make some friends in the software development community.
Find out where the nearest user group or meetup is taking place. Chat with
some people, make a few friends. A lot of them will have leads on a job,
whether you're looking for contract work or full-time. Maybe their company is
hiring, or they've got a friend who needs a junior developer. Maybe they're
fully booked with consulting work and they can toss you a contract from their
backlog.

I've gotten more jobs given to me by friends and past co-workers than I can
even begin to recall. Just remember to return the favor. When a job offer
comes in that you don't have the capacity to handle, pass it on to a friend.

------
nkeating
Learn by doing. Make a profile on something like Elance, convince 1 person to
pay you (dirt-cheap, will take 20+ bids) to build a basic site. Start with
wordpress and move up, gradually increasing you skills, prices, and clients.

------
tectonic
Should me examples of your own work that you're passionate about. Simple as
that.

~~~
slurgfest
Insofar as you are speaking as someone who does hiring, it might help people
if you give an idea of your 'grading rubric' for work someone is passionate
about.

I am personally interested in what you really mean by 'passionate.' This is
one of those words which is used very vaguely...

------
zalew
maybe tell us what your skills are, so someone can point you in the right
direction.

~~~
ruswick
Most of what I've learned has been out of necessity because I'm building
something. My strongest suits are CSS3, HTML, JS. My current internship is
working exclusively with these. I know JQuery to a moderate extent, but I tend
not to use it if at all possible: most of it is more easily replicable in CSS
or is less efficient than pure JS. I haven't had a reason to learn Rails yet.
I took a brief look at it, but the whole thing looks monolithic and seems like
overkill in many cases. I use Sinatra for most of my web apps. I've use Redis
and Mongo for dbs, and am trying to take a stab at learning Postgres. I also
know Ruby. My knowledge of system administration extends to deploying a Rack
app on Heroku.

~~~
zalew
If I undestood well what you are trying to say, your comment about jquery and
css is a bit worrying, because it implies you think jquery is a visual effects
library, while it's much more than that and by avoiding it you are probably
just missing the point of using it. DOM manipulation fax exceeds stuff that is
considered a cool effect you can replicate with css3. Maybe you just worded it
badly, but even if, it still doesn't look good.

The above can be one reason why you probably missed _some_ internships, but
nothing is lost. If you want to progress you should refocus a bit on acquiring
more general knowledge about, well, how sausage is made, and from there take a
path towards the stuff you really want to do. I'm not implying you don't know
any of this, just saying that "My strongest suits are CSS3, HTML, JS" isn't a
great selling point for a hire, and from my personal experience with people I
had to work with on projects, coders that market themselves as 'html/css guys'
aren't really that great at actually helping me build websites. Why, you ask?
Because working strictly on decorating front-end doesn't give you the
experience of how products are developped in the long term, and it really
narrows your point of view on about what you should expect to happen in the
process (I'd have some horror stories to share, but that's not the point right
now). Second, if I asked you why you used mongo or redis, and why you don't
know sql, would you know how to answer so I don't think you just grabbed the
latest tech of the week popularity contest winner? Maybe you would, but you
should get my point by now - your description of the stuff you can do is weak.

You will have more success when you'll be able to convince with certain
truthfulness that you know the basics of how web software works, how certain
technologies interact with each other, that you have experience with tools,
and that you'll be a helpful pair of hands willing to learn and not an
obstacle - selling as a css magician just doesn't do that. To get experience,
you probably need that awesome internship, but to get that internship, you
have to convince your employee that you have done your homework.

Before you are a rails-sinatra-ruby-mongo-redis-jquery programmer who prefers
tech A over tech B because X and Y, you are a programmer. Are you? If yes,
tell it. If not, start working on being one.

> My current internship is working exclusively with these

Tell them you'd like to expand your experience. Ask them to move you to work a
bit closer to the backend guys if it's possible. Even if it doesn't happen
right now, they will know you want to progress and not just sit there.

------
omgmog
Being self taught, and now being in my second full-time position which has
only been a progression upwards (in terms of skills gained/used and salary), I
guess I could tell you what worked for me as a front-end developer.

I was fortunate in that my first job came to me, but that was only because I
had a portfolio online and I had put it out there on linkedin, Twitter,
various job sites, etc. My second job was posted on Google Groups, and I
reached out to them to apply for the position. I got the job, and I'm happy
where I am ever since.

Have evidence of your skills -- be it an online portfolio, some code examples
that you can explain/demonstrate, or evidence of contributions to projects and
a working knowledge of the technologies you need.

Have evidence that you're able to deliver -- it's okay to be working on your
own website on and off for six months, but in the 'real world' there are
deadlines. Have some evidence that you're able to work to deadlines.

Be passionate about the kind of work you're wanting to get in to. -- If you're
not working on your own projects outside of work, you're not passionate. This
isn't just a job to pay the bills.

Specialise - There's no benefit to being 'okay' across the board, nobody will
take that seriously. Any good company/startup with an idea for the position
they're trying to fill will want a specific set of skills. I went from being a
'web designer' in my previous job (which was a broad term that encompassed
anything from creating HTML emails, resizing images, writing jQuery, fixing
cross-browser bugs, writing batch scripts to parse xml/xslt with saxon,
writing bespoke PHP/MySQL applications, etc.) to being a 'front-end developer'
in my current job (which means I'm focussing more on css/html/javascript,
championing these areas in the application/website the company is building,
being the 'go to' guy for queries regarding these areas, working with designs
designed by a designer, and working with a back-end/processes put together by
our back-end developers).

Be able to demonstrate or put across that you're able to work well, and work
well within a team.

Besides that, I'd say some basic skills for a front-end developer are:

\- able to craft valid HTML

\- know your way around CSS quirks and how to fix them, especially cross-
browser quirks.

\- write well-formatted code

\- be familiar with CMS/templating engines. If you're familiar with variables,
condition statements and for-loops in one language, you should be able to pick
up most templating engines.

\- know your software and be able to justify your reasons for using it over
other software

\- know the major browsers.

A lot of teams these days are using Agile/Scrum methodology for development,
so having some understanding or working experience of using Agile might be
useful depending on the job you're going in to.

Don't worry if you don't have all of the skills necessary for a job, in many
cases not understanding a specific library/language isn't an issue providing
you have some equivalent understanding of another language and are able to
learn. Some personal examples:

\- in previous job I hadn't used XSLT at all before starting there, but I had
an extensive knowledge of PHP/Wordpress templating, so getting used to the
syntax of XSLT wasn't very hard, and I picked it up in a week.

\- in current job, I had no prior experience with Django but again using
similar templating languages in the past helped and I've had no problems.
(Also for some side projects such as my personal blog, I use Jekyll which uses
liquid-tags similar to Django templates, so that skill has improved/carried
over)

------
Tangaroa
I'm in the same place as you. I've been trying to break into web development
for over a decade. The only thing that worked was to accidentally walk through
the wrong door and have a chat with people who, it turns out, were looking for
a web developer. After finishing the project and coming away with a good
reference, I still don't have enough experience to get into the few entry-
level web development positions that exist, let alone the more common senior
positions. There are too few openings and too many competitors.

Putting myself in the position of a recruiter, I would expect any web
developer to know the names of the five major browsers, how to use the w3c
validator and why, when to use different image formats and how to optimize
them, some CSS, how CGI works, enough jquery to select an element, and a
server-side scripting language, and to have once sniffed an HTTP connection to
see what was happening. The better class of web developers at the entry level
might know why to use SCP instead of FTP, common web security concerns, how to
build a page that uses Javascript but does not require it, shell scripting,
system administration, web server administration, what a SQL join does, how
HTTPS works, how DNS works, how TCP/IP works, and a development framework or
two.

~~~
noahc
I'm not trying to be rude, or condescending, but if you've been trying to
break into web development for over a decade you're doing something wrong. It
could be that you haven't learned how to get hired.

I am convinced, I could take someone with no experience, but could pass the
test mentioned here[1] and give them assignments every week and in six months
they could get a decent programming job.

[1][http://www.codinghorror.com/blog/2006/07/separating-
programm...](http://www.codinghorror.com/blog/2006/07/separating-programming-
sheep-from-non-programming-goats.html)

~~~
slurgfest
If you aren't really good in the interview and you don't have a lot of
experience on paper then it is really immaterial how skilled you are because
nobody is going to actually test that.

------
nerdfiles
1\. Information Architecture

2\. Developing Modular or Social Code (OOP techniques for a wide range of tech
stacks/languages, SCM; git, SASS, LESS, e-mail inliner tools, etc.)

3\. Execution of a Design [markup thinking (HTML, etc.), presentation
organisation (CSS)]

4\. Frameworks [etc.]

5\. Optimization and Browsers [JS, SPDY, HTTP, etc.]

6\. Documentation and Authorship of... [take a logic class]

7\. Research [finding the right tools, knowing which tools are relevant]

8\. Interaction and Games [I mean really, we're already talking about hooking
up links to events in games like WOW. So, yes, even a designer needs to
understand why he or she is providing error message alternatives in mock-up.]

9\. Working with Humans [Humans often are not within cognitive or linguistic
capacity to express sincerely what they want when it comes to complex
interactions between data or programmatic objects. It takes serious effort to
develop actionable content from phone calls or meetings, which can be
incredibly impromptu. Social setting, dispositional factors, intentful
listening, dialectics, etc. should be considered.]

