The title and the pitch on the actual site are kind of disingenuous. This is a collection of resources to learn web development. Its hardly a cheat sheet or "everything you need to know".
A cheat sheet would be a succinct set of syntax/concepts/examples required to get by.
Having said that, its a pretty website and its a worthy cause so please don't take my critique too critically.
> The title and the pitch on the actual site are kind of disingenuous
[...]
> please don't take my critique too critically.
If you don't mean to critique harshly, then please choose a word other than "disingenuous". I see the word misused a lot to mean something like "misleading", but it actually means that the author intentionally, duplicitously was trying to mislead the user. It is an insult used to question the intentions of the person it is used toward.
Here are some synonyms from Google: insincere, dishonest, untruthful, false, deceitful, duplicitous, lying. Clearly those words are not generally used politely.
You do realize that when you look up the synonyms to misleading you get many of the same results, right?
I'm sorry that you feel the word disingenuous has too strong a negative connotation but I won't curb my speech because of your opinion. If I were to follow that line of thinking I'd have also used a word other than critique because many people foster the opinion that it too has a strictly negative connotation.
Disingenuous means "not of noble character", and more generally means things along the lines of "deliberately dishonest". "Disingenuous" does not mean "misleading, maybe by accident". It's an attack on someone's character.
So, if you wanted to say "misleading, maybe accidentally", you used the wrong word.
Maybe over time, people are evolving toward using the four-syllable word as a one-to-one replacement for the three-syllable word, as a way of disingenuously suggesting they're better educated than they are? If so, eventually, that'll be the most common usage, and thus what the word "means". I don't think we're there yet.
I came for the pedantry, but I'll stay for an opinion: For myself, I agree with the wording you used in the first comment, that calling that list "everything you need to know about web development" is such a high degree of bullshit that no one of noble character would do that. I believe it to be deliberately deceptive self-promotion.
Back on the pedantry, I find it hard to believe that you actually meant "foster" where you wrote that. I mean, who cares how many people foster the opinion that "critique" has a strictly negative connotation... isn't the real issue how many people hold that opinion?
I actually agree with you that it was deliberate to some extent which is why I used the wording "too strong a negative connotation". I think anytime you are accusing someone of being less than entirely honest, which is the definition of disingenuous[1], that it's going to carry at least a semblance of negativity. This is also why I added the caveat "too critically" to my original comment because although I felt the poster was aware of his word choice he was just writing what he thought was catchy marketing copy.
And no, I actually meant to use the word foster. While you're probably right that the larger issue is how many people hold the opinion, for me personally its about how many people vocally defend the opinion (i.e. promote). For instance, if you and Shawn didn't feel the need to defend your position on disingenuous it would be a non-issue because people would at worst understand what I meant by context. This method of understanding by context is the exact mechanism by which our wonderful language evolves over time so while those who hold an opinion of a definition will eventually go away those that foster an opinion on a definition can have a long lasting impact on our language.
I'm not asking you to censor your speech. Your use of the word seemed to be at odds with the part of your comment that claimed that it was not a strong critique.
The problem with synonyms is that synonyms are not perfectly equivalent, so you can use them to support a lot of false equivalencies. On the other hand, it's difficult to capture subtle connotations of words in a discussion, and synonyms are kind of the best tool available for getting across that shorthand. It's still a rather inadequate tool. I would say that "disingenuous" being a synonym of "misleading" is itself misleading, because the word "misleading" is neutral to intent where disingenuous is not.
Regarding the word "critique" (especially that form of the word, as opposed to "criticism"), I would say that there's a broadly used academic usage of that word that contains no negative connotation.
Honestly, I have no problem with the word disingenuous. If you were saying that the site developer was intentionally misleading people, then I agree with your usage of the word. But the way that I read your entire comment led me to a different interpretation, and thus my comment.
I'm not asking you to censor your speech. Your use of the word seemed to be at odds with the part of your comment that claimed that it was not a strong critique.
The problem with synonyms is that synonyms are not perfectly equivalent, so you can use them to support a lot of false equivalencies. On the other hand, it's difficult to capture subtle connotations of words in a discussion, and synonyms are kind of the best tool available for getting across that shorthand. It's still a rather inadequate tool. I would say that "disingenuous" being a synonym of "misleading" is itself misleading, because the word "misleading" is neutral to intent where disingenuous is not.
Regarding the word "critique" (especially that form of the word, as opposed to "criticism"), I would say that there's a broadly used academic usage of that word that contains no negative connotation.
Honestly, I have no problem with the word disingenuous. If you were saying that the site developer was intentionally misleading people, then I agree with your usage of the word. But the way that I read your entire comment led me to a different interpretation, and thus my comment.
P.S.
I've noticed that a lot of people on HN use disingenuous in this way that is more or less a direct synonym of "misleading", but outside of HN, I encounter the word much less frequently, and generally it is used in an accusatory tone. Of course language can mutate within communities and subcultures, and that's fine, but using the word disingenuous without implying negative intent carries the risk of offending someone accidentally. I liken the difference between the two words to that of the words "lie" and "misspeak". If you meant to tell someone that they misspoke, but used the word "lied" instead, they would tend to get offended and/or defensive, even though you clearly were not trying to hurl an accusation of ill intent at them. There would be some uncomfortableness created by the miscommunication that was completely unintended and unnecessary. That's the reason that I spoke up about it. I see the potential for unnecessary miscommunication.
As far as tech, you're covering a lot of different topics. My knee jerk reaction would be add more of the competitors (i.e. foundation since you have bootstrap) but there's value in maintaining a smaller list of technologies since this seems to be targeted at true beginners.
For beginners, what about rad tools like Microsoft lightswitch or alpha everywhere/five or appcubator which offer much lighter learning curves and faster development, although for limited types of projects?
Hm, looks nice! The coloring of the columns doesn't seem to be meaningful in any way I can come up with. I think it would make more sense if things were grouped into categories (e.g. databases, web frameworks, frontend languages, backend languages, style/presentation). If you use color I would make it meaningful (e.g. represent order of learning things with color something?).
Seconding categories, though I'm not sure they should be columns. Maybe sections like "Styling" with a one sentence explanation of what they are, and then the boxes below that.
The problem for me when I was beginning was not necessarily learning each technology, but rather the glue between each. That is what I tend to find confusing and is much harder to find resources for that clearly and exclusively demonstrate how to bridge the different technologies. Would love if you could add those type of items. For ex. I know Node, some Mongo, and am a avid user of Heroku. Recently I was trying to set up a system using all three and struggled quite a bit.
Yeah - I know what you mean. When I first learned python, I had to figure out on my own how to piece it together with mongo heroku and tornado. I'll look into it!
I'm not sure if the order is supposed to matter that much, but I feel like the blocks should be ordered from easy to hard. Why is PHP at the end of the list? Why is JSON so close to the front?
But yea, I just think the ordering could be better, still a nice resource!
What a zinger. Unfortunately a basic understanding of PHP is still required for enough tasks that I would recommend learning it early on. It is also a very forgiving beginner language that naturally segways nicely from html/javascript.
It should be ordered alphabetically, with the colour of the block showing the difficulty or learning order (simple/compulsory = green, hard/niche = red).
You're right XML should definitely be on there. I was going to put something in there with REST and SOAP with JSON and XML too. If you have suggestions for where, please pull!
Also disappointed about the lack of ASP . MVC.net - but so it goes, I would hope it wasn't being intentionally ignored out of some personal bias. Either way, the site is still a pretty nice resource even if it fails to recognize some stacks.
This is not the first time I've noticed this omittance on HN posts.
Even though ASP.NET is one of the biggest web development frameworks on the planet, used by many, many companies, a lot of these so called web developers pretend like it doesn't even exist. Have they even used C# I wonder?
I've noticed this as well. It's unfortunate, I think, that I still run into a lot of people who carry unfounded negative opinions on c# web development simply because of their personal bias against Microsoft. But c'est la vie, this is a common problem in the realm of programming, champion <your language here> disregard <set of all other languages>.
Came here to ask the same question. We built www.staffsquared.com with .Net, I think it's on par with anything I've seen created with "trendy" languages.
And ASP doesn't make the list, presumably because it is a framework rather than a language per se -- both C# and Visual Basic make the list, but that's not really a good indicator. I don't really know anything about the Microsoft stack, and I don't know anybody who does.
To clarify: I'm not denying ASP is popular, I'm just asking if you know of a good metric to gauge its relative popularity. Apparently Github wouldn't be a good indicator either?
Correct, ASP wouldn't make (it onto) those lists in the same way I don't see Rails / Django on those lists, just their parent languages, python and ruby. On the site referenced in this HN submission (bentobox) frameworks and not just their parent languages are represented.
To answer the question posed, I wouldn't know where to begin to provide a good metric for gauging it's (ASP / MVC.net) or any other frameworks / languages popularity.
I think you misunderstand me. Rails nor Django are on any of the lists contained in the comment to which I replied to. I explicitly acknowledged their existence in the site that this thread is about.
edit: The point of mentioning that frameworks weren't included in any of those lists was in response to the parent reply questioning the popularity of the (ASP) framework as he /she didn't see it in any of those lists of language popularity that they cited.
Here's an idea. Let each box 'expand', perhaps to its own page. This way, if you want to dig deeper, you can find more resources in the expanded box. You can let users suggest resources with an 'add' button; users can vote for resources so the best ones bubble to the top. You could take this further and break each resource list into beginner, intermediate, advanced.
You should have links to webplatform.org - this is a varied collection of docs and tutorials contributed by browser vendors and other key web players, via the W3C.
I would recommend adding HTML5 Doctor http://html5doctor.com/ as they do a very good job of explaining the specific use cases of the semantic elements in html5 which is something many people either overlook or they use incorrectly. I really like it!
I am happy I started with HTML. I composed a page, all full of blinks, and it blinked! And then on to CSS, where I found :hover, and I was hooked. Then javascript, python, and only after python and frameworks did I really need to understand HTTP. What I mean is that if I had started with HTTP, I would just have been perplexed, never hooked.
If anyone's interested in some front-end web development sources:
http://www.quora.com/What-are-the-best-sources-to-learn-web-...
[You won't need to make an account with this url]
[1st answer has the skills you'll need to learn with documentation and 2nd has a great collection of resources for newbies]
Hilarious to me that no one here gives a second thought of how intimidating a list like this would be to someone first getting into web development. On my initial scroll down the list, I first thought it was a tongue-in-cheek joke ("cheat sheet"? Lol) about the incredible range of things your typical full stack developer needs to know to actually go from 0 to .com
This is great! Thanks! As a beginner, figuring out what to learn, as opposed to how to learn, is a struggle. This provides a pretty great roadmap and explains how things fit together.
As for feedback, you could potentially add:
-Hartl tutorial to the rails section
-Udacity to the python section.
Done! Awesome to see an open source project to recommend resources. On a bigger scale there is the Odin Project to create an open source web development curriculum. It provides some of the "glue" to explain the connections between the technologies.
I think it's a great site. What I need is the "glue"(how all the different programs, set of instructions) fit together.
I realize most website developement is not programming;
it's following a lot of directions. This is the reason
I hated working with computers when I was younger. I just
wasen't interested in learning a bunch of man made terms
that seemed to change yearly. As older dude, I'm looking
at it differently.
I still think there's got to be a better way of learning
dynamic website developement? I do like the idea of
condensed teaching--like cheat sheets.
Sometime ago I finished Codecademy's Web Fundamentals. I learned enough to understand what's going behind the scene but not enough to start hacking on my own. Since then I have started learning Python, also on Codecademy. There's Java for Android. And I would also like to learn C++/QML to hack my Arch Linux/KDE box.
Is it common for programmers to be proficient(reasonably well) and also be able to work on multiple projects requiring multiple languages at the same time? Or do most folks learn many things but tend to work with one language on one project.
Awesome! I'd be great if the title of each language was a link to the language's home page (if applicable) rather than having a <a>Home</a> in every box.
Cool. Thanks for putting this out there. I like it overall, but stepping through the beginner's sequence by highlighting different squares doesn't work great. Separate from the exhaustive glossary view, you could have "track" views where you could guide beginners through different paths, like an all JavaScript path that takes users from front-end stuff to Node to Heroku or whatever. Like Codecademy's tracks. Beginners love that stuff.
These kind of cheat sheets make order in my mind and motivate me to start doing something, or at least reinforce the thought that hopefully sooner or later I will!
This is great! I thought Bentoboox was good but I feel like it s too narrowly focused on learned each exclusive technology. I love how you have guides and other resources that bridge the gap!
It is definitely meant to be narrow. I think that a lot of beginners are overwhelmed by how many resources there are for each piece (hence the <=3 links for each one).
I would love to put something in here for integration between each technology, though I'm struggling to figure out how...
How about a pane for "How to build a static HTML/CSS website" that hides all panes but prerequisites? Then maybe one on how to build a dynamic site (raw, no framework). Then to build an [x-framework] site. Then, the penultimate pane, "How to build a scalable web application with automated infrastructure (prereq: chef or puppet or whatev), advanced monitoring (prereq: Nagios, or whatever that CustomInk/Etsy toolset is called), test-driven development (prereq: Lang-appropriate testing libs), and continuous integration (prereq: Jenkins)"
Definitely agree with you about keeping clutter to a min due to overwhelming. This may be stretch but maybe just another pane appearing on the right third of the screen when you click a box labeled 'Connecting It All' and just providing links to other resources the demonstrate how to connect the technologies highlighted.
Javascript based templating engines and the web don't necessarily mix. They are ideal for mobile, intranets or other known environments, but not something I'd use in this sort of environment. Right tool for the job. https://minus.com/ly4w7OtUMBvxX
The colors are off. Particularly the yellow. It is hard to read. The blue is nice, could be a shade darker. The last square position is empty. Why not put one there with links to your blog or whatever? Its prime real estate, because the reader will flow into it. Having a blank space there takes away from the design.
This. The boxes are bright, so you would want black text. In general, white text goes with muted backgrounds, black text on bright backgrounds. This hurt my eyes =\.
Also, the page starts with black text on white background and transitions to white on colored. I'd stick with one for consistency, in this case, black.
I like this, you should include Udacity for the Python section. They teach everything from Basic Python to web development to software testing and even debugging. Can't find better resource for Python than https://www.udacity.com
I was JUST about to do this. I love Udactiy's python course - since they take you through everything and even teach you to build a search engine on the way!
IMO clicking rails should show sass also. It shows less which can also be used with rails, but if I'm not mistaken sass is still the default. I'm sending you a pull request now. I didn't remove less, I figured you could consider that yourself, just added sass to rails.
Since a portion of beginners are interested in employment, I wonder how much of this sheet needs to be 'filled in' to become employable at a minimum, junior position?
I've found that the threshold between beginner -> employable is really fuzzy and that's a bit frustrating.
"Well, I wrote a python script for this thing once..."
These are still subjective qualifiers though. Useful for who? Useable by which audience? I can easily do both given no other constraints (especially ignoring time). Useful and usable, but never used because chances are someone's done it better and there's no reason to reinvent the wheel.
Other answers I've received have piled additional frameworks or languages on top of what I already know, or suggest specific projects that encompass a wide range of requirements.
hey Just pushed some laravel links to This project. . I'm actually wanting to start a dev boot camp her in Dayton that uses online learning resources to teach the fundamentals.. i.e why reinvent the wheel... with pair coding and real idea pitch sessions and learning while working on real startups that we may also help get some traction. ie Dev boot camp meets coworking space meets incubator/accelerator. this will be a great starting point for that... I learned a lot of my coding skills from code academy, team treehouse, and code school..and ruby koans..all are amazing resources.
Can I ask for an argument in support of Laravel being the only PHP framework on here? I think it's very "cool" (especially the Silex-esque routing), but there's not a whole lot of Laravel jobs out there.
I think that would make some mad in the php community.. though I'd love to see the whole lot of phpers get behind one framework like Ruby on rails or at least a couple like symfony(since laravel is built on components from symfony makes it important for the future of laravel), laravel, and possibly Zend...There should also be a cleansing old php versions and frameworks and spaghetti code since learning laravel I've become a much better coder and just love coding.. before it was a major headache that I put up with.
I can't say how many times I have been asked 'How can I start learning to build stuff for the web?' and wanted to give this as an answer. It's not perfect, but it's on GitHub!
Why is ColdFusion always the ugly red-headed stepchild? I realize that the amount of people using it in comparison to PHP is very low, but it still exists! Can we get some love?
What about C# and Java? These are widely popular with big companies with a lot of money.
I think adding a "tools" section would be a little helpful for beginners, like myself, to find out about. I use jsfiddle for online code edit a lot, and I prefer Sublime Text 2 on my Mac and Netbeans on my PC workstation.
Ha! I've always felt that way about exclamation marks in a lot of marketing copy. I can't help but think that the person that wrote it was coked up!! For some reason it annoys me :)
No matter how many times 'tis deleted or hidden, syntax error does not equate to inadequate robustness. Syntax errors have nothing to do with unexpected variations in experience, and everything to do with coding errors.
How does a syntax error have anything to do with robustness? Now if you had mentioned something that made sense, like "testing" or "continuous integration", then only the "'tis" would be irritating.
Robustness - "the persistence of a system’s characteristic behavior under perturbations or unusual or conditions of uncertainty". Changes like Chrome versus IE; like 1 visitor versus 1000.
Well, to all too many people I've encountered (who consider phrase "Are you using SQL or Oracle?" a sane question), it is, as "SQL" means "Microsoft SQL Server".
I recently made this resource for a camp on learning Go with the end product being an http server. If it's helpful I can repurpose it for general use. It's a series of 2 quick tutorials currently, start here : https://github.com/rdallman/gofirst
Love all these new technologies that are hardly proven in production and many have been proven to have fundamental design problems leading to security issues that cannot be engineered around without breaking the flexibility offered by the technology, such as PHP and Ruby.
JSON and XML are just data formats, there's nothing special to know about them other than that a lot of stupid enterprises decided that they are standard now so that's what you'll use. Considering that Javascript isn't even a defined standard (although ECMAScript is) , I find the idea of a standard based on it quite laughable.
This is more like a cheat sheet for farmland development, as requested by the landowner. Bring your own tools and teach yourself how to use them, just don't bring your own land unless you plan to forfeit it.
> Considering that Javascript isn't even a defined standard (although ECMAScript is)
ECMAScript isn't a different language than Javascript, its just the name on the standard for the language (IIRC, the name is because of the trademark Sun had -- and Oracle now has -- on "JavaScript" [1].)
> ECMAScript isn't a different language than Javascript
That's not true, Javascript is what is implemented in various browsers under the standards those developers choose to implement. If ECMAScript was the same thing, then why would Mozilla bother licensing Javascript from Oracle?
Considering all these tools are just development platforms for THE WEB? Shouldn't you be learning how the Web works so you know what you're actually building? No mention anywhere here of ports, REST, SOAP, caching (like I dunno, nginx which is now on what? like 75% of internet facing web hosts?)
These so called technologies are shit, as proven in various papers on the subject. All you'll be doing is laying the groundwork for your enterprise to get hacked and taken over by large corporations using older, more secure and proven technologies.
> If ECMAScript was the same thing, then why would Mozilla bother licensing Javascript from Oracle?
Trademarks are basically labels; what Mozilla licensed from Oracle (actually, as I recall the history, what Netscape licensed from Sun and transferred to Mozilla) is the right to use the trademark "JavaScript". It has nothing to do with the actual language, just the label.
That's just more fuel for my argument. The fact is that the trademark is where the value is, there is no value in the Javascript language. Every other day there's another Javascript vulnerability because that is how it was designed.
A cheat sheet would be a succinct set of syntax/concepts/examples required to get by.
Having said that, its a pretty website and its a worthy cause so please don't take my critique too critically.