Ask HN: Would you consider this as a valid path to learn web development?
Do you think I missed something? What would you consider a newbie web developer should learn as well?
I plan on writing a follow-up with your inputs.
Do you think I missed something? What would you consider a newbie web developer should learn as well?
I plan on writing a follow-up with your inputs.
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!
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.
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.
- 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?
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 :-)