Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Learning the Web (developer.mozilla.org)
211 points by t-3-k on March 27, 2015 | hide | past | favorite | 45 comments


This looks like it will be a terrific resource for beginners and will help to fill in a lot of knowledge gaps. Beginners face a dizzying array of resources, opinions, languages. Knowing where to look, what to google, and even how to read the documentation is a skill set that can’t be underestimated.

I’ve come to appreciate how far up the “literacy” ladder software development is: Basic Literacy, Digital Literacy, Computational Thinking, Programming Languages… Those of us who’ve managed to speak the language, and to do so with any degree of fluency, are a relatively rare bunch. But I don’t believe for a moment that this stuff is “hard” to learn, so much as “inaccessible,” and therefore, exclusive. I like to compare the situation we have today to the scientific community in the 17th century, when Latin was the “language of science”. What’s the language of computer science? Well it’s Greek to the lay person (even if it is Ruby). Technical fields require a precision, but the net effect of all that jargon is just as dispossessing. Add to this the fact that software itself is invisible, compiled, minified, obfuscated, socked away on some corner of the internet, hiding behind a slick GUI, turtle turtles turtles all the way down, tea cups stacked, all the way up… It’s no wonder that it’s such a struggle to learn.

The flip side of all of this is an odd kind of colonialism 2.0, where our technology, with our QWERTY keyboards, and ASCII character sets, and the programming language itself are all spreading the English language like smallpox. But I digress.

Thank you MDN for the quality resources! It will be fun to see what happens if/when computational thinking really takes hold.


A good point overall, but I wonder if Mike Godwin would have anything to say about comparisons to smallpox :-)


Just a reminder that MDN is a wiki and thus a collaborative effort. Check out https://developer.mozilla.org/en-US/docs/MDN/Doc_status/Lear... if you want to help make the Learn section of MDN better!


I'm an advanced programmer, but I know very little about web programming in particular. Most web programming tutorials seem like they're designed for beginning programmers. Is there a resource designed for someone like me who already knows how to program and just wants to learn how to do it on the web?


Although it's still a bit aimed at beginning programers you might like Udacity's Web Dev course. I thought it was good. Taught by Steve Huffman who built Reddit. Python based.

https://www.udacity.com/course/cs253


This might be something for you:

https://www.railstutorial.org/book


I hate that resources on one topic are scattered everywhere, with no single path or centralized section, for example, from here https://developer.mozilla.org/en-US/Learn/CSS there is no path or easy way to get to another CSS resource on the site, like to this one: https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getti... .


MDN is a wiki. If you want to add a link from one page of MDN to another, you're welcome to do so.


"So why do we need variables? Well, variables are needed to do anything interesting in programming. If values couldn't change, then you wouldn't be able to do anything dynamic, like personalize a greeting message to the user visiting your site, or change the image displayed in an image gallery, etc." — from https://developer.mozilla.org/en-US/Learn/Getting_started_wi...

Well, I don't know much, but having only studied Haskell really, I know that statement above is nonsense. You don't need variables to change in order to do interesting things. You get the values from outside the program, you can then have them used in ways that don't have to have the same variable mutating all the time…


No, the statement isn't nonsense. If variables always had the same value and "never changed" in Haskell, they wouldn't be variables. They could be hard-coded literals.

You're just mistaking a claim about variables that change each time a program is run (which means they are initialized to a different value each time, whether mutable or immutable) vs. changing during the execution of a single run, which would require mutability.

The quote was referring to the former, not claiming that mutability is required.


The statement may not be nonsense, but it's certainly not at a level of detail required to be genuinely true.

Variables do always have the same value and never change in Haskell. They represent constant abstracted unknowns. That said, a lambda binder which introduces a variable can be applied repeatedly and therefore each independent time it's applied the body of it, where the abstraction occurs, is now understood to operate with a new value for that variable.

That's very different from change, though. The semantics of beta reduction clearly don't allow for change---merely substitution. The statics of it clearly demonstrate that even substitution isn't doing anything new---merely replacing like for like.

Even when your Haskell program responds to outside interaction---clearly, this is dynamic information, right?---it's still the same static artifact which is doing it. The variables at this point are all erased. It's merely the semantics of your program under outside intervention.


Not that quadrangle made that point, but a program written in point-free style could still exhibit dynamic behaviour.

Still not very constructive or relevant criticism on the page though.


This is sweet! Thanks Mozilla. I have waaaay too many things on my list that I want to learn, and I made a commitment to stop jumping around from one tutorial / site to another. So on the list it goes!


That page is pretty overwhelming. No real calls to action on it other than the suggested links on the main page. I can really see this page being too much information at once for a beginner. Maybe get rid of all the information between the end of the Note and the footer; it seems like you could put that stuff at the end of the Getting Started tutorial in a sort of "where to go from here" section. Make sure they're interested first.


The Learning Area is still a work in progress, and contributions are more than welcome!

We're having a weekly IRC meeting on mondays at 19.00 CET, on irc.mozilla.org, #mdn channel.


Thank you Mozilla for this site. It has been my reference for a long while.


Mozilla is doing an embarrassingly bad job of promoting software freedom here. They are promoting proprietary software often and making no distinction betwen free/open-source and no-charge/proprietary-freeware. Ugh.


meh


  LEARN TECHNOLOGIES: HTML, CSS, JavaScript, Python
One of those does not belong.


Yup, that fourth one should be replaced with options.

    Learn these for the frontent: HTML, CSS, JavaScript
    Backend options: JavaScript (NodeJS or io.js), Python, Go, Ruby
All four of those backend options are reasonable options for beginners moving from the frontend to the backend or learning the frontend and backend simultaneously.


I've written some backend in C# and it was highly productive. I hate dealing with the uncertainty and mushyness that seems to show itself in dynamic or script-like languages in projects larger than a small script. Obviously they're viable choices according to their userbases but it wouldn't hurt to point out some more strongly or statically typed choices. There are solid frameworks in Java too, which has had a lot of industry use as a web backend. I'd probably also find your suggestion of Go nicer to work with than Python or Ruby.

And how did PHP get left out of this?


C# is also a legitimate option if you're using windows. Java is a good option too (although I would hesitate to recommend any language where you need to have an IDE to be productive). I should have included C# or both.

I left PHP out intentionally. If you're going to be immersed in a new community, you should at least be immersed in one where a greater percentage of the code you come across is of reasonable quality and is more likely to have tests. The PHP community is the epitome of cowboy coding and a novice programmer would pick up many bad habits from the code they come across in that community.


Mono works well enough that .NET languages can be a good option outside Windows as well.


Providing an obvious choice is helpful to beginners, otherwise every single person has to ask "what do I learn?" and spend a long time hemming and hawing about the choice, without the benefit of background knowledge


In their defense though they haven't even finished the Python page, it's very likely there will be other languages added eventually, mind you this is my assumption.


Which one? Python? It's commonly used for writing backends. Not everyone lives eats and sleeps JavaScript all day. You could also use it to write a web crawler, or a desktop application that emails you reminders. Who said that the web has to be all Front End code/language that executes in a browser?


Plenty of languages are commonly used for writing backends. JavaScript may be more popular for backends than Python for new projects these days. The point is that JavaScript, CSS and HTML are native web technologies, Python is just one language choice among others.


> Python? It's commonly used for writing backends.

So are dozens (hundreds? thousands?) of other capable languages and platforms. They could have easily mentioned Ruby, Java, or NodeJS.


Python is commonly regarded as a beginner-friendly language. At least it has its own Codecademy section.


I agree. I show it to people and they are amazed that it is essentially pseudocode.

disclaimer: python was my first programming language.


Nice screenname (fellow Virginian). I think if they're going to mention learning the languages of the web you want to first whet their appetite with HTML, CSS, and JS and then break them into backend coding. HTML,CSS,JS are somewhat of a package deal where as python is really something that you'd learn after you learn those. I think it's fair to leave it out for the beginner learning about how websites are built.


I agree that they are a package deal. It would have been better to separate Python and include it with something like Ruby then link offsite for both of those languages. To say that it's completely unrelated to the web I think is an overstatement.

I probably learned more about the front end of the web as a side effect of writing scrapers in Python than I did on just tutorials directly about the front end. Then I started writing some front end stuff and it was easier to grasp because of that experience. I just wouldn't assume that everyone approaches learning the web from the same angle and limit them to only learning the front-end-three.


HTML, CSS, and JS were already listed first. It's a bit silly to omit the backend entirely


It's not a matter of order, it's a categorical difference.


Mozilla's own web sites and services (like www.mozilla.org) are written with Python/Django, making Mozilla a significant user/contributor in the Python web ecosystem: https://wiki.mozilla.org/Webdev/GetInvolved

The section does seem out of place in this context, but one reason that MDN has Python webdev info is to help community members contribute to this part of the Mozilla project. (MDN also has information about Gecko's internal C++ code, for similar reasons.)


Python is under "Technologies", not "Web" though?


Mozilla is also a webplatform steward [0]. Duplicate effort?

BTW progress is quite slow on webplatform...

[0] https://www.webplatform.org/stewards/mozilla/


While this is great, I'd prefer the w3c wiki is kept up to date.

http://www.w3.org/community/webed/wiki/Main_Page


While I applaud the effort, this just shows how disconnected Mozilla has become from the web in general. I wish they'd concentrate on making a great browser, an area they were leading until Chrome and the mobile web happened.


You're assuming that the time/money spent working on web literacy at Mozilla can just be taken and thrown at Firefox to make it better. I disagree, and think that web literacy is a good direction to put some effort towards as it relates pretty directly to our manifesto.


All the major browser vendors (except maybe Apple) are doing similar things, like https://docs.webplatform.org/wiki/Beginners (created by MS/Google/Opera) and http://www.html5rocks.com/ (run by Google). Does that make them "disconnected" too?



> this just shows how disconnected Mozilla has become from the web in general

Seriously?! How did you arrive at this conclusion?


If they are doing their best to make a great platform (Firefox, and the web in general), doesn't it make sense to tell people how to use it? I refer to the MDN all the time for JS and CSS documentation, and documentation is a necessary part of living in a software ecosystem. I would rather have people studying from MDN than W3Schools.


they're working on servo(written in rust) as pointed out already, but firefox continues to be the choice for power users, no other browser allows the same level of addons and being so customizable

also, you don't sell your soul to google as a plus




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: