

Ask HN: What are the essential skills for a web developer? - ahmedaly

Well,
I am PHP developer already, but I feel that I still miss some skills and knowledge.<p>Can you list a skills, languages, and tools that I should learn to be the perfect web developer.. for open source?
======
seasoup
What does be a web developer for open source mean?

To be a web developer you should have knowledge of html, css, javascript, and
ajax.

You should understand table-based vs. css-based coding patterns. Cross browser
issues, gzipping, js minification (yui, jsmin, closure), css minification, js
and css file concatenation and why, learn a js library or two or three. Also
learn sprites, and how forms work.

You need to really, really learn javascript. Prototypical Object Oriented
development, after you know and understand it, then feel free to insult it (or
love it).

Know which is quicker innerHTML or node creation and insertion (trick
question!). Learn javascript development patterns. contribute to a javascript
library.

json, json is very important.

There's a scattershot off the top of my head.

------
vida
It's an interesting question. Here's my (admittedly incomplete) laundry list:

* You should know (really really know) one language - preferably one conducive to writing web applications. PHP, Python, Ruby, Java and _.NET seem to be the ones in vogue today. Perl, Haskell, Scheme, Smalltalk, as well as several others, will absolutely work too, but tooling seem to be somewhat a step behind, at least when compared w/ the ones in the first group.

_ You should know Javascript. Not jQuery, Prototype, or MooTools. You should
know web_developer.prototype.javascript.

* You should have great communication skills. Arguably, the ability to clearly and eloquently express yourself is sine qua non for (being successful at) doing pretty much anything that involves other people but, given that the bar seems to be considerably lower for us folks in traditionally left-brain professions, I feel obliged to mention it.

* You should have a knack for aesthetics, and be familiar w/ interface design and usability. You don't necessarily need to be able to produce aesthetically pleasing, usable anything, but you should be able to _know it when you see it_. And this is a lot less subjective than conventional wisdom would have you believe.

* You should have an understanding of how to store and retrieve data, what sort of operations are expensive when querying, and be able to model at least simple schemas.

* You should be able to write concise, uniform looking markup and css (or (and?) be familiar w/ the myriad use tools that can make this considerably easier for you).

* You should enjoy it.

Also Helpful:

* A background in Comp Sci will presumably give you some knowledge of design patterns (more helpful than algorithms for most web development work out there today, in my experience), a familiarity w/ different languages and general approaches, and the ability to write somewhat decoupled, modular, testable code amongst a few others.

* Being naturally curious, as well as enjoying it, will help you keep up with a fairly fast-evolving landscape of different standards, platforms and approaches.

------
jokull
You don't have to do everything. If you try to you will be overwhelmed and
unless you're a genius it will become demotivating if you think you have to
learn all of it.

Do you want to work on large or small jobs?

For large jobs you will need to know a lot about reliability, scalability and
sometimes performance. PHP or whatever language you work with is only a small
part of the puzzle.

For small jobs you will have to know the browser quite well (CSS,
JavaScript/JQuery).

------
taitems
Even as we move further away from the original JavaScript language with
libraries built upon it, I think a good understanding of how JavaScript works
allows you to work efficiently within them.

While it's possible to "learn" jQuery, it's a much less arduous process if you
already understand how JavaScript works on a core level.

------
ahmedaly
Hello, Thank you all for your answers!

I was asking about if I should learn frameworks like zend.. and if there is
any other new tools, or skills that I should learn.

Your answers helped me a lot, thank you all.

