# data[].attributes.body
The new kid on the block. Zeer overzichtelijk en duidelijk met goede voorbeelden.

# data[].attributes.attachment_link.description
CSS Reference is a free visual guide to CSS. It features the most popular properties, and explains them with illustrated and animated examples.

# data[].attributes.body
The new kid on the block. Zeer overzichtelijk en duidelijk met goede voorbeelden.

# data[].attributes.attachment_link.description
A free guide to all HTML elements and attributes.

# data[].attributes.headline
2017 is the year that front-end developers should go back and master the basics

# data[].attributes.subject
2017 is the year that front-end developers should go back and master the basics

# data[].attributes.attachment_link.readable_text
In our fast-paced ecosystem, we tend to spend our time trying out the latest inventions, then arguing about them on the internet.

I'm not saying we shouldn't do that. But we should probably slow down a bit and take a look at the things that don't change all that much. Not only will this improve the quality of our work and the value we deliver - it will actually help us learn these new tools faster.

This post is a mix of my experience and my wishes for the New Year. And I want to hear your suggestions in the comments just as much as I want to share my own.

Learn how to write readable code

Most of our work lies not in writing new code, but maintaining existing code. That means you end up reading code much more often then writing it, so you need to optimize your code for the next programmer, not for the interpreter.

I recommend reading these three amazing books - in this order, from shortest to longest:

Learn JavaScript deeper

When every week we have a new JavaScript framework that's better than any older framework, it's easy to spend most of your time learning frameworks rather than the language itself. If you're using a framework but don't understand how it works, stop and start learning the language until you understand how the tools you use work.

A great start is Kyle Simpson's book series You Don't Know JavaScript, which you can read online for free.

Eric Elliott has a huge list of JavaScript topics to learn in 2017.

Henrique Alves has a list of things you should know before using React (actually any framework).

JavaScript Developers: Watch Your Language by Mike Pennisi - understand TC-39 process for new ECMAScript features.

Learn functional programming

For years we wanted classes in JavaScript. Now we finally have them but don't want to use them anymore. Functions are all we want! We even write HTML using functions (JSX).

Learn design basics

As front-end developers, we're closer to users than anybody else on the team - maybe even closer than designers. And if designers have to verify every pixel you put on screen, you're doing something wrong.

Learn how to work with humans

Some of us come to programming because we prefer to interact with computers more than with humans. Unfortunately, that's not how it works.

We rarely work in isolation: we have to talk to other developers, designers, managers - and sometimes even users. That's hard. But it's important if you want to really understand what you're doing and why, because that's where the value in what we do lies.

Learn how to write for humans

A big portion of communication with our colleagues and other people are textual: task descriptions and comments, code comments, Git commits, chat messages, emails, tweets, blog posts, etc.

Imagine how much time people spend reading and understanding all that. If you can reduce this time by writing more clearly and concisely, the world will be a better place to work.

Learn the old computer science wisdom

Front-end development isn't just animated dropdown menus any more. It's more complicated than ever before. Part of that notorious "JavaScript fatigue" stems from the increased complexity of the tasks we have to solve.

This, however, means that it's time to learn from all wisdom that non-front-end developers have built up over the decades. And this is where I want to hear your recommendations the most.

Here are a couple resources I personally would recommend on this:

# data[].attributes.attachment_link.title
2017 is the year that front-end developers should go back and master the basics

# data[].attributes.attachment_link.description
In our fast-paced ecosystem, we tend to spend our time trying out the latest inventions, then arguing about them on the internet. I'm not saying we shouldn't do that. But we should probably slow down a bit and take a look at the things that don't change all that much.

# data[].attributes.headline
My journey to becoming a web developer from scratch

# data[].attributes.subject
My journey to becoming a web developer from scratch

# data[].attributes.attachment_link.readable_text
First, let me introduce myself. My name is Sergei Garcia, and I'm a full-time front end developer with 2 years experience. In that time, I've worked as a front-end developer for both a Forbes 500 consulting firm and a small company.

This may not sound like a lot of experience, but finishing my second year as a developer has been a huge milestone for me. This is because I had no real experience doing web development - and not much programming experience in general beyond some basic C# and Java training I got from a few online courses. I also didn't have a computer science degree since I graduated with a degree in IT project management.

I'd never written about my experience despite all the help I've received from wonderful resources like Medium, Stack Overflow, and Reddit's programming subreddits. So today, I decided to change that. Today I'm going to fill you in on what went right, and what didn't, so that if you're embarking on this journey, you'll have better luck than I did.

I know that there are a lot of articles like this, but not very many of them discuss the process with the benefit of an extra two years of hindsight.

I'll start off with my journey, including what went wrong along the way. If you just care about what my suggestions for the shortest possible route to becoming a web developer from scratch are, feel free to skip to the last section: The shortest route.

So, without any further ado, Let's get started!

Getting the Basics

After deciding I wanted to get into web development the first question on my mind was "What do I learn?" After doing some research, I ended up making my learning path based on what most entry-level web developer positions asked for, which was:

JavaScript

HTML & CSS

CSS Preprocessors (Less & Sass)

Responsive Design

AngularJS

Design Patterns

Git

NodeJS

Task Runners

Here's how it went.

Javascript

I began my Journey learning JavaScript through CodeSchool(paid) and Codecademy(free). If you don't know about these, they're great websites that allow you to learn to code by coding inside the browser.

I found learning resources like this were the best when you are just getting started. Just be advised that this method of learning gets tiring quickly once you get into more advanced stuff, since their algorithms for checking whether you solved the code example correctly have some accuracy issues. Both of their introductory courses to JavaScript were outstanding and I highly recommend them.

Once I got the basics out of the way, I proceeded to get a stronger JavaScript foundation by reading the Eloquent Javascript: A Modern Introduction to Programming book by Haverbeke (free).

This book was recommended to me by a lot of people in the JavaScript forums as a must read, and for good reason. That book was tough - especially if you're just learning programming like I was back then. But I'm glad I didn't give up and kept at it. It was phenomenal due to the vast scope of programming concepts it covers, even if it was a bit ruthless at times. Whatever you do, don't skip the code challenges. Once you finish this book, then you can finally say with confidence that you have a good grasp on JavaScript.

You can also optionally learn jQuery (though I really don't recommend learning it yet - more on this later). You can learn it through CodeSchool's Try jQuery course.

HTML & CSS

After learning JavaScript, I proceeded to learn the fundamentals of HTML & CSS and web design through CodeSchool's HTML & CSS learning path. These courses are still my favorites today, since the pacing is great, and the overall scope of what they cover allowed me to acquire a stronger foundation to this.

You could also switch this out easily for something like Codecademy's HTML & CSS course and still get similar results. Or if you are up for a challenge, Udacity's course Intro to HTML and CSS is far more complete, and slightly more challenging.

Bonus: If you can get your hands on Jon Duckett's HTML and CSS: Design and Build Websitesbook, it's also a rock solid starting point for learning HTML & CSS (with a sprinkle of web design). It's highly rated (4.7/5 on Amazon), offers a solid introduction to the world of web development. It's a beautiful book thanks to it's clean design with big letters and colorful pages. I often come back to it just to admire it.

Less / Sass

For those unfamiliar, Less & Sass are CSS transpilers that allow you to write CSS in a more elegant manner. This lets you do things that aren't normally supported, like nesting CSS rules. Once finished, these CSS transpilers "compile" your code and convert it to normal CSS.

There are 2 major CSS transpilers right now: Less and Sass. Sass is the more popular one, but I found learning Less first to be easier, mainly because using Sass on your computer requires also installing Ruby, which I wasn't fond of.

You can get a quick, yet complete overview of Less using WinLess's Online Less Compiler and it's code examples to see how your Less code would turn into CSS. You can also try Sass online using SassMeister (though this doesn't include code examples).

It doesn't matter whether you learn Less or Sass first. They're extremely similar, so once you know one, you pretty much know the other. You can find a great quick comparison between Less and Sass on Shelby Moulden's article Comparison between LESS & SASS.

Responsive Design

I originally learned about responsive design and Bootstrap using Codeschool's HTML & CSS path, but I recently found Udacity's course by Google on Responsive Web Design Fundamentals to be fantastic at covering the basics and beyond in a far more complete manner than Codeschool did.

You can do responsive design without any additional framework, but it's far easier with the help of a responsive framework like Bootstrap. Bootstrap's official documentation is very well made so you should have no problem at getting started with it.

If you are having trouble grasping it's basic principles, read Froont's blog post on 9 basic principles of responsive web design. It has beautiful clean & simple animations that help illustrate visually the principles of responsive web design.

AngularJS

I didn't really know what exactly AngularJS was back then, but I knew everyone was talking about it, and that if I wanted to become a web developer I needed to learn it. I found Google Developer's Design Decisions in AngularJS to provide the best general overview of what AngularJS was and how it improved making web applications.

I first thought of learning AngularJS through their official documentation, but this turned out to be a terrible idea. The documentation wasn't very easy on beginners, and the cluttered formatting made it hard to read and understand.

I then proceeded to learn AngularJS through Codeschool. With my positive experience on the JavaScript and CSS courses also from there, I expected nothing less than a great course. I was wrong. The course was a disaster from the get go, since the algorithm used to check if you got the code example right sometimes didn't work right and marked your clearly right solution as incorrect. There were even times where all it took to fix the broken validation system was a page refresh. As for the course's content, it wasn't great either. It did an ok job at explaining the basic components of an AngularJS application, but it did a terrible job at integrating these into a real application, leaving me with far more questions than I started with.

After some searching around forums, I stumbled upon Egghead.io(free / paid) where I had much better luck. Their course material was a lot cleaner, more concise, and more complete, making for a far better experience. Not to mention that apart from their courses, they have bite-sized 2-5 minute lessons that cover important topics. (For example: What is a controller? What is a filter? What is $scope?) These make it really easy to understand the basics. They also have some videos that require payment, but they are usually the ones covering more advanced angular topics you will not need until later on. I took their AngularJS Fundamentals course and I was fully satisfied with the results (and also became a big fan of Egghead.io's courses in the process).

Design Patterns

Design patterns are basically reusable code solutions that can be repeatedly used to solve common software problems. Having a foundation on this will make you far more competitive software developer in any programming language. This will also make it easier for you to understand other people's code, since you'll quickly identify what design pattern they used on their code to better understand it.

I found the 2 best sources to learn this are doFactory's JavaScript Design Patterns and Addy Osmani's Learning JavaScript Design Patterns. I found doFactory a lot easier to understand, while Addy Osmani's book was a lot more complete.

Chrome DevTools

Chrome is one of the most powerful tools for a web developer. The sooner you master it, the more time you can save later on. Codeschool's free course Explore and Master Chrome DevTools does a great job at introducing them.

Git (Version Control)

Ah, Git - the tool I never knew I needed until I discovered what it could do. Git basically it lets you keep a track of the changes you make to your code so that if things go wrong, you can roll back to a previous point in time. It also lets you see your code's history.

I found CodeSchool's free Try Github course to be a friendly way to get started. Atlassian's Git training was superb at covering the more advanced commands available. Codeschool's Git Learning Path is also great at covering Git's fundamentals.

NodeJS

It didn't take long before I learned that having a basic understanding of NodeJS would help me greatly in my quest of becoming a web developer (more on this soon).

I tried Codeschool's courses on Node, but I found them really lacking in content. I found NodeSchool.io to be a far better teacher at getting the basics right, and it was fun! I loved the hands-on approach it offered, which was similar to Codeschool and Codecademy - with the added improvement that I was really running NodeJS.

Task Runners (Grunt & Gulp)

Grunt and Gulp were quite a big surprise to me in that I had no idea tools like that even existed - but I'm extremely glad they do! Basically, these task runners allow you to automate common tasks. For example, remember Less/Sass? Normally you would have to manually run the CSS compiler every time you make an edit for it to compile the CSS, and then update the browser. Using a task runner, you can set it up to watch your Less/Sass files for changes, and when it detects a change, compile your CSS, and automatically refresh the browser. This is immensely useful at reducing your development time.

There are 2 main task runners right now: Grunt and Gulp. While they do the exact same thing, they work in very different ways, with Grunt being a lot more verbose and configuration oriented, and Gulp being shorter to write and preferring code over configuration.

Knowing NodeJS will help you write better Grunt and Gulp files since both of them run on NodeJS. You can pick whichever you want, but I found Gulp to be far easier to learn and write. I still today prefer it because of its minimalist - yet powerful - pipe-based approach.

I found Scotch.io's courses on Grunt and Gulp to be among the best out there.

Challenges I faced on my first job

Once I covered the fundamentals of web development, I was ready for my first web development interview for an entry level position. I won't go into details about the interview since this isn't this article's main focus. But I will say that I was told my relatively strong JavaScript knowledge help me secure the position. (Thanks, Eloquent JavaScript!)

I have to say, I was quite nervous on my first project. It involved making reusable web components with HTML, CSS and JavaScript, along with Bootstrap, Sass, Grunt as tooling. T

he two biggest mistakes I found at first were:

1. Fear of failure. Because I was the new guy, I was constantly in fear of my code being wrong or poorly made, so I spent a lot of time double-checking everything and adhered to coding best practices. Because of this, I rarely attempted solutions in creative new ways because of my fear that it might not work correctly at the end. This effectively shut down my drive to learn new things.

2. Doing things because "X" person who knows better than me said so. I did this a lot at first. While not completely wrong, doing things in a certain way only because "X" expert on the matter said so - without knowing why - lead to me not really knowing when to why things were done the way they were. I soon learned that there were exceptions to everything, and that you always should know the reason behind best practices.

Thankfully, I had an understanding team lead during my first project who helped me overcome these issues. He constantly motivated me to try new things, even if things went wrong sometimes. He also told me to question everything - even his teachings.

In time, I learnt my lesson. From then on, I've always been a person that looks forward to trying new things. I always try to understand why best practices exist, when they're right, and when they don't apply to a situation.

Using AngularJS in an actual project also posed quite a big challenge for me. This was mainly because a lot of the things I did with it, I did without fully understanding why they happened. I thought of it as "angular magic."

There were many times that I wished I knew how Angular actually worked, but it was scary looking at the documentation.

I eventually stumbled upon an amazing book called Build Your Own AngularJS. I didn't read all of it, but reading the section on Scopes and Watchers and how they worked really unveiled how the magic behind angular, wasn't really magic. It was just a clever way of maintaining data-binding using dirty checking and nested scopes. I highly recommend this book to anyone seeking to fully understand AngularJS.

The other challenge I faced a year later was how fast web development progressed. I had just mastered AngularJS and Grunt, and was feeling all proud and mighty - only to soon find out Gulp and ReactJS were on the horizon. And a year later after learning them, Webpack started gaining ground, and I had to learn that too. As you can imagine, a big part of me was pretty disappointed with how quickly some of my knowledge became obsolete. But a coworker soon enlightened me by telling me something that changed how I viewed libraries and frameworks forever:

"Libraries and Frameworks may become obsolete, but the concepts and solutions they propose often survive the test of time."

He was right. AngularJS may have become obsolete, but fully understanding the magic behind it helped me better understand React's web component architecture, which improved upon Angular's Directives concept. It also helped me understand how ReactJS gained so much popularity, as well as what kind of future awaited.

I don't recall facing any other major challenges on my subsequent projects. But what I will say is that over the course of the 2 years I've been doing web development, the #1 thing that has helped succeed (according to my own coworkers) was my excitement and my powerful drive to always be on the lookout for new things to learn. I soon found out this was a winning combination with web development since things over here change really, really fast, with new frameworks and libraries constantly emerging.

On the flip side of the coin, the other thing that helped me a ton - and something I found out quite recently actually - was understanding what not to learn. This became critical to my process of becoming a better web developer.

It's not uncommon to see people criticizing the abnormally fast pace of evolution of web technologies, or how a new JavaScript library or framework comes out nearly every day. But in time I saw the light and finally understood:

You don't have to learn every new library or framework that comes out.

Often it's a great idea to do a simple hello world example app so you can see what a framework offers. Then you can move on. But usually, you should try to focus on what best suits your project's needs. This can be hard at first, but thankfully great places like Stack Overflow, Medium and Reddit exist where you can find useful discussions between frameworks, and figure out which ones fit your specific use cases the best.

Going Further

In the upcoming years, I proceeded to continuously improve in the following ways

JavaScript

Once you finish Eloquent JavaScript, it's rather easy to say and feel like you've mastered JavaScript, but then comes You Don't Know JS and it absolutely destroys you (or at least it did to me). This book series (free by the way) was mentioned to me several times by a few senior web developers in the office as the book to read, and that only until I've read it can I say I fully know JavaScript. They were right, since page after page it continuously blew my mind as to how truly complex JavaScript really was, as well as many, many common pitfalls un-experienced & experienced people without a proper JavaScript understanding may have.

Reading that book series really opened my mind, and I also highly recommend it to anyone wanting to call themselves an expert JavaScript developer. Once you got that out of the way, there are 2 extra resources I highly recommend to get an even further, more advanced JavaScript knowledge;

JavaScript, The Better Parts: An amazing talk by D. Crockford that talks about JavaScript's biggest weaknesses, it's "Foot Guns," and how to utilize them as its strengths.

The Two Pillars of JavaScript: a solid article by recognized JavaScript Medium writer Eric Elliott that talks about the 2 great pillars of JavaScript: Prototypical Inheritance and Functional Programming

Once you have a profound understanding of JavaScript, proceed with ECMASCript 2015 (also known as ES6), the latest, and current JavaScript standard. Smashing Magazine's article ECMAScript 6 (ES6): What's New In The Next Version Of JavaScript is a great short review of what's new in ES6. You can try ES6 in the browser using Babel's online transpiler.

CSS

CSS can get messy and disorganized very, very quickly. There have been quite a few different methodologies proposed to write cleaner CSS, but 2 stand out which I highly recommend you read about ASAP to stay competitive:

SMACSS: Scalable and Modular Architecture for CSS. A flexible guide to developing sites small and large.

BEM: a methodology that helps you to achieve reusable components and code sharing in the front-end.

I personally prefer SMACSS because of it's cleaner look, but some companies and CSS Frameworks still use BEM, so it's worth knowing both.

You should also start focusing on your CSS's performance. Smashing Magazine's article Managing Mobile Performance Optimization and HTML5 Rocks's article High Performance Animation did a solid job at providing a head start on this. A quick read through both articles should give you a solid foundation.

JavaScript Bundlers

By now you should have strong understanding of Grunt or Gulp. The next step is adding a JavaScript bundler to your task runner, which will allow for a more modular organization of your JavaScript application.

The two biggest players right now are:

Browserify: lets you require modules in the browser by bundling up all of your dependencies.

Webpack: basically Browserify on steroids. Harder to configure and set up.

Scotch.io's mini-course Getting Started with Browserify can provide you a jump-start with browserify, while David Fox Powell article Why Can't Anyone Write a Simple Webpack Tutorial? is a great, fun to read introduction to webpack.

Personally I haven't spent a lot of time using webpack, but in my time with it, I have to say it's been amazing - even if it's slightly harder to set up. If you are just getting started, I'd go for Browserify since it's a lot simpler to set up. Just be aware that webpack is the future, and what bigger projects are starting to use.

ReactJS

ReactJS is quickly gaining popularity, and it doesn't seem to be slowing down - to the extent that people are asking "Is React killing Angular?"

Scotch.io's Learning React.js: Getting Started and Concepts provides a solid overview of React. Once you got that out of the way, continue with Egghead.io's course on React Fundamentals where you will build a fully working ReactJS app and then migrate it to ES6 syntax. You can follow up with the official ReactJS documentation which is very well made and will allow you to fully master it.

Since React is only the view, it's highly recommended you learn Redux. Most courses on Redux are a bit complex in my opinion, but CSS Tricks Leveling Up with React: Redux does score a great balance between simplicity and being informative at getting started with Redux.

You might have also heard of Flux at this point, but if you're wondering why you should use Redux over Flux, check out the question on Stack Overflow Why use Redux over Facebook Flux? which was answered by Redux's creator!

Looking back on my mistakes and what I learned

I made a lot of mistakes in my 2 years of learning web development. Overall, I think my biggest mistake was not mastering the basics before moving on to libraries and frameworks. I guess this applies to almost every programming language out there, but in my opinion it applies even more to JavaScript. This is because in many ways, JavaScript is a broken language and contains a lot of "Foot Guns" (you should have heard of this if you watched D. Crockford's talk on "JavaScript, the better parts" I mentioned earlier). These can make life insufferably hard if you don't fully understand them.

I recall once having gotten stuck in an AngularJS issue with $scope which took me 3 days to debug, only to find it wasn't even an AngularJS issue, but a JavaScript issue that I caused myself because of failing to understand how this works.

Clean Code

It's strange that I don't see this talked about as often. I didn't always care for writing clean code, but honestly it's one of the things I'm most proud of having learned. This is because everyone loves to complain how their last place had one of the worst, ugliest code base in the world. So why can't anyone talk about how great their last one was? How their code ended up so clean and well made they were proud of it?

This is a trend I'd like to change, and I believe a difference can be made if enough people push for it. Strive to make variable and function names understandable in English, even if you have to write a bit more. Not doing so will only lead to you having to manually document it sometime in the future to make it clearer. This will also cause your overall codebase to become harder to understand by new developers and yourself. Yes, yourself. Why yourself? Because if you're not enforcing clean code, what makes you think your coworkers should enforce it and write clean code for you to easily understand? Let's lead by example.

And if that isn't a good enough incentive, people very often recognize and value clean code writers. You'll find that by writing clean code your coworkers and friends will enjoy working with you even more, and in turn, you'll live a happier life.

jQuery

Some of you might notice I also didn't make much of an emphasis on jQuery. This is because in my experience, I found jQuery did me more harm than good at first. Some of you may not agree, but please let me explain: When I first learned it, the general idea I understood was that jQuery was everywhere and that you could use it for pretty much everything. Because of this, I got used to using jQuery for pretty much anything, and for any problem I encountered, I looked for a solution for it that used jQuery.

Don't get me wrong, jQuery was awesome in my time using it, so awesome in fact, that I blindly ignored that 90% of what I did with jQuery could be done natively in modern browsers in a similarly easy syntax.

You may now be thinking: "So what's wrong with that? jQuery doesn't weight all that much anyway and using it you still end up writing less code than if you did things natively." But using jQuery over native APIs wasn't the problem. The problem was that my entire way of thinking and all the solutions to common problems I knew up until that point required jQuery to work. And this became a huge problem when I got my first project and was told jQuery wasn't a dependency.

Using jQuery made me useless without it, and made me completely ignore the native methods and solutions that have always existed. It made all my solutions less portable too, since using them required jQuery.

Since then, I've strived to not use jQuery unless it is absolutely necessary and truly provides big improvement in efficiency and readability to our codebase (for example, heavy DOM manipulation).

Once again, don't get me wrong, jQuery is great, but if I could go back in time and meet my past self that was just learning web development, I'd heavily advise myself against learning jQuery altogether until I've learned how to do things without it. If you are having trouble doing the switch like I did, check out You Might Not Need jQuery.

Courses

As for course material; while a lot of CodeSchool's courses were outstanding (The HTML & CSS branch was specially fantastic), even if a few of their courses on frameworks fell flat a bit flat (AngularJS, BackboneJS, etc.).

I also took quite a lot of Pluralsight courses, which I didn't mention because after all this time, I've reached the conclusion that picking their learning path is overall a bad idea and unreliable. Since their courses are made by teachers who aren't always (in my opinion) very good at teaching, I found their course quality fluctuates wildly since their course quality standards are non-existent. I've had courses where even the person giving the course sounded like he was falling asleep. And I honestly don't have the attention span to keep paying attention on a 6-10 hour course - and a lot of them last that long, if not longer.

I spent a good 80-100 hours of training in Pluralsight, and I honestly want a good part of it back. Don't get me wrong, I had a few amazing courses on Pluralsight, but their focus on quantity over quality really made me waste my time. I could have learnt so much more if I had taken courses from better sources like Egghead.io and CodeSchool, where they value more quality of quantity.

The only reason I could ever think of someone using Pluralsight is to take a course that no other website has in some more obscure technology (like Installshield, or Xamarin), or to take a few very specific courses that they know were very well received and reviewed (For example, John Papa's Angular Fundamentals).

Overall, if you want to use Pluralsight, be sure that you are taking courses hand-picked by someone that took them first and that are recognized as high quality and useful.

I also recently tried Team Treehouse training and I've got to say, I'm amazed at the quality that went into their courses, even rivaling that of CodeSchool, and their course material is highly extensive.

After skimming through the HTML, CSS and JavaScript learning paths there, I see you could easily acquire the foundation of pretty much everything. Don't believe me? Just look at their learning tracks and tell me it's not amazing. Sure, it's a bit expensive at $30 USD a month, but in my opinion it's incredibly worth it. (I'm paying for it right now to learn WordPress since I need it for a freelance project and the material is great).

A word on paid courses

I felt a need to speak about this since I've noticed the general consensus that you can learn programming without paying a dime and be as competitive as one that paid for a course. While true, I cannot stress enough the value paying for the right course has. Sure, quite a lot of the most valuable course material I've written about is free, but a lot of it is also paid. Mainly because sometimes you just can't beat having someone carefully explain things to you in a visual way.

Yes, there are terrible learning paid courses which I would advise against since their value proposition is questionable (see Pluralsight), but others like Egghead.io, CodeSchool, and Team Treehouse offer outstanding bang-for-your-buck, despite their relatively costly monthly subscription ($25-$30 a month). Plus, they all have free 7-15 day trials so you can see which one works best for you.

If you play your cards right, paying 1-2 months of either of them can easily net you knowledge you would only otherwise get after stumbling upon countless of articles and blog posts over a year. They're honestly that good.

So yes, they are not necessary, but if you can afford at least one month, you can be sure it will give you a strong edge.

The secret sauce for success

I've met a lot of developers over the past 2 years I've been a web developer. Along my journey, I've met a few developers who really stood out - developers who were clearly in a league of their own, and to whom me and everyone else looked up to. I found these individuals shared quite a few characteristics, which I'd like to share with you right now. These are in my opinion the secret sauce to being a successful web developer:

Love what you do. This is simply the most important characteristic of them all. If you don't love what you do (be it CSS Styling or JavaScript), it will truly show in what you do. Those who are passionate about what they do often clearly stand out from the crowd.

Be generous and share your knowledge. It's very easy to want to keep that new CSS/JavaScript hack you found that solves the project's issues a secret, but please don't. The people who share their knowledge the most are often the most valuable, since they can be placed in any kind of team and improve it's quality by a huge margin.

Always be on the lookout for new things. Most of the successful developers I've met share this common trait. Whether it be by reading blogs, spending lots of time in programming related discussions, or even talking about what's new in web development during lunch breaks. Being on the lookout for new things all the time allows the best developers to always stay ahead of the curve.

The shortest route

Whew, this article took a while to finish (6 hours and counting). We're almost done! You may be wondering: "Ok, cool story, but what's the quickest route?" And so, here it is.

I've organized this in the way that I would take it if I could go back and do things right. I also added a few bonuses, which I would have loved to have had back then. Enjoy!

Javascript

1. CodeSchool or Treehouse's Javascript learning path (paid) OR Codecademy's Javascript course

2. Eloquent JavaScript

3. You Don't Know JS

4. JS: The Right Way

5. Learn ES6 by Egghead.io

HTML & CSS

1. CodeSchool or Treehouse's HTML & CSS learning path(Paid) OR HTML and CSS: Design and Build Websites by John Ducket OR Codecademy's HTML & CSS course.

2. Specifics on CSS Specifity by CSS Tricks

3. Learn CSS Layout

4. 9 basic principles of responsive web design by Front

5. Responsive Web Design Fundamentals by Google on Udacity (Take if you didn't use CodeSchool or Treehouse learning path)

6. Managing Mobile Performance Optimization by Smashing Magazine OR Browser Rendering Optimization and Website Performance Optimization by Google on Udacity

7. Web fundamentals by Google

Developer Tools

1. Explore and Master DevTools by CodeSchool

2. Learn Git by Codecademy and Try Github by Codeschool

3. Introduction to Linux Commands by Smashing Magazine

4. Automate Your Tasks Easily with Gulp.js by Scotch.io

AngularJS

1. Design Decisions in AngularJS by Google Developers (Intro to AngularJS)

2. AngularJS fundamentals by Egghead.io

3. John Papa's Angular Styleguide

4. Creating a Single Page Todo App with Node and Angular (MEAN) by Scotch.io

5. AngularJS application structure by Egghead.io (Paid) OR Scotch.io's Angular Courses

ReactJS

1. Learning React.js: Getting Started and Concepts by Scotch.io

2. Intro to webpack by Egghead.io

3. React Fundamentals by Egghead.io

4. Leveling Up with React: Redux by CSS Tricks

Back End

1. NodeJS tutorials by NodeSchool.io

2. How I explained REST to my Wife

3. Creating a Single Page Todo App with Node and Angular by Scotch.io (Node, ExpressJS, MongoDB, Angular, REST)

Bonus: Resources

Completely optional, but some of my favorite articles and resources which I've found over the years which you will probably love if you are interested in their respective topic.

Web Design in 4 minutes. A very creative and original interactive tutorial that teaches you the fundamentals of web design.

Awwards. Looking for web design inspiration? Look no further.

Why Hiring is so hard in tech by Eric Elliott. Here Eric is does an amazing job at summarizing how it's surprisingly hard to find great developers, and how to become one.

NoSQL database systems mega comparison by Kristof Kovacs. This is a superb comparison between the most popular NoSQL database systems out there. MongoDB, Redis, CouchDB, Cassandra, ElasticSearch, they and more are all here.

XSS Game. Cross-site scripting (XSS) bugs are one of the most common and dangerous types of vulnerabilities in Web applications. Using this awesome resource you can learn how to find and exploit XSS bugs, and how to prevent them from happening to your web application.

How To Write Unmaintainable Code. Hilarious article on how nottowrite maintainable, clean code.

Bonus: My tools

I thought it'd also be nice to share some of the tools I discovered (some well known, some not so much) that have made my life easier as web developer so here they are.

Jetbrains Webstorm: Full featured Web Development IDE. (My editor of choice) Paid, but offers a 1 year free license for students.

Atom.io: Highly extensible text editor with IDE like features rivaling Webstorm. Free.

Sublime Text: Lightning fast text editor with plugins support and an aesthetically pleasing look. (I normally keep Webstorm/Atom installed as IDE for serious work, and Sublime Text installed for quick edits to files.)

caniuse.com: Browser support is critical for websites, and this is the #1 resource at figuring out what features are supported by which browser version and which are.

Cloud 9: Cloud based development environment and IDE with Git support that runs on Linux. Great for programming remotely and testing out NodeJS or other server side things without needing to install anything on your machine

CodePen, Plunker and JSFiddle: Great cloud based front end playgrounds that let you do quick HTML/CSS/JS demos you can share, or work on later on if you create a free account. CodePen is often best for CSS related things because of it's minimalistic interface and plethora of CSS related features, Plunker for JavaScript demos because of it's powerful JS features, and JSFiddle for demos that you wish to collaborate with others in real time thanks to it's live editor sharing collaboration feature.

Vanilla List: A repository of JavaScript plugins and libraries using only vanilla JavaScript (meaning they require no libraries to work, like jQuery)

YouMightNotNeedjQuery: You probably don't. See for yourself.

PublicAPIs: Ever wondered what public APIs exist? Look no further!

Gravit.io: Cloud based design application rivaling adobe illustrator. (Free!) Useful for quick mockups and web design.

Adobe Kuler: Webapp to help you create harmonious color combinations for any website. Also has an "Explore" showcase of color palettes built by other designers as well as a ranking system to help inspire you.

Name that color: Stop spending lots of time figuring out how to name your color variables in less/sass and just use their rightful name with this webapp

Conclusion

I'd just like to say I really enjoyed writing this, and it makes me really happy to have been finally able to give something back to the incredibly supportive programming community everywhere.

As some of you already noticed, this is my first blog post, but you can be sure I plan to write more. Just don't expect one every week. Remember: quality over quantity!

If any of you have any questions left, feel free to leave a comment and I'll do my best to get back to you ASAP.

I hope this was useful to you guys, until next time, Best!

# data[].attributes.attachment_link.title
My journey to becoming a web developer from scratch without a CS degree (and what I learned from...

# data[].attributes.attachment_link.description
First, let me introduce myself. My name is Sergei Garcia, and I'm a full-time front end developer with 2 years experience. In that time, I've worked as a front-end developer for both a Forbes 500 consulting firm and a small company.

# data[].attributes.attachment_link.readable_text
I remember when I first started learning front-end development. I encountered so many articles, and was so overwhelmed by how much material I would need to learn that I didn't even know where to start.

This guide will help you navigate learning front-end development. It provides learning resources that I found effective in the past, along with supplementary explanations.

To keep this guide digestible, I broke it up into two parts. Part one goes over developing interfaces with HTML and CSS. Part two goes over Javascript, frameworks, and design patterns. If you're familiar with HTML and CSS you can skip to part two which covers everything Javascript.

HTML and CSS basics

In front-end development, everything starts with HTML and CSS. HTML and CSS control what you see on a web page. HTML dictates content while CSS handles styling and layout.

To get started, read the HTML and CSS tutorials by Mozilla Developer Network(MDN). The MDN provides chapter-by-chapter explanations of important HTML and CSS concepts. In addition, each chapter is only a page long, with interactive demos linked out to CodePen and JSFiddle.

After completing those tutorials, take a look at the Make a Website course by CodeAcademy. This tutorial only takes a few hours to complete, and is a good primer for building websites with HTML and CSS. If you want more, Building web forms is another tutorial by CodeAcademy that takes you through building and styling a web form.

For practice with CSS, try out CSS Diner. It's a fun CSS challenge game. Another important aspect of HTML and CSS are layouts. LearnLayout is an interactive tutorial that shows you how to create layouts with HTML and CSS.

Also, learn how to use Google Fonts with Basics of Google Font API by CSSTricks. Typography is a fundamental building block of interfaces. When you have time, I would highly recommend you read this free online book, Professional Web Typography by Donny Truong. It teaches you everything you need to know about typography as a front-end developer.

Throughout these resources, don't worry too much about memorizing things. Instead, focus on understanding how HTML and CSS work together.

Practicing HTML and CSS Basics

Now that you have a basic grasp of HTML and CSS, let's have some fun. In this section, there are two experiments designed to give you practice building websites and interfaces. I use the term "experiments" because in experiments, you learn as much from your failure as you do from your success.

Experiment 1

In our first experiment, we are going to use CodePen. CodePen is a front-end playground where you can code HTML and CSS without having to store files locally. It also has live previews that update as soon as you save your code.

By using CodePen, you kill two birds with one stone. On one hand, you practice HTML and CSS. On the other hand, you create a basic progress portfolio. We are also going to use Dribbble, which is a site full of design inspiration.

Go to Dribbble and find a design that is simple enough to code in a few hours. I selected a few designs to get you started: 1, 2, 3, 4, and 5. I chose mobile-first web designs because they are less complex than their desktop counterparts. However, feel free to choose desktop designs as well.

After you've decided on a design, go ahead and try coding it in CodePen. If you get stuck, remember that StackOverflow is your friend. Another useful practice is to go on websites like Medium, AirBnB, and Dropbox and using the i nspector tool to see how they achieve different layouts and styles. Also, take a look at some of the pens on CodePen. I picked out a few good references:

If your copy looks different from the original, don't be discouraged. Keep practicing with different designs and you'll notice improvement each time.

If you don't have a design background, it's likely your design eye is underdeveloped. A front-end developer with a good design eye will be able to identify good designs and replicate them perfectly. I wrote an article a few weeks ago on how to develop your design eye.

Experiment 2

Hopefully the first experiment gave you some confidence with writing HTML and CSS. For experiment 2, we're going to take a look at some sites, then code a few of their components.

Some websites use CSS frameworks or obfuscate their CSS classnames, making it hard for you to read their source code. That is why I selected a few well-designed websites with easy to read source code.

Dropbox for Business: Try replicating their hero section

AirBnB: Try replicating their footer

PayPal: Try replicating their navigation bar

Invision: Try replicating their signup section at the bottom of the page

Stripe: Try replicating their payments section

Once again, the focus of experiment 2 is not to recreate the entire page. Although that certainly wouldn't hurt! Choose a couple of key components like a navigation bar or a hero section to code. I provided a suggestions next to the list of sites but feel free to choose other components.

You can code this experiment in CodePen or store it locally. If you choose to store it locally, you can either download this example project as a boilerplate or create the files from scratch. I suggest using an editor like Atom or Sublime.

Also, keep in mind that for any website, you can always see its HTML and CSS. Just right click the page or a component on the page, click inspect, and a panel will pop up with the HTML on the left and the CSS on the right. Once you are done or get stuck, use the inspector to see how your HTML and CSS compare.

HTML and CSS Best Practices

So far what you've been learning are the basics of HTML and CSS. The next step is to learn best practices. Best practices are a set of informal rules that improve the quality of your code.

Semantic Markup

One of the best practices for HTML and CSS is to write semantic markup. Good web semantics means using appropriate HTML tags and meaningful CSS class names to convey structural meaning.

For example, the h1 tag tells us that the text it wraps is an important heading. Another example would be the footer tag, which tells us that the element belongs at the bottom of the page. For further reading, read A Look Into Proper HTML5 Semantics and What Makes For a Semantic Class Name by CSSTricks.

CSS Naming Conventions

The next important best practice for CSS is proper naming conventions. Good naming conventions, like semantic markup, convey meaning and help make our code predictable, readable, and maintainable. You can read about the different naming conventions in the article OOCSS, ACSS, BEM, SMACSS: what are they? What should I use?

In general, I suggest trying out simple naming conventions that make intuitive sense to you. Over time, you'll discover ones that work best for you. To see how companies like Medium utilize naming conventions like BEM, read Medium's CSS is actually pretty f***ing good. In that article, you'll also learn that coming up with an effective set of CSS conventions is an iterative process.

CSS Reset

Browsers have small styling inconsistencies from margins to line-heights. For this reason, always reset your CSS. MeyerWeb is a popular reset. If you want to dig deeper, you can read Create Your Own Simple Reset.css File.

Cross Browser Support

Cross browser support means that your code supports most up-to-date browsers. Some CSS properties like transition need vendor prefixes to work properly in across different browsers. You can read more about vendor prefixes in this article, CSS Vendor Prefixes. The main take away is that you should test your website across multiple browsers including Chrome, Firefox, and Safari.

CSS Preprocessors and Postprocessors

Since the introduction of CSS in 1990s, CSS has come a long way. Since UI systems have become increasingly complex, people came up with tools known as preprocessors and postprocessors to manage complexity.

CSS preprocessors are CSS language extensions that add bells and whistles like variables, mixins, and inheritance. The two main CSS preprocessors are Sass and Less. In 2016, Sass is generally more widely used. Bootstrap, the popular responsive CSS framework, is switching from Less to Sass as well. Also, when most people talk about Sass, they're actually talking about SCSS.

CSS postprocessors apply changes to CSS after it has been either hand written or compiled by a preprocessor. For example, some postprocessors like PostCSS have plugins that add browser vendor prefixes automatically.

When you first discover CSS preprocessors and postprocessors, it's tempting to use them everywhere. However, start off simple and add extensions like variables and mixins only when necessary. The article I suggested earlier, Medium's CSS is actually pretty f***ing good, also covers how much is too much when it comes to preprocessors.

Grid Systems and Responsiveness

Grid systems are CSS structures that let you stack elements horizontally and vertically.

Grid frameworks like Bootstrap, Skeleton, and Foundation provide stylesheets that manage rows and columns in layouts. While grid frameworks are useful, it's also important to understand how grids work. Understanding CSS Grid Systems and Don't Overthink Grids are great overviews.

One of the main purposes of grid systems is to add responsiveness to your website. Responsiveness means that your website resizes based on window width. A lot of times responsiveness is achieved by using CSS media queries, CSS rules that only only apply to certain screen widths.

You can read more about media queries in Intro to Media Queries. Also, because we have entered a mobile-first era, check out An Introduction to Mobile-First Media Queries.

Practicing HTML and CSS Best Practices

Now that you are armed with best practices, let's battle test them. The goal of these next two experiments is to practice writing clean code and observing the long term effect of best practices on readability and maintainability.

Experiment 3

For experiment 3, pick one of your previous experiments and refactor your code using some of the best practices you've learned. Refactoring means editing your code so that it's easier to read and less complex.

Being able to effectively refactor code is an important skill of a front-end developer. Creating quality code is an iterative process. CSS Architectures: Refactor Your CSS is a good starting point for refactoring your code.

Here are a few things to ask yourself when you are refactoring your code.

Are your class names ambiguous? 6 months from now, will you still understand what your class name means?

Is your HTML and CSS semantic? When glancing at your code are you able to quickly discern structural and relational meaning?

Are you reusing the same hex color code over and over again in your code? Would it make more sense to refactor it into a Sass variable?

Does your code work just as well on Safari as it does on Chrome?

Could you replace some of your layout code with a grid system like Skeleton?

Are you using the !important flag often? How can you fix that?

Experiment 4

The last experiment put what you've learned about best practices to use. However, the effects of best practices often don't become apparent until you apply them to a bigger project.

For the last experiment, build yourself a portfolio website. As a front-end, your portfolio site is one of your most important digital assets. A portfolio is a site that showcases your work. More importantly, it's an on-going record that helps you track your progress and development. So even if you only have 1 or 2 things to show, put it up.

To get started, follow along with Adham Dannaway's article, My (Simple) Workflow To Design And Develop A Portfolio Website

If your first portfolio iteration isn't perfect, that's okay. Portfolios go through many iterations. And, what's important that you built it with your own skills.

Stay current

While HTML and CSS won't go out of vogue anytime soon, it's important to stay up to date with the front-end landscape.

Below is a list of websites, blogs, and forums that are both enjoyable to read and informative.

Learn by example

Finally, the best way to learn is by example. Here are a set of styleguides and code conventions that will teach you how to be a more effective front-end.

Styleguides

Web styleguides are collections of CSS components and patterns that can be reused across a website. The key thing to note from these styleguides is how component based HTML and CSS approaches allow you to reuse code to keep your code DRY.

Code Conventions

Code conventions designed to make your code readable and maintainable. Some of these links like CSS Guidelines are guidelines for writing better HTML and CSS while other links like Github internal CSS toolkit and guidelines are examples of quality code.

Wrap up

Hopefully by the end of this article, you are familiar with HTML and CSS and have a few projects under your belt. The best way to learn front-end is by building projects and experimentation. Remember, every front-end developer has to start somewhere. And it's better to start today than tomorrow.

This article is the first of a two part series. The second article covers adding interactivity with Javascript and Javascript libraries/frameworks. Also, if you want me to elaborate on anything or have any questions, feel free to leave a note or Tweet out to me.
P.S. If you liked this article, it would mean a lot if you hit the recommend button or share with friends.

If you want more, you can follow me on Twitter where I post non-sensical ramblings about design, front-end development, bots, and machine learning.

# data[].attributes.attachment_link.title
From Zero to Front-end Hero (Part 1) - freeCodeCamp

# data[].attributes.attachment_link.description
I remember when I first started learning front-end development. I encountered so many articles, and was so overwhelmed by how much material I would need to learn that I didn't even know where to start. This guide will help you navigate learning front-end development.

# data[].attributes.body
Wat de titel zegt: dé gids voor CSS

# data[].attributes.attachment_link.description
If you're a web designer or app developer interested in sophisticated page styling, improved accessibility, and saving time and effort, this book is for you. This revised edition provides a comprehen...

# data[].attributes.body
Een heel praktijkgericht boek vol voorbeelden van de modernste HTML5 en CSS3 technieken

# data[].attributes.body
Goede inleiding in de modernste CSS3 technieken

# data[].attributes.attachment_link.readable_text
Dive in to-or polish up-your CSS3 skills: tackle new properties and techniques and get up to speed on micro layouts.

From advanced selectors to generated content to web fonts, and from gradients, shadows, and rounded corners to elegant animations, CSS3 holds a universe of creative possibilities. No one can better guide you through these galaxies than Dan Cederholm. In this second edition, he tackles new properties and techniques, including micro layouts. Learn what works, how it works, and how to adapt for browsers where it doesn't.

What's new in the second edition?

Many of the CSS3 properties Dan discussed in 2010 now have wider browser support, which means you can feel even more confident putting them to use. In this updated edition, Dan has carefully refreshed code samples, removed old hacks that are no longer necessary, and written a whole new chapter on micro layouts. There's no better time to dive in to-or polish up-your CSS3 skills.

Contents

1. Using CSS3 Today

2. Understanding CSS Transitions (Read this chapter online)

3. Hover-Crafting with CSS3

4. Transforming the Message

5. Multiple Backgrounds

6. Enriching Forms

7. Micro Layouts

Recommended with...

Buy both and save up to 15%

What People Are Saying

New browser versions and updated features test our documentation to stand up to time. Dan Cederholm freshens this book to the latest standards: adding crucial info about new approaches like flexbox, and cleaning out the cruft that we no longer need to worry about.

CSS3 is still unchartered territory. Specifications have been drafted and implementations are emerging, but authors will need a good guide to get through the marshes. Dan's book is an excellent companion for CSS3 pioneers.

If you need a cogent, concise, comprehensible, and above all compelling tour of the latest and greatest in CSS3, look no further. As ever, Dan is the man!.

Dan has a wonderful gift for breaking down complex concepts into easy-to-understand steps. I have always found the CSS3 transitions and transforms syntax challenging, but Dan makes it simple.

About the Author

Dan Cederholm is the cofounder and designer of Dribbble, a vibrant community of designers sharing their work. He's also the founder of SimpleBits, a tiny design studio and blog.

A longtime advocate of standards-based web design, Dan has worked with YouTube, Microsoft, Google, MTV, ESPN, Electronic Arts, Blogger, Fast Company, and more. He was a 2012 TechFellow for Product Design & Marketing, and cofounded and designed Cork'd, the first social network for wine aficionados.

Dan has written four other books: Sass for Web Designers (A Book Apart), Handcrafted CSS (New Riders), Bulletproof Web Design, Third Edition (New Riders) and Web Standards Solutions, Special Edition (Friends of ED).

He likes banjos, ampersands, and cautious adventuring. Dan is merely a casual fan of space travel. He lives in Salem, Massachusetts with his two children, Jack and Tenley.

Additional Info

ISBN: 978-1-9375572-0-1

Paperback: 139 pages

Published: First Ed. Nov 16, 2010; Second Ed. Feb 24, 2015

First Ed. also available in: Chinese, French, Korean, Russian

Also from A Book Apart

# data[].attributes.attachment_link.description
Dive in to-or polish up-your CSS3 skills: tackle new properties and techniques and get up to speed on micro layouts. From advanced selectors to generated content to web fonts, and from gradients, shadows, and rounded corners to elegant animations, CSS3 holds a universe of creative possibilities.

# data[].attributes.body
Goede inleiding in de modernste HTML5 technieken

# data[].attributes.attachment_link.readable_text
HTML5 isn't as confusing as it once was, but it still isn't straightforward. It's an evolutionary, rather than revolutionary, change in the ongoing story of markup-and if you're currently creating websites with any version of HTML, you're already using HTML5. Harness the power of this essential evolving spec with help from Jeremy Keith and Rachel Andrew. Brush up on syntax and updated elements, and get ready to work with responsive images, microformats, and microdata. Through clear, practical examples, you'll be up to speed in no time.

What's new in the second edition?

A lot has changed since this little book was first published. Cowritten and introduced by Rachel Andrew, the second edition highlights exactly how to implement those changes. From wrangling JavaScript APIs to revisiting the canvas and managing rich media, this updated original continues to be the perfect primer.

Contents

1. A Brief History of Markup (Read this chapter online)

2. The Design of HTML5

3. Rich Media

4. Web Forms 2.0

5. Semantics

6. Using HTML5 Today

Recommended with...

Buy both and save up to 15%

What People Are Saying

Rachel and Jeremy cover a very wide spectrum of everything you need to know about HTML5 in a short, easily digestible format. They clear up a lot of confusion about HTML5 features, especially when comparing old and new. Highly recommended for anyone who wants a solid overview (including relevant history) of HTML5.

HTML remains the foundation of everything we build for the web, from the simplest page to the most complex experience. To properly understand this foundation-particularly in its most recent incarnation, HTML5-there's no better primer than the second edition of this book.

Crack open this book after you fasten your seatbelt in Boston. Before you land in Chicago, you'll stop worrying and finally, fully understand HTML5. As usual, Mr. Keith takes a complex topic and eloquently describes it for the rest of us.

With superhuman ease and wit, Jeremy Keith always makes the densest technical concepts seem approachable, intuitive, and-dare I say it-fun. He's done it again with HTML5.

About the Authors

Jeremy Keith lives in Brighton, England where he makes websites with the splendid design agency Clearleft. You may know him from such books as DOM Scripting, Bulletproof Ajax, and Resilient Web Design. Hailing from Erin's green shores, Jeremy maintains his link to Irish traditional music running the community site The Session. He also indulges a darker side of his bouzouki-playing in the band Salter Cane. Jeremy spends most of his time goofing off on the internet, documenting his time-wasting on adactio.com, where he has been writing for over fifteen years.

Rachel Andrew lives in Bristol, England. She is the cofounder of edgeofmyseat.com, the web development company behind Perch CMS. She works on everything from product development to DevOps to CSS, and writes about these subjects on her blog at rachelandrew.co.uk.

Rachel has been working on the web since 1996 and writing about the web for almost as long. She's written several books including the bestselling CSS Anthology from Sitepoint, and recent ventures into self-publishing have produced The Profitable Side Project Handbook and CSS3 Layout Modules, Second Edition. She is a regular columnist for A List Apart as well as other publications online and in print. When she's not writing, Rachel often works with other authors as a technical editor.

Rachel is a keen distance runner who encourages people to join her for a run when attending conferences, with varying degrees of success!

Additional Info

ISBN: 978-1-9375572-4-9

Paperback: 92 pages

Published: First Ed. May 4, 2010; Second Ed. Feb 17, 2016

First Ed. also available in: Chinese, French, Korean, Russian

Also from A Book Apart

# data[].attributes.attachment_link.title
HTML5 For Web Designers by Jeremy Keith & Rachel Andrew

# data[].attributes.attachment_link.description
HTML5 isn't as confusing as it once was, but it still isn't straightforward. It's an evolutionary, rather than revolutionary, change in the ongoing story of markup-and if you're currently creating websites with any version of HTML, you're already using HTML5. Harness the power of this essential evolving spec with help from Jeremy Keith and Rachel Andrew.

# data[].attributes.body
Een heel mooi, visueel en goed verstaanbaar boek. Als je een boek zou kopen over HTML & CSS, laat het dan dit zijn.

# data[].attributes.attachment_link.title
bol.com | HTML en CSS - websites ontwerpen en bouwen, Jon Duckett | 9789043026802 | Boeken

# data[].attributes.attachment_link.description
HTML en CSS - websites ontwerpen en bouwen (paperback). HTML en CSS - websites ontwerpen en bouwen 1e druk is een boek van Jon Duckett uitgegeven bij Pearson Benelux B.V.. ISBN 9789043026802 DIT BOEK IS VOOR Ontwerpers en programmeurs Online redacteuren en auteurs Marketing- en webwinkelmedewerkers Bloggers en hobbyisten JE LEERT HOE JE HTML5 en CSS3 schrijft Pagina's en hele websites...

# data[].attributes.body
Een cursus met video en veel uitleg. Wel met een iets hogere moeilijkheidsgraad.

# data[].attributes.attachment_link.title
Learn HTML - Intro to HTML and CSS | Udacity | Udacity

# data[].attributes.attachment_link.description
Learn HTML with Udacity's Intro to HTML and CSS course. In this online course, you'll learn the underlying structure of the web - HTML. You'll apply web styling skills through CSS and learn about CSS syntax.

# data[].attributes.body
Een echte hands-on manier om de basis van HTML en CSS al doende te leren.

# data[].attributes.attachment_link.description
Learn the basics of HTML, the essential language of the web. This course covers version 5 of HTML.

# data[].attributes.body
Lees daarna deze een keer door.

# data[].attributes.attachment_link.description
CSS is used to style and lay out web pages - for example, to alter the font, colour, size and spacing of your content, split it into multiple columns, or add animations and other decorative features.

# data[].attributes.body
Lees deze eerst een keer door.

# data[].attributes.attachment_link.description
At its heart, HTML is a fairly simple language made up of elements, which can be applied to pieces of text to give them different meaning in a document (Is it a paragraph? Is it a bulleted list? Is it part of a table?), structure a document into logical sections (Does it have a header?

# data[].attributes.headline
HTML en CSS tutorials (voor zelfstudie of voor wie extra ondersteuning of materiaal wil)

# data[].attributes.subject
HTML en CSS tutorials (voor zelfstudie of voor wie extra ondersteuning of materiaal wil)

# data[].attributes.body
Overzicht van de go-to site voor als je een CSS3 property nog niet helemaal begrijpt. Check zeker ook de ‘Snippets’

# data[].attributes.attachment_link.description
A reference guide to the many features of CSS. See something that needs to be updated? Let us know!

# data[].attributes.body
Een prachtig, goed leesbaar overzicht met duidelijke voorbeelden. Echt een aanrader!

# data[].attributes.attachment_link.readable_text
An extensive CSS reference with all the important properties and info to learn CSS from the basics

Codrops uses cookies for its advertisement solutions and for analytics. We hope you're ok with this, but you can opt-out if you wish. Read our Privacy Policy and Cookie Policy. OK

# data[].attributes.attachment_link.description
An extensive CSS reference with all the important properties and info to learn CSS from the basics Codrops uses cookies for its advertisement solutions and for analytics. We hope you're ok with this, but you can opt-out if you wish. Read our Privacy Policy and Cookie Policy. OK

# data[].attributes.body
De referentie van w3schools is duidelijk en goed leesbaar. Let wel op hij is niet altijd 100% correct.

# data[].attributes.attachment_link.description
Well organized and easy to understand Web building tutorials with lots of examples of how to use HTML, CSS, JavaScript, SQL, PHP, and XML.

# data[].attributes.body
Dit is waarschijnlijk het beste en het volledigste overzicht ter wereld. Sla deze op in je bookmarks.

# data[].attributes.attachment_link.description
Use this CSS reference to browse an alphabetical index of all the standard CSS properties, pseudo-classes, pseudo-elements, data types, and at-rules. You can also browse a list of all the CSS selectors organized by type and a list of key CSS concepts. Also included is a brief DOM-CSS / CSSOM reference.

# data[].attributes.body
Een zeer goed overzicht van alle HTML5 tags en hoe ze semantisch correct gebruikt kunnen worden. Zeer goede informatie!

# data[].attributes.attachment_link.readable_text
This is a quick reference of elements that are new or have been redefined in HTML5. For each element there is a short description, a link to the specification, and a code example. "Our prognosis" links to the HTML5 Doctor article on the element. There are more articles in the Article Archive.

Element navigation

A

a

The target, rel, media, hreflang, and type attributes must be omitted if the href attribute is not present.

http://dev.w3.org/html5/spec/Overview.html#the-a-element code snippet

area

The area element represents either a hyperlink with some text and a corresponding area on an image map, or a dead area on an image map.

If the area element has no href attribute, then the area represented by the element cannot be selected, and the alt attribute must be omitted.

http://dev.w3.org/html5/spec/Overview.html#the-area-element code snippet

Represents a section of a page that consists of a composition that forms an independent part of a document, page, or site. This could be a forum post, a magazine or newspaper article, a Web log entry, a user-submitted comment, or any other independent item of content.

http://dev.w3.org/html5/spec/Overview.html#the-article-element code snippet

Represents a sound or audio stream.

Content may be nested inside the audio element. User agents should not show this content to the user. Authors should use this content to force older browsers to use a legacy audio plugin or to inform the user of how to access the audio content.
Supported audio codecs:
http://dev.w3.org/html5/spec/Overview.html#audio code snippet

B

Represents a span of text to be stylistically offset from the normal prose without conveying any extra importance. Examples are key words in a document abstract, product names in a review, or other spans of text whose typical typographic presentation is bold.

http://dev.w3.org/html5/spec/Overview.html#the-b-element code snippet

base

The base element allows authors to specify the document base URL for the purposes of resolving relative URLs, and the name of the default browsing context for the purposes of following hyperlinks. The element does not represent any content beyond this information.

http://dev.w3.org/html5/spec/Overview.html#the-base-element code snippet

blockquote

The blockquote element represents a section that is quoted from another source.

Content inside a blockquote must be quoted from another source, whose address, if it has one, may be cited in the cite attribute.

http://dev.w3.org/html5/spec/Overview.html#the-blockquote-element code snippet

C

Represents a resolution-dependent bitmap canvas, which can be used for rendering graphs, game graphics, or other visual images on the fly.

When authors use the canvas element, they must also provide content that, when presented to the user, conveys essentially the same function or purpose as the bitmap canvas. This content should be nested within the canvas element as a fallback.

http://dev.w3.org/html5/spec/Overview.html#the-canvas-element code snippet

The caption element represents the title of the table that is its parent, if it has a parent and that is a table element.

http://dev.w3.org/html5/spec/Overview.html#the-caption-element code snippet

cite

The cite element represents the title of a work (e.g. a book, a paper, an essay, a poem, a score, a song, a script, a film, a TV show, a game, a sculpture, a painting, a theatre production, a play, an opera, a musical, an exhibition, a legal case report, etc). This can be a work that is being quoted or referenced in detail (i.e. a citation), or it can just be a work that is mentioned in passing.

A person's name is not the title of a work - even if people call that person a piece of work - and the element must therefore not be used to mark up people's names. (In some cases, the b element might be appropriate for names; e.g. in a gossip article where the names of famous people are keywords rendered with a different style to draw attention to them. In other cases, if an element is really needed, the span element can be used.)

http://dev.w3.org/html5/spec/Overview.html#the-cite-element code snippet

colgroup

The colgroup element represents a group of one or more columns in the table that is its parent, if it has a parent and that is a table element.

If the colgroup element contains no col elements, then the element may have a span content attribute specified, whose value must be a valid non-negative integer greater than zero.

http://dev.w3.org/html5/spec/Overview.html#the-colgroup-element code snippet

D

datalist

http://dev.w3.org/html5/spec/Overview.html#the-datalist-element code snippet

Represents a description list consisting of zero or more name-value groups. Each group must consist of one or more names ( dt elements) each followed by one or more values ( dd elements).

Name-value groups may be terms and definitions, metadata topics and values, or any other groups of name-value data. The values within a group are alternatives; multiple paragraphs forming part of the same value must all be given within the same dd element.

http://dev.w3.org/html5/spec/Overview.html#the-dl-element code snippet

doctype

A DOCTYPE is a required preamble and must consist of the following characters, in this order:

1. A string that is an ASCII case-insensitive match for the string "<!DOCTYPE".

2. One or more space characters.

3. A string that is an ASCII case-insensitive match for the string "html".

4. Optionally, a DOCTYPE legacy string or an obsolete permitted DOCTYPE string (defined below).

5. Zero or more space characters.

6. A U+003E GREATER-THAN SIGN character (>).

http://dev.w3.org/html5/spec/Overview.html#the-doctype code snippet

E

embed

Represents an integration point for an external(typically non- HTML) application or interactive content.

The optional src attribute specifies the URL of the resource being embedded.

The optional type attribute specifies the MIME type of the plugin to instantiate. The value must be a valid MIME type, optionally with parameters. If both the type attribute and the src attribute are present, then the type attribute must specify the same MIME type as the explicit Content-Type metadata of the resource given by the src attribute.

http://dev.w3.org/html5/spec/Overview.html#the-embed-element code snippet

F

fieldset

The fieldset element is expected to establish a new block formatting context.

If the fieldset element has a child that matches the conditions in the list below, then the first such child is the fieldset element's rendered legend:

The child is a legend element.

The child is not out-of-flow (e.g. not absolutely positioned or floated).

The child is generating a box (e.g. it is not 'display:none').

http://dev.w3.org/html5/spec/Overview.html#the-fieldset-element code snippet

The figure element represents some flow content, optionally with a caption, that is self-contained and is typically referenced as a single unit from the main flow of the document.

The figure element can be used to annotate illustrations, diagrams, photos, code listings, etc., that are referenced in the main content of the document, but that could, without affecting the flow of the document, be moved away from that primary content - e.g., to the side of the page, to dedicated pages, or to an appendix.

http://dev.w3.org/html5/spec/Overview.html#the-figure-element code snippet

I

Represents a span of text in an alternate voice or mood, or otherwise offset from the normal prose, such as a taxonomic designation, a technical term, an idiomatic phrase from another language, a thought, a ship name, or some other prose whose typical typographic presentation is italicized.

http://dev.w3.org/html5/spec/Overview.html#the-i-element code snippet

iframe

The iframe element represents a nested browsing context.

Any number of comments and space characters.

Optionally, a DOCTYPE.

Any number of comments and space characters.

The root element, in the form of an html element.

Any number of comments and space characters.

http://dev.w3.org/html5/spec/Overview.html#the-iframe-element code snippet

img

The src attribute must be present, and must contain a valid non-empty URL potentially surrounded by spaces referencing a non-interactive, optionally animated, image resource that is neither paged nor scripted.

The img element must not be used as a layout tool. In particular, img elements should not be used to display transparent images, as they rarely convey meaning and rarely add anything useful to the document.

http://dev.w3.org/html5/spec/Overview.html#the-img-element code snippet

K

kbd

The kbd element represents user input (typically keyboard input, although it may also be used to represent other input, such as voice commands).

When the kbd element is nested inside another kbd element, it represents an actual key or other single unit of input as appropriate for the input mechanism.

http://dev.w3.org/html5/spec/Overview.html#the-kbd-element code snippet

L

link

The link element allows authors to link their document to other resources.

The destination of the link(s) is given by the href attribute, which must be present and must contain a valid non-empty URL potentially surrounded by spaces. If the href attribute is absent, then the element does not define a link.

A link element must have rel attribute.

http://dev.w3.org/html5/spec/Overview.html#the-link-element code snippet

M

main

The main element is an exact analogue of ARIA's role="main", and is designed to show screenreaders and assistive technologies exactly where main content begins, so it can be a target for a "skip links" keyboard command, for example. It could also be used for content syndication (Instapaper-ish things); mobile browsers could zoom in on main when encountering non-responsive websites. It should therefore be used once per page. If you use something like<div id="main"> (or similar, such as <div id="content">), simply replace that with <main role="main">.

http://www.w3.org/html/wg/drafts/html/master/grouping-content.html#the-main-element code snippet

Represents a run of text in one document marked or highlighted because of its relevance in another context.

When used in a quotation or other block of text referenced in a document, it indicates a highlight that was not present in the original document - e.g., a portion of text in an academic publication that has recently come under additional scrutiny.

http://dev.w3.org/html5/spec/Overview.html#the-mark-element code snippet

The menu element represents a list of commands.

If a menu element's type attribute is in the context menu state, then the element represents the commands of a context menu, and the user can only interact with the commands if that context menu is activated. If a menu element's type attribute is in the toolbar state, then the element represents a list of active commands that the user can immediately interact with.

If a menu element's type attribute is in the list state, then the element either represents an unordered list of items (each represented by an li element), each of which represents a command that the user can perform or activate, or, if the element has no li element children, flow content describing available commands.

http://dev.w3.org/html5/spec/Overview.html#menus code snippet

The meta element represents various kinds of metadata that cannot be expressed using the title, base, link, style, and script elements.

http://dev.w3.org/html5/spec/Overview.html#meta code snippet

When the meter binding applies to a meter element, the element is expected to render as an 'inline-block' box with a 'height' of '1em' and a 'width' of '5em', a 'vertical-align' of '-0.2em', and with its contents depicting a gauge.

When the element is wider than it is tall(or square), the depiction is expected to be of a horizontal gauge, with the minimum value on the right if the 'direction' property on this element has a computed value of ' rtl', and on the left otherwise. When the element is taller than it is wide, it is expected to depict a vertical gauge, with the minimum value on the bottom.

http://dev.w3.org/html5/spec/Overview.html#the-meter-element-0 code snippet

N

Represents navigation for a document. The nav element is a section containing links to other documents or to parts within the current document.

Not all groups of links on a page need to be in a nav element - only groups of primary navigation links. In particular, it is common for footers to have a list of links to various key parts of a site, but the footer element is more appropriate in such cases.

http://dev.w3.org/html5/spec/Overview.html#the-nav-element code snippet

O

optgroup

The optgroup element represents a group of option elements with a common label. The element's group of option elements consists of the option elements that are children of the optgroup element.

When showing option elements in select elements, user agents should show the option elements of such groups as being related to each other and separate from other option elements.

http://dev.w3.org/html5/spec/Overview.html#the-optgroup-element code snippet

option

The option element represents an option in a select element or as part of a list of suggestions in a datalist element.

In certain circumstances described in the definition of the select element, an option element can be a select element's placeholder label option. A placeholder label option does not represent an actual option, but instead represents a label for the select control.

http://dev.w3.org/html5/spec/Overview.html#the-option-element code snippet

Represents the result of a calculation.

The optional for attribute allows an explicit relationship to be made between the result of a calculation and the elements representing the values that influenced the calculation. If specified, the for attribute must contain a string consisting of an unordered set of unique, space-separated tokens, each of which must be the ID of an element in the same document.

http://dev.w3.org/html5/spec/Overview.html#the-output-element code snippet

P

progress

Represents the completion progress of a task. Progress may be either indeterminate - meaning it is unclear how much work remains before the task is complete (e.g., the task is waiting for a response from a remote host) - or a numeric value between 0 and a given maximum, explicitly specifying the fraction of work that has so far been completed.

http://dev.w3.org/html5/spec/Overview.html#the-progress-element code snippet

Q

q

The q element represents some phrasing content quoted from another source.

http://dev.w3.org/html5/spec/Overview.html#the-q-element code snippet

R

Represents a container for base text and ruby text - small annotations used for phonetic readings in languages such as Japanese and Chinese. Examples include furigana and zhùyin fúhào (bopomofo).

http://dev.w3.org/html5/spec/Overview.html#the-ruby-element code snippet

T

Represents a precise date and/or time in the proleptic Gregorian calendar. The time element encodes modern dates and times in a machine-readable way, so that, for example, user agents could offer to add an event to the user's calendar.

http://dev.w3.org/html5/spec/Overview.html#the-time-element code snippet

V

Represents a video or movie.

Content may be nested inside the video element. User agents should not show this content to the user. Authors should use this content to force older browsers to use a legacy video plugin or to inform the user of how to access the video content.

http://dev.w3.org/html5/spec/Overview.html#video code snippet

# data[].attributes.attachment_link.description
This is a quick reference of elements that are new or have been redefined in HTML5. For each element there is a short description, a link to the specification, and a code example. "Our prognosis" links to the HTML5 Doctor article on the element. There are more articles in the Article Archive.

# data[].attributes.headline
Mozilla Developer Network HTML Reference

# data[].attributes.subject
Mozilla Developer Network HTML Reference

# data[].attributes.body
Dit is waarschijnlijk het beste en het volledigste overzicht ter wereld. Sla deze op in je bookmarks.

# data[].attributes.attachment_link.description
This page lists all the HTML elements, which are created using tags.

# data[].attributes.body
De referentie van w3schools is duidelijk en goed leesbaar. Let wel op hij is niet altijd 100% correct.

# data[].attributes.attachment_link.description
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.