You have to make a choice. Choose...wisely.

Get occasional notifications about things like product discounts, blog posts, and new or updated tutorials. Unsubscribe at any time.

Gift Delivery Options
Quick Checkout
or Pay by Credit Card
Error processing your payment
  • You didn't choose whether or not to be added to the mailing list

Payments and credit card details are securely managed and protected by Learn Enough's payment processor, Stripe. More information on their site:


Your Cart is Empty


Our Philosophy

Learn Enough to Be Dangerous

The name “Learn Enough” refers to the philosophy that you don’t have to learn everything about most subjects—you just have to learn enough to be dangerous.

In this context, “dangerous” is meant to have a positive meaning, indicating that you are able to get things done.

Part of this philosophy involves know what to leave out, at least initially. For example, some HTML tutorials cover code for submitting information, called a form, but never make forms that do anything! Whereas Learn Enough HTML to Be Dangerous doesn’t cover forms at all, because you need a full programming language in order to do anything useful. Instead, forms first get covered in Learn Enough JavaScript, where form submission is caught and handled in the browser, and then in Learn Enough Ruby, which uses the Sinatra web framework to handle form submissions on the back-end server.

Technical sophistication

We also believe in the importance of technical sophistication, the ability to figure out technical problems on your own. Technical sophistication includes concrete skills like command lines, text editors, and coding, as well as fuzzier skills like Googling the error message and knowing when to just reboot the darn thing.

Everything we do is for real

Another aspect of the Learn Enough approach is doing everything for real. This means that right from the start you’ll be using the real tools used every day by software developers and other technical people.

You’ll also be making and shipping real projects. For example, in Learn Enough Git to Be Dangerous, you use the amazing Git version control system to track changes in a real HTML project. I don’t want to spoil the Secret Bonus at the end, but let’s just say that if you’ve never published anything to the live Web, that situation will be remedied by the end of the tutorial—and all before you’ve even reached Learn Enough HTML!

An integrated system

The Learn Enough tutorials are designed as a careful system of integrated, interlocking projects that build on each other.

This means that each tutorial is as self-contained as possible, while referencing other tutorials in the sequence. For example, as noted above, Learn Enough Git to Be Dangerous teaches version control using a simple but real HTML website. Learn Enough HTML to Be Dangerous the incorporates Git right from the start, allow us to deploy a live site in the first section. Meanwhile, both tutorials build on and reference Learn Enough Command Line and Learn Enough Text Editor, the previous two tutorials in the sequence.

Taken together, the Learn Enough tutorials prepare you for a comprehensive introduction to web application development, the Ruby on Rails Tutorial.

We believe the most useful kind of programming is web development, and the best technology for learning it is the free and open-source web framework known as Ruby on Rails. Ruby on Rails, or just “Rails” for short, has many features that make it ideal for learning web development. It’s a “batteries included” framework that comes with everything you need to write a complete full-stack web app right out of the box.

Join the Mailing List

Get occasional notifications about things like product discounts, blog posts, and new or updated tutorials. Unsubscribe at any time.