3 ms·
Ask HN: Would you consider this as a valid path to learn web development?
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://bit.ly/1246qMU
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.
- GnwbZHiU 13y ago"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 13y agoFor 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 13y agoI would say learning git/github should be the first step.
- nicoschuele 13y agoExcellent idea! I didn't add any kind of source control learning material (although that if you learn Django and deployment, you will encounter git).
- tyng 13y agoI 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 13y agoWriting some example projects. Duly noted!
- tyng 13y agoYou the man!
- nekopa 13y agoI 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 13y agoThank 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.