

Ask HN: Would you consider this as a valid path to learn web development? - nicoschuele

Last week, I wrote what I believe is a very valid path to teach yourself web development, starting with no prior knowledge. It can be found on my blog here: http:&#x2F;&#x2F;bit.ly&#x2F;1246qMU<p>Do you think I missed something? What would you consider a newbie web developer should learn as well?<p>I plan on writing a follow-up with your inputs.
======
tyng
I just started down the path to learn web development a week ago (after
procrastinating it for years). My only prior programming experience was some
BASIC and Pascal lessons I took in primary school and a bit of self-taught
HTML.

I find codecademy.com to be a fun and well structured way to learn Python. To
me it may well replace the "Python for Kids" book recommended in your blog
post since codecademy is free and provides instant feedback on exercises (best
way to keep the motivation high!). After completing the codecademy course I'll
definitely get myself a proper book to learn the language in more depth.

One thing I'm struggling with is to find mini-projects that I can build and
practice with as I learn more codes. As a beginner I may come up with a mini-
project idea without realising how big the project can get to or the level of
skill is required. If you could suggest a few project ideas with incremental
difficulty as well as novel ways for a beginner to _think_ about programming
would be really helpful.

To me the most valuable part of your blog post was mapping out the Python >
SQL > HTML/CSS > framework learning path. This was another question I had in
mind ("what's next after Python?") because as a beginner I really had no big
picture view of what skills I need to acquire. So thanks heaps for writing up
the post and I look forward to reading your follow-up!

~~~
nicoschuele
Writing some example projects. Duly noted!

~~~
tyng
You the man!

------
nekopa
I liked the post (especially as I am a self trained programmer), but I think
it's a little simplistic, and a few areas are missing and the order could use
a little tweaking. Here are my suggestions:

1: HTML and CSS. I think this should be the first step. Simple static web
pages. Even if you write good code in python, how can you get it to show in a
web browser. Also a simple static page can be viewed from your hard drive in a
browser. But that is no good so it leads into the next point...

2: Webserver/stack. Now this could be as easy as installing something like
XAMPP or equivalents, or even installing apache, PHP, mysql etc. but here the
learner can start to see the problems even with moving their simple static
HTML pages to an actual server environment. And now they can start to make
their boring static pageeager interesting by looking into the next step...

3: Python/Databases. As you say, start programming, but I would link it with
databases. Again, a lot of ins and outs, and these can all be made easier
by...

4: Frameworks. Now jump into Django and maybe bootstrap too. By now they will
appreciate what the framework offers, and maybe have enough of a foundation to
be able to make smart decisions about each.

Just my input, and I think it's great you're putting together this idea.

~~~
nicoschuele
Thank you for your valuable input. Actually, I have thought a lot about the
order in which a total newbie should learn and my reasoning is this:

most of the people asking me how they should learn web development are asking
because they have an idea they'd like to complete. I think that anybody can
learn how to put an HTML page together and style it (at least, in a basic
way). It's not much harder than creating a complex Word document.

By introducing programming first, I wanted the newbie to be exposed as fast as
possible to 'real' programming (loops, branching statements, etc) because I
think not everybody has what it takes to do it (or understand it) properly.
The difficulty, in my opinion, is to get these concepts, together with basic
algorithms and OOP. If one can go through that, HTML, CSS and JavaScript won't
seem difficult at all and results will come quickly.

I also wrote this path with time in mind. Considering an adult with a day job
and other duties/activities. The idea and the reasoning is to be proficient
quick enough (not in two weeks but not in 3 years either). Therefore, I left
PHP out of the way. One can learn it at a later stage if needed. Same with
ASP.NET or Rails or whatever web technology available.

I also broke programming and databases in two sections. For an experienced
programmer, learning two languages at the same time can be easy (then again...
not always) but for a beginner, this can make a difference between 'I'm making
progresses' and 'there's too much to learn, I give up'.

Early in writing, I actually chose the same path you are proposing but I
tweaked it, peeling the difficulty layer by layer.

------
GnwbZHiU
"Writing HTML is NOT programming"

\- I'm in two minds about this.

"In the strict sense, a programming language is a way to issue instructions to
a computer".

\- That's not true. Strictly speaking, you are talking only about imperative
programming languages. There are other programming languages which are
declarative, you just declare the goals you want but not the instructions on
how to achieve the goals. Strictly speaking again, HTML & CSS are declarative
languages, that's why I can't decide whether it's true that writing HTML is
not programming.

"First of all, you will need to learn what programming means. This will be
done along learning your first language: Python."

\- But you are talking about learning web development, JavaScript is THE
language of the web (at least for now). So why Python? why not JavaScript?

~~~
nicoschuele
For the discussion on HTML being a programming language or not, I know there's
a war going on about it. My take is that except presentation, you can't
achieve anything with HTML. Especially not logic. But writing HTML is coding.
Not programming. See the difference?

About Python, I'm talking about becoming a web developer, not a web designer.
JavaScript is a front end language (and if you look in my recommended path, I
also say one must learn it and I provide sources to material in order to do
that). But first, I believe somebody needs to learn 'programming'. When it
comes to web development, a lot is done server-side (like for example,
database input/output operations) so Python is a very valid choice :-)

------
JohnSmith2013
I would say learning git/github should be the first step.

~~~
nicoschuele
Excellent idea! I didn't add any kind of source control learning material
(although that if you learn Django and deployment, you will encounter git).

