So today on Twitter I asked:
Best book on CSS for a n00b?
— Alan Jacobs (@ayjay) September 27, 2013
I mainly got recommendations for websites, which is cool, but some of the people who recommended websites were extremely adamant that it is totally wrong to try to learn CSS from a book. “Books are probably the absolute worst way to learn tech/web/coding stuff.” “Books on a topic like this are a total waste of time.” (See what I mean by “extremely adamant”?) The denunciations of books on CSS made two points: that any book will be incomplete — which isn’t really relevant to someone just trying to learn the basics — and that books are outdated upon publication — which might be slightly more relevant, but not much. I’d be looking for a very recent book, and the CSS standards, especially for the kinds of minimal styling that I’d be interested in, aren’t changing that fast.
But you know, I could use one or more of the many online CSS tutorials out there — so why wouldn’t I? They would be free, which a book would not be; they’re instantly accessible. Seems like a no-brainer.
Except I’ve discovered from my pretty minimal past experience with coding — or the closest I’ve come to coding — that I really struggle with online guides and learn much more easily from books. Part of it is what Erin Kissane said:
@ayjay I find most new skills easiest to learn when I can explore specifics (via experiment) *and* understand abstractions (via reading).
— erin kissane (@kissane) September 27, 2013
But I also seem to find it visually more helpful to have a book open next to my computer rather than switch back and forth between online resources and my text editor. If I can keep my text editor open and visible at all times and then cut my eyes back and forth to the page with instructions and examples, I can stay better focused on the task — and on what’s wrong with the stuff I’ve typed. I can also highlight passages in the book, underline or annotate them, dog-ear the pages, go back and forth quickly between one section and the next…. By contrast, online tutorials are mechanistic, relentlessly linear, and controlling of my pace and my attention.
I learned most of what I know about AppleScript from a book; ditto with LaTeX; and I think I’ve had so little success learning my first real programming language, Python, because I haven’t found the right book. (I’m going to try this one next.) But I’ve never had any success at all learning from online tutorials.
YMMV, of course. Which is my chief point.
5 Comments
Comments are closed.
This is why many people I know have two displays. Context switch with overlapping windows is terrible. I only have one display, and can attest to the annoyance of trying to fully see the pages of an ebook about something while also trying to do work in an editor window. This is not a problem of ebooks as such, but a problem of not enough real estate.
There are, of course, actual problems with ebooks, as you've noted.
I hate learning from online tutorials, too, both because of the context switching between windows that Franklin mentions and the inability to flip between pages that you do.
I'm pretty sure I learned CSS over a decade ago from this book, which you can pick up now for about 80 cents used. Some of the specifications are going to be a little out of date, but my experience with CSS, as a semiprofessional user, is that once you've grasped the idea of how it works, then you can just flip over to web tutorials when you hit a snag.
But take my advice with a grain of salt. I use WordPress in a number of work contexts and can almost always get its CSS to do what I want, but definitely spend more time on some tweaks that I know a real designer would have figured out in a minute or less. Really, if you're only looking for a basic introduction to CSS, I'd honestly just wander over to the university bookstore and flip through a few options, including HTML guides instead of books that focus directly on CSS. CSS is not especially complex, and my bet is that you'll pick it up fairly quickly once you have a decent introduction.
Part of the problem with most technical tutorial books (and online tutorials, admittedly) is that they are focused on technical details rather than going into exactly why you would use the tool that way. It's much simpler to write that way, of course, and truly understanding a programming language deep enough to teach it is a rarer enough skill without also having to pair it with technical writing skills.
CSS hasn't changed much on a technical level, even CSS3, so even a dated book will probably give you a good introduction to the basics. The theory and best practices have changed, quite a lot, so I'm not aware of any CSS books that cover the current best practices.
Still, you may need a good grasp on the fundamentals of the box model to understand why the best way to center a column is actually fairly simple and doesn't require elaborate float hacks. So any book that gets you past the initial technical hurdles may do. Once you do have a grasp on the basics, the best reference is probably the actual W3C standards documents (http://www.w3.org/standards/webdesign/htmlcss).
Similarly, If your Python book doesn't do the trick, you can always look at Learn Python the Hard Way, which does have a physical book. Unless you've tried that one already, of course.
Programming in general is a hard thing to teach. Partially, I think, because it requires a way of thinking is a bit alien, since it has to be concrete enough to interface with the physical world and abstract enough to operate in the formal realm. There are a few books that keep recurring in the conversation, even if the language they were for is completely outdated, because they have something to say about the underlying computer science.
And at some point there is no substitute for interacting with the machine: many programmers use Project Euler to learn their next language for that exact reason, though you need a good grasp of syntax before that will help.
It depends on what you mean by learning. If you need to learn some language just enough to perform some task, than finding a tutorial or copying and pasting someone else's code is good enough. That's how I usually start out. But that method is roughly the equivalent of speaking French from a tourist's guide book. Once you want to learn the structure and idiom of a programming language, there is really no substitute for an in-depth book, such as The Well-Grounded Rubyist or The Art of R Programming or the LaTeX book you mention.
But if there's a structure and rationale to CSS I've never discovered it.
I am a professional programmer, mostly taught from *books* (though I do have a degree in Computer Science, earned many years ago, in an entirely different age). Ultimately, online resources are the best aides, but in order to get there, you need a roadmap, a good familiarity with the lexicon and terms, and a way of looking at the tools.
Unfortunately, the ratio of good programming tomes to mediocre and/or bad programming books is extremely lopsided. And I can't think of a single book on CSS that is exceptional — my favorite has by the creators (Hakum Wium Lee, Bert Bos), 1st edition written back in the 90s and a 2nd edition penned in 2005. Other than that, Eric Meyer, *CSS, The Definitive Guide* or O'Reilly (publisher) *CSS3: The Missing Manual* are decent.