
What are the minimum things I need to know to become a successful web developer? - behnamoh
Every time I want to begin learning WebDev, I hear all about HTML, CSS, JS, Python, Ruby, Java, ASP.NET, SQL, ...<p>What makes me frightened is that each of those has multiple variations, frameworks, libraries, idioms and best practices, etc.<p>For example, JS in Front-end has so many frameworks, and in the Back-end it has Node.js runtime and other stuff as well.<p>My question is: What are the minimum things required to learn in order to become a successful web developer (preferably freelancing)?
======
davelnewton
HTML, CSS, and JS.

That said, it depends on what kind of web developer you want to be. Simple
sites require simple skills. Complex sites demand complex skills.

Sites for some companies require skills that fit into that company's
ecosystem.

If you're freelancing you'll also need to be able to do design and UX work,
and communicate that design work to the client. This is harder than you may be
aware of.

If you want a maintainable, highly-interactive site, you'll likely want to
focus on a particular framework. Which one is largely arbitrary--they all have
good and bad points. Despite current trends you can go a long way with a
relatively small skillset, but again: it depends entirely on what the site
requirements are.

It's also worth pointing out there's ES5 vs ES6. Most modern sites are using
ES6 and transpiling to ES5 via Babel. This introduces a lot of complexity
(e.g., Babel, Webpack, or equivalents). If you're doing a lot of JS dev you'll
probably also want to look at npm or yarn and node so you can re-use JS
libraries others have created.

Much of what you mention are back-end skills, e.g., if you want to save data
off the browser. Sometimes that's unnecessary and you can keep all the data
locally. There are many ways to do this.

If you want any sort of collaboration, access control, etc. you'll likely want
something on the server side. That's when databases (RDBMS, NoSQL, etc) come
in to play. You don't _strictly_ need to know SQL, but you'll want to know at
least the basics. E.g., Rails has a layer that abstracts simple SQL away, but
when things go wrong, or you need something non-trivial, you'll be sad if you
don't have a handle on it. The NoSQL story is similar: you can abstract it
away, but you still need to understand how things work.

Back-end languages abound. If you want to keep the language-itself learning
curve down you could stick with JS via NodeJS. But there's stuff to learn
there as well, primarily its asynchronous nature (you'll have the same issues
on the client side, but not necessarily as deep, depending on what you're
doing). I'd argue that when starting out, NodeJS on the back end isn't the
greatest choice, but that's preference. Rails has great tutorials and it's
easy to stand something up--but comes with its own set of tradeoffs.

I could go on, but won't bother. This is an incredibly broad question. There
are reasons why there are hundreds of books covering the answers.

~~~
behnamoh
I must thank you for your thorough answer. It really helped. I guess there
needs to be a book about WebDev roadmap. Most books I see on the Internet
cover specific sets of skills, only few give a better big picture and a
general understanding of state-of-the-art technologies used in modern
websites.

~~~
davelnewton
The books that cover JS-heavy dev cover most of what you need on the client
side. Back- and front-end dev is quite different; a book that covered them all
is probably a bit heavy.

