
Learning the Web - t-3-k
https://developer.mozilla.org/en-US/Learn
======
nathanallen
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.

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

------
Osmose
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...](https://developer.mozilla.org/en-
US/docs/MDN/Doc_status/Learn) if you want to help make the Learn section of
MDN better!

------
rcthompson
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?

~~~
tim333
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](https://www.udacity.com/course/cs253)

------
Scarbutt
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](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...](https://developer.mozilla.org/en-
US/docs/Web/Guide/CSS/Getting_started) .

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

------
quadrangle
"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...](https://developer.mozilla.org/en-
US/Learn/Getting_started_with_the_web/JavaScript_basics)

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…

~~~
SiVal
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.

~~~
tel
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.

------
f0rgot
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!

------
UUMMUU
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.

~~~
klez
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.

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

------
quadrangle
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.

~~~
loco5niner
meh

------
lazyloop

      LEARN TECHNOLOGIES: HTML, CSS, JavaScript, Python
    

One of those does not belong.

~~~
malandrew
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.

~~~
jimmaswell
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?

~~~
malandrew
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.

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

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

BTW progress is quite slow on webplatform...

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

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

[http://www.w3.org/community/webed/wiki/Main_Page](http://www.w3.org/community/webed/wiki/Main_Page)

------
dzine
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.

~~~
Osmose
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.

