Hacker News new | past | comments | ask | show | jobs | submit login
A friendly web development tutorial for complete beginners (internetingishard.com)
412 points by interneting on Feb 13, 2017 | hide | past | web | favorite | 54 comments

The graphics are nice, but I think you can polish the writing.

1. It took me probably 30 seconds to understand that the text blocks on the start page are summaries of what's in every chapter. Try to read this without knowing that this website is an online book:

> The purpose of HTML, CSS, and JavaScript, the difference between frameworks and languages, and finding your way around a basic website project with Atom.

This doesn't make any sense if you don't know that it describes a chapter in a book.

2. Simplify sentences. Cut adjectives. Shorten. It reads academic. Examples:

> Our goal is to make it as easy as possible for complete beginners to become professional web developers, so if you’ve never written a line of HTML or CSS, but you’re contemplating a career shift, grab a cup of coffee, take a seat, and let’s get to work.

This is a single sentence. It's hard to understand. Your readers aren't all native Americans. This could be turned into:

-> This guide helps you to become a professional web developer, even if you've never written a single line of HTML or CSS.

> They’re very closely related, but they’re also designed for very specific tasks. Understanding how they interact will go a long way towards becoming a web developer.

Ctrl + F "very": Too often.

A good editor might reduce the text by 25-50%. My secret tip is the Material Design Writing guide [1]. It shows how to write for apps. With apps, the user needs to get a task done as fast and efficient as possible. Write that way.

[1] https://material.io/guidelines/style/writing.html

To add on to point 1 here, those sentence fragments should be links (and visually distinguished as them). Currently they're not, there's just the read more link - and if you go there and ctrl-f for any of the fragments (say "purpose", "frameworks and" or "basic website" you'll get nothing. So it's impossible to go from "that part of that chapter sounds good" to reading about it unless you know enough about the topic to ctrl-f a different term.

> 2. Simplify sentences. Cut adjectives. Shorten. It reads academic.

You bring up some valid issues, but I think you're missing the point of the guide: To be friendly. It has a few parts that could use some editing but overall it feels friendly and interactive. Some of the changes you suggest make it seem cold and boring, which (to me at least) would be a reason to put it down and never pick it back up.

Personality and friendliness don't come from unnecessary words. A book should be written with authority and emphasize with the reader. Some parts of the text do this well, such as this:

> Learning HTML and CSS is hard, but it doesn’t have to be.

That's a great start. It's friendly and it doesn't have unnecessary words in it. It's actually quite powerful.

There's a fine line between being friendly and starting to babble.

You should empathize with the reader.

The reader appreciates a readable text. Empathise and provide that.

Oh yeah, thanks for pointing out the typo. Too late to fix it.

Or write in a way that's light, friendly, and engaging. Not everyone wants something that's "fast and efficient" and information-dense, perhaps especially not people taking a beginner's course on HTML and CSS.

That's how I filter out turorials. If it is not fast and efficient, or involves weak analogies and too playful with terms, then I simply skip them until one is really factful, concise and to the point.

I am noob, not stupid.

Edit: typo

It really just depends on the person. I have a few tutorial videos up on Youtube, and it's pretty 50/50 on the comments being "this is too fast" and "thanks for not rambling, slow tutorials are annoying".

I think in general someone this new to programming concepts would probably want something a little slower. Once you get the main concepts down for programming then you can speed up, but the abstract thinking is hard for a lot of people to wrap their head around at first.

YouTube is really a very different case, and in fact the opposite is the case for text.

For speech, the speaker sets the pace, so the challenge of accessibility is actually twofold: the speaker needs to both be clear and not too fast (or too "efficient").

In text, it's the opposite: the reader sets the pace, so more efficient writing will make reading (at whatever pace) less taxing.

You make a good point and I see where you're coming from. But I've gone through a few text tutorials that just fly through the topics without going into enough depth or examples. I think if you're fairly advanced in a skill, sometimes it's hard to relate to the mindset of someone who is new to it. Like, oh, this is so easy to me, I only need one sentence to explain it. But really it needs a whole paragraph.

It's all a balancing act of course. Like you said, has to be both clear and fast.

Otoh, after reading two chapters it seems that this turorial does not involve that. It is pretty good and thorough for complete beginners.

Are there guides similar to Material Design that you would recommend to an app developer? Looking for Dos and Don'ts. Appreciate any help in this direction!

Don't overthink it. The material design guidelines teach you what to look out for. The book On Writing Well helps. But most rules are simple enough: Write in the active voice, cut unnecessary words, write, then edit and revise. It's a process, it needs practice, too ;)

I think it's really good. I often wonder how people learn to make websites these days - I made my first 20 years ago when it was all a lot more straightforward. Even a basic site needs a huge amount groundwork now.

The only comments I have is that it's technically "web design" rather than "web development", and there's nothing about taking the work the user has done and putting it on a server somewhere so other people can see it. It'd be a shame for someone to work through the whole thing and not have a working website at the end.

Awesome work.

Nothing had changed in the web stack that would prevent someone from building a webpage the same way as 20 years ago. Text editor and a browser...

This is true but misleading. You could make a similar statement about any field where technology improves over time. For example, "nothing has changed in the manufacturing process that would prevent someone from building an automobile the same way as 60 years ago" -- sure someone could build it that way, but it doesn't mean it would be a successful product compared to other things currently on the market.

And I am not talking about using different frameworks / compiled languages / etc... I'm talking about the improved techniques we've developed over the years combined with new features in browsers, such as:

* HTML5 vs. HTML4 (streamlined and more consistent syntax in a lot of places)

* Float-based grid systems for layout

* Flexbox(!) for alignment

* media queries and picture/srcset for responsive design (heck, the whole concept of responsive design)

* web fonts (not being limited to the dozen or so that are available through the OS only)

* BEM methodology (having a modular mindset about styling components, combined with avoiding specificity issues by just using a class for everything)

...and that's just plain old HTML and CSS... don't even get me started about javascript (even just JS/ES5!)

>>but it doesn't mean it would be a successful product compared to other things currently on the market.

Why are you assuming said website needs to be successful on the market? Maybe it's a personal website or a hobby project.

When I starting building websites in ~1998, I looked at what was on the web, it inspired ideas, and I built things.

If I were starting now, my inspiration would possibly be things like: responsive, single-page apps, with ajax, websockets, etc.

I was going everywhere and viewing source and you could basically figure out how everything was made. Now--not so much.

It's not so much 'success' as similarity with popular projects.

I guess I meant "the marketplace of ideas". I'd think someone who wants to learn how to build websites in 2017 wants to learn how to build modern websites in 2017.

The tech is the same; what's changed is the user's expectations.

The tutorials have. I agree with you, the same things I learned 10 years ago are still relevant. But every tutorial out there now basically preaches that you need to learn $new_hot_language, and $new_hot_framework. For a beginner that doesn't know any better, it can sound like those are necessary.

Go grab the latest release of Arachnophilia and have at it...


(Pleasantly surprised to see this is still going strong after 20+ years.)

This is absolutely fantastic!

I recently taught some "intro to web design / development" classes to college students (mostly designers, so coming to it more from a creative perspective as opposed to "coders at heart"), and this is the "textbook" I wish I had had then! The order that concepts are introduced is perfect, and I think the decisions made about what to explain vs. what to ignore are spot on.

When I got to the part with hr and br tags, I was thinking to myself "tsk tsk, the closing slashes are unnecessary"... then the next paragraph explains how they're unnecessary but the rationale for using them is a good idea (in the context of learning).

I also very much appreciate that it's strictly HTML and CSS and doesn't start off with all the extra mental overhead of build tools, compiled languages, server setups, etc.

Really well done!

Thank you for this. No specific critiques but I thought I'd give you some context about why this tutorial is a help to me.

The last time I built a web page was probably 2001 and the fanciest it got was frames in Frontpage. Prior to that it was all html in notepad. I do not program.

I am however, trying to get a website up for a new education venture I'm building. I'm using a Bootstrap framework. There's enough old stuff in there that I can figure out how to edit it, but also enough new stuff to throw me for some loops. A lot of the tutorials I've found to explain elements are either too simple or too complex.

Your tutorial seems to be the sweet spot. I flipped to the part about responsive images and it answered some previously unanswered questions I harbored.

When this post hit[0] HN awhile back I got excited by the template but I couldn't figure out how to edit important parts of it because it used SVG images. I didn't know what SVG was or if/how to edit/replace them. Your tutorial is the first simple explanation I've seen regarding SVGs and their place/purpose in the responsive image landscape.

Much appreciated as skimming your site has already been helpful.

[0] https://news.ycombinator.com/item?id=13126228

I can hardly judge, but that "Edit Here" "Reload Here" concept, being necessary to understand at first, seems not as necessary to keep after the point reader grasps the fact "this is source file and that is it rendered appearance". Live preview like complex Thimble [1] or simple Scratchpad [2] or Dabblet [3] seems to be far more convenient for exploring fundaments of HTML / CSS, especially for beginners.

In fact I have such one "scratchpad" crammed into data:uri and bookmarked and keep regularly using it to quick test almost anything HTML / CSS / XML / SVG / JS related. (I am coder.)

[1] https://thimble.mozilla.org/ [2] http://scratchpad.io/ [3] http://dabblet.com/

I think it would be more fair to call this "HTML & CSS" tutorial than a "web development" one.

Some of the wording seems a bit too advanced to throw on a newbie right away. I would massage the content with a more relatable, visual representation:

>HTML is for adding meaning to raw content by marking it up.

HTML is the frame of the house.

>CSS is for formatting that marked up content.

CSS is the interior and exterior design of the house that's intertwined with the HTML framework.

>JavaScript is for making that content and formatting interactive.

JavaScript is the hardware door hinges, electrical and plumbing of the house that's also intertwined with HTML and CSS.


I think graphical content that reinforces the above analogies would go a long way in helping newcomers to more quickly understand and remember the basic concepts.

This is awesome, thanks! I've updated my personal homepage just a few days ago, and it was difficult to google the simplest way to make the layout responsive.

This was, because answers often involved adding some overbloated framework to my homepage that was supposed to solve all problems.

After two days of googling arround I arrived at very simple HTML + CSS, like you are describing, and did not need kilobytes of "CSS frameworks".

The same applies to Javascript, and it is even worse there. People are using big, big frameworks everywhere, and I wonder if it would not be much easier to do it in plain Javascript. On stackoverflow it is really difficult to find an answer that does not require at least jquery. Are people aware of how to do things in plain javascript, and choosing the frameworks deliberately?

Very awesome, look forward to digging in. As a digital marketer primarily, I've self-taught myself enough to be fairly proficient at HTML and CSS.

The thorn in my side has always been javascript, which I've started and stopped many times. Look forward to seeing your lessons on javascript!

The site appears to be broken for internet explorer 11. I am not able to follow any links.

Yeah, looks like he's got some crazy z-index on the body tag that is causing the problem. If only there were some kind of CSS tutorial he could read to learn about this ;)

Next tutorial will be "Cross-Browser Testing Is Hard" ;)

Author here. Correct! Thanks for letting me know. I believe this has been fixed (if not, please let me know again).

It's working for me now. Thank you!

How do we know this does not fall under the trap of not actually being friendly but only seeming friendly as viewed from the eyes of an expert / advanced user.

Whenever I see these I wonder if they remembered to take someone with no subject matter knowledge and have them attempt to go through it.

For all I know this site did. I'm just musing out loud,

I've taught intro to web design / development classes before, and based on my experience this tutorial gets it right. (It pretty much follows along with the curriculum I used, although it's much more well-put-together than anything I ever made).

HTML, CSS and JavaScript are not hard.

What's hard is being able to teach any single person them – that requires many sorts of people skills. The irony is that for people with the right mindset, learning the 3 of them, or programming in general is one of the easiest thing they could do.

I disagree... they are hard. The fact that you think they are easy speaks to your own intelligence or "way your brain works" that you are able to grasp it (and/or your persistence/practice over the years of learning it).

But try teaching this stuff to people with no experience, and/or people who don't have as analytical a mind as us tech folks and you will quickly discover just how hard it can be.

(I recently taught a college class that was an intro to web design / development - suffice to say it really gave me a clearer picture of how far I'd come in my own professional skills over the years... it's easy to forget what it was like before you knew what you know now :)

A big problem with me learning to code is my terrible memory. I get the concepts and logic of code, but it's frustrating having to re-learn everything over and over again because I can't remember the function name, format, etc.

My biggest nightmare is trying to learn another language, I took 7 years of Spanish in school and I literally can't speak a sentence of Spanish.

It's refreshing to see a web-dev guide that doesn't focus on a framework.

It's pretty cool,even on tricky subject like responsive images the content stays accessible. I hope he'll continue with js, filling the gap between codecademy and "first let's npm install webpack babel and gulp"

I know that black on white is not cool anymore, but a little bit more contrast would benefit the site. Grey on grey is hard to read, I want to wipe the screen cause it seem dusty.

Grammar aside: wouldn't it be internetting?

Looks good but the scrolling is really weird and laggy for me.

Browser and OS?

Safari 10 on El Cap

It's laggy for me too. FF 45 on Debian.

Complete beginners don't need flexbox.



Good! I also really like this one about webdev in HTML5: https://www.liveedu.tv/elijahwass99/videos/REABM-html5-codin...

Friendly is a mistake. It should be hostile, unforgiving, difficult and hold just enough promise for one to justify continuing.

Prepare people for what's ahead.

They do ignore accessibility in both content and the website design itself. It's frustrating to see all those websites that are trying to teach about design, or even offer design services, but with their own websites containing illegible texts, broken layouts, invalid markup, etc. Heck, even those that claim to aim accessibility and validity often fail to achieve any.

Just a few examples to demonstrate what I mean:

- Grey-on-white color scheme: high brightness, leading to eye strain.

- Font sizes and div widths are set in pixels.

- Fails validator.w3.org validation.

- Light-grey-on-white navigation links: low contrast, leading to barely legible text.

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