top | item 20533446

A friendly web development tutorial for complete beginners (2017)

288 points| IRLIamOffline | 6 years ago |internetingishard.com | reply

54 comments

order
[+] temporaryvector|6 years ago|reply
This is a very well done and pretty comprehensive tutorial.

However, there are plenty of pretty good basic web development tutorials out there, and few, if any of them address what I think is crucial. Once you have all your HTML and CSS and JavaScript all ready to go, how do you actually got about putting that webpage online the right way for the modern internet, including basic security best practices.

As the website name says "interneting is hard," but I think the hardest part for an absolute beginner isn't throwing some HTML but actually getting it online. Googling around will present one with a lot of choices and advice for what to do, at various levels of complexity and it's not at all clear what applies to their particular case. Questions that often need answers are things like:

- What's a domain and how to get one? - What kind of hosting solutions are there and how do I decide which is right for me? - How do I point my domain to my server? - What's a certificate, do I need one and how do I set one up? - How do I make sure I don't get hacked by a script kiddie?

For an absolute beginner web developer, learning HTML and CSS is pretty accessible, they can write, test and iterate on their machine and they can pretty much figure what questions to ask of google and quickly see if the answer works, but when it comes to actually hosting their site, it can be hard to even know what kind of questions to google, much less how to choose the correct answer.

If someone were to ask me to recommend then a tutorial for making a website, I'd probably link to this or one of the other similar tutorials online, but at this point I'm not sure if there's a similar authoritative, modern "How to get your website online" tutorial, although I admit I haven't looked all that hard.

[+] varrock|6 years ago|reply
This is the crux to my imposter syndrome. Luckily, I work with people that specialize in this, but it limits my personal growth quite a bit.

I really need to figure this portion out.

[+] anarchodev|6 years ago|reply
I'd personally love a recommendation for a set of basic security guidelines for static websites. Less interested in OWASP stuff and more as you said, hosting-specific issues. This would also be a lot to cover, from using static-site deployment tools like github pages or netlify, to throwing it up on an S3 bucket and routing using Route53, to even for whatever reason configuring a VPS with nginx or apache to serve it out of a directory.

This could further be extended to static sites that want do some authentication, covering which providers are best for that, basic security for using solutions like firebase for hosting and database, etc.

[+] anonymous5133|6 years ago|reply
All of that could be covered in a seperate course. I think the author could probably conclude this html/css course by saying to learn all of those things you mentioned to put the website online.
[+] eralps|6 years ago|reply
> if any of them address what I think is crucial. Once you have all your HTML and CSS and JavaScript all ready to go, how do you actually got about putting that webpage online the right way for the modern internet, including basic security best practices.

I consider this the seperating difference between a good and bad tutorial.

[+] lpellis|6 years ago|reply
This looks pretty good. I had a lot of people tell me they get stuck following most basic tutorials since they all assume some level of basic knowledge that you forget you even have if you work in the field (stuff like 'where to put these files', or even that you can view your file in a browser by doubleclicking it). I even wrote a very basic getting started guide myself (https://medium.com/@lpellis/getting-started-with-web-develop...), but now I can rather send people to this guide :)
[+] linuxftw|6 years ago|reply
Yes, we used to call these 'basic computer skills' but many people don't have them.

Do you think you could buy a car that needed new piston rings and replace them successfully if you've only ever driven a car? Someone can give you the manual, but you'll be like "What's a torque wrench?" Why should PCs be any different?

[+] ktpsns|6 years ago|reply
I'm not a native speaker and maybe overstress my understanding of "being hard", but CSS and especially HTML are famous for their simplicity. One can start basic markupped text with a basic text editor in minutes. Of course any advanced features require some learning. But I don't like people calling basic web publishing technologies (which are decades old) to be "hard". Because they are designed to be simple and that's one reason of their huge success.
[+] themarkn|6 years ago|reply
The basics are not what make them hard. But they are vast in how they can be used and combined to achieve various results. Writing semantically correct, accessible, maintainable markup and CSS is websites that often have thousands of elements on a page (a separate problem, but true), made up of components authored in a CMS with who-knows-what nesting ... etc etc it’s hard. CSS favors conciseness over explicitness, so there are many properties that look like they do one thing but actually do another. That’s hard too, you have to learn not to assume the obvious interpretation of a property name is the correct one.

What often happens is developers duct tape complicated user interfaces together using the basics (because CSS and HTML are considered “easy”) and end up painting themselves into a corner where it’s increasing difficult to manage the code and assistive technology has no idea what’s going on.

For me, letting new developers know that good HTML and CSS is hard helps them to respect the huge surface area involved and be patient with themselves when they struggle. Telling people those things are “easy” makes them feel stupid when they can’t get something working right away.

I guess you cover this by saying advanced features require some learning - but I feel like people hit the hard part of CSS very early on when trying to implement basic patterns that are on most websites.

[+] simion314|6 years ago|reply
CSS/Html has a lot of tricky corners, where you spend 1 hour to understand why things are not as you expect. My latest issue was with a webpage that when I print it to PDf the tables font was different, the cause was that for some reason the browsers rendered that page in quirks mode(I could not figureout why since I had the correct header) but not when printing to pdf.

In quirks mode the tables font styles except the font family are not cascading from the parent, I did not knew that.

In other case I remember I had to add a min-width:0 to a rule because the layout engine has a large number of paths it can take and adding that rule would push it in the correct path.

The current project I work was not started by me so please don't say I should have used X, I can't now just put a reset css in the project, it could break 100 things all over the place.

Other issue I hit sometimes is aligning checkboxes,radio buttons and labels in all browsers, I get asked to pixel perfect align them, the bootstrap css we use does not do it, so we have to add rules with padding, min-heights and other things to get the result done ,

I use flexbox for the new layouts I create but working with old css that uses float,possition:relative is a pain for me.

I have a solution, have an html6 css4 thing , that is not backward compatible, make it so if you do a stupid thing like have 2 elements with the same ID the page won't render,drop html elements that we do not need. drop all old css crap, like float should work only for floating text and images not for layout, have only 1 way to layout things, 1 way to center things, 1 way to put gap between children... at least the lucky ones that start from zero can have less problems . We still keep the old html5 for compatibility reasons.

[+] duxup|6 years ago|reply
>CSS and especially HTML are famous for their simplicity

I think that's accurate as for basic example use cases like writing an HTML file with an H1 and some text along with some minimal styling, but CSS and HTML can get surprisingly complex after a few steps.

It's not at all immediately clear what the advantages or disadvantages of say centering something are via the myriad of methods to do so, what methods work together and what don't, etc.

It's the old tutorial problem that I see all the time. "Yeah this tutorial shows how simple this thing is, but that's not how anyone does it, there's always more..."

[+] Raphmedia|6 years ago|reply
I went to a technical college on Multimedia Development. Classes were anything from video editing to object oriented programming. One of the first programming class was HTML&CSS and the other one was JS. A lot of people would understand JS but get stuck in HTML&CSS. I already knew the basics so I helped a lot of people. Unless you understand it at first sight, it's hard to grok.

And then it's very hard to master. Complex responsive layouts are hard to get right.

[+] tiborsaas|6 years ago|reply
That got me thinking as well. Is it simple for me because the years of experience or is it really not that simple?

I would say that HTML and CSS is not hard, but complex. It's not the same thing. If something is hard, then the learning curve is very shallow but if it's complex then you can gain solid knowledge bit by bit.

So "html & css is complex" would be a better fitting title.

[+] ianamartin|6 years ago|reply
All technologies aim to make some certain aspects of things "simple". But all technologies end up being hard once your problem space gets bigger than the space the technology has successfully made simple. And real world situations are always bigger problem spaces than any technology can map to a simple solution.

Sure, HTML and CSS are very simple to get started with, but they get complicated and hard pretty quickly. Just like almost every technology. I think maybe the one class of technologies that this doesn't apply to is academically functional programming languages. I don't think they are simple to get started with. But once you do obtain proficiency with them, the difference between basic and advanced usage isn't as large.

[+] mseidl|6 years ago|reply
I wish I was a good html programmer...
[+] manbearpiggy|6 years ago|reply
This is great, it's more than a tutorial, more a comprehensive guide.
[+] Stevvo|6 years ago|reply
I'd take out the floats section and replace it with grid; floats are completely obselete
[+] asciimo|6 years ago|reply
True, but as soon as you get a job involving any legacy HTML, you'll have to wrestle with them.
[+] freakynit|6 years ago|reply
Hats off to you for putting up with such brilliancy and simplicity in explanation
[+] pjmlp|6 years ago|reply
Beautiful content. Thanks for sharing.
[+] terrycody|6 years ago|reply
this is really really newbie friendly and useful, thank you for your contribution to all of us!
[+] bibyte|6 years ago|reply
Pretty good website. But why Atom ? A plain text editor would work just as well and would be even easier.

I am not sure I agree that developing for the web is hard. In fact because it is so easy JavaScript is so popular right now.

[+] gbugniot|6 years ago|reply
JS is easy, JS ecosystem is not.
[+] wruza|6 years ago|reply
Html and css are not hard; at least I’m aware of each topic listed at this site and either know it or know where the good reference is. The problem is that they are full of legacy, incompatibility, sometimes irrationality, they lack details and proper isolation.

For one simple example, give body 100vw 100vh and gray, vue #app 100%. You have just a gray page, right? Pretty trivial. Okay, now add h1 into #app. Page suddenly gets a vertical scroll of ~10px and a white bar of the same height appears above body. Why?

Because h1’s margin leaks through two parents up to the document’s top, document pushes body down that count of pixels, but retains its 100vh height. That’s completely absurd and entire html/css is drenched with this absurdness. You cannot find this behavior in layout systems of traditional desktop frameworks. And this one is just a trivial case leading to a problem. IRL a production-ready site is a tetris-inspired pack of properties set on :first/last-childs, 1-2px fixups for baselines, borders, etc that correspond to required design. Changing parts of it without messing up is so hard that css guys who I know always try to fix design at the beginning and cringe every time changes are made. They also try to apply rules only on specific divs and clear it for childs, trying to isolate effects. And then I read “CSS is Awesome” in yet another popular blog post and something dies in me at that moment.

I look forward on things like gss, manual positioning via js, etc. But then comes seo and tells that he requires wordpress and semantic cr%p and that google will not give a damn about pages built my way. /rant