Join 3,418 readers in helping fund MetaFilter (Hide)


Beginner-friendly books on learning various software, CMSs, progamming langs, etc.?
June 11, 2010 2:42 PM   Subscribe

I want to learn PHP, SQL, Flex, Ajax, JavaScript, Joomla, Drupal, and the Adobe CS4 design premium programs (Dreamweaver, Flash, InDesign, Illustrator and Fireworks specifically.) Not all in one go of course, but I want to focus on these in particular. What books have you found to be the most helpful in becoming proficient with them? I have some experience with HTML, CSS and Wordpress if that helps. P.S. - I'm mainly relying on the library/ILL to defray costs, but will buy books if need be. My work schedule prevents me from taking classes.
posted by Anima Mundi to Computers & Internet (27 answers total) 43 users marked this as a favorite
 
I know them all (the things you want to learn), I suggest anything from O'Reilly or Sams "Teach yourself" books. I like O'Reilly because they are clean and to the point. The Sam books are well liked by some of my beginning programmer friends and students. The "Teach Yourself VISUALLY" series is good, but I find them too basic, which might be good for you. I suggest you start with Dreamweaver, then work in the other technologies as you need them. You could also learn Coldfusion (part of the Adobe suite), which is free for developers. (The server app costs money.)

Sorry about not providing specific books, but there are too many of them. But if I were only to choose one series, it would be O'Reilly. You can get access to many of them online at Safari, it is a paid subscription.
posted by fifilaru at 3:02 PM on June 11, 2010


Lynda.com is awesome - the video tutorials are great for this type of thing.

I've found the Adobe sites and forums to be useful for troubleshooting (here's the one for Dreamweaver).

I generally just check out everything that looks promising on a given subject, and poke around later to figure out which works best. The only book that stands out to me as super-awesome and useful was "Smashing Wordpress", which is great for beyond-the-basics, as well as getting familiar with PHP. I agree with the above that all the basic how-to books generally serve the purpose just fine.
posted by Fifi Firefox at 3:07 PM on June 11, 2010 [1 favorite]


2nding the O'Reailly series.


Example code from contributors to the discussion boards on www.php.net are pretty helpful, for instance (scroll down.)

Likewise W3C schools for SQl is a handy reference (though maybe not the best learning tool for starting out.)
posted by oblio_one at 3:07 PM on June 11, 2010


2nding Lynda.com!
posted by TheBones at 3:23 PM on June 11, 2010


You are biting off big chunks of information, much of which has no real relationship with each other. Do you know how to program in any procedural language?
posted by sonic meat machine at 3:24 PM on June 11, 2010


(procedural is a poor term, I should use "algorithmic" or something I guess...)
posted by sonic meat machine at 3:26 PM on June 11, 2010


Books and tutorials are useful, but the best thing you can do is dive into the official documentation and figure it out from there. The handholding of "learn X in 24 hours" becomes an impediment once you're trying to figure out something more advanced than the tutorials and code samples handle.

Also, dig into the code and learn to read it and understand what's going on. This doesn't mean MySQL or the Actionscript interpreter, it means the internals of Drupal, Joomla, and jQuery. For some reason a lot of programmers think that reading what others wrote in code isn't very helpful--this attitude mystifies me. Being comfortable reading the code that others write is the foundation of using those technologies well.
posted by fatbird at 4:16 PM on June 11, 2010


Pro Drupal Development is a really really good Drupal book. I bought it in print AND as an e-book I liked it so much.
posted by meta_eli at 4:37 PM on June 11, 2010


That's a big chunk of information you've bitten off there. Maybe equivalent to a 3-year undergrad degree. What are you trying to accomplish?

Joomla and Drupal sit in the same space, so I would pick just one. Pro Drupal Development (2nd ed) is the book that our devs use. It's got a lot missing, but it's probably the most complete book on Drupal (there's basically no current documentation for Views, for example, either online or dead-tree).

I think, once you've got a handle on PHP, a book on jQuery might be more useful than a book on Javascript or Ajax. Just pick something from O'Reilly
posted by Leon at 4:48 PM on June 11, 2010


(BTW, I'd hate to be responsible for exposing a beginner to Drupal - it's not exactly best-of-breed. I can't comment on Joomla, though).
posted by Leon at 4:51 PM on June 11, 2010


Maybe not just as you start Javascript, but maybe a little while after you;ve tried it for a while and think you know what it's about, pick up JavaScript: The Good Parts - it's really changes the way I code.
posted by Artw at 5:10 PM on June 11, 2010


Jeremy Kieths books are pretty good -for beginners DOM Scripting in particular, though the rising popularity jQuery and the like means you might want to adapt it;s techniques to use a library. He has a new one on the way covering HTML5.
posted by Artw at 5:19 PM on June 11, 2010


I know it's a lot, but I just wanted to know what books out there would be good. I do intend to start off with JavaScript, at the very least. Joomla has higher priority than Drupal right now since I'm working on a website that uses it as the CMS.

To me this is like learning a few languages. Eventually I want to get fluent, but in the meantime I'd like to know at least a few phrases so I can communicate as best I can with experts and other people I'll be encountering throughout projects (I'm a beginning designer.) fifilaru gave me the springboard I've been looking for. Thanks!
posted by Anima Mundi at 5:24 PM on June 11, 2010


It's really hard to learn to program with "just a few phrases." You are looking at a couple of tracks here: the design application track is relatively simple, akin to learning any other user-oriented piece of software. Learning to program, however, is an entirely different matter. Read the essay "Teach Yourself Programming in Ten Years." If you set out expecting to learn just a "few phrases," you're going to end up frustrated beyond belief. Try the book Python Programming: an Introduction to Computer Science. Python is a better language than PHP—more philosophically coherent, with clearer and more logical syntax, and less tied to the HTML paradigm—and this will give you a firm foundation for understanding both PHP and JavaScript. Understanding AJAX, of course, is dependent upon understanding JavaScript (and, usually, a JavaScript library like jQuery).
posted by sonic meat machine at 7:17 PM on June 11, 2010


The O'Reilly books are great for learning programming. However, programming and design require very different skillsets, and it takes a very special type of person to be able to do all of it well.

As a web designer, I have found Dreamweaver entirely useless. Instead, you should learn to write HTML and CSS straight up. No WYSIWYG editor is going to come even close to the clean usability of handcrafted code. To learn good web design, I would suggest Jeffery Zeldman's Designing With Web Standards as one of the first books you read. I would second Artw's suggestion for Jeremy Keith's books, the one on HTML5 is supposed to be especially insightful.

Though it is a good idea to learn a little bit about every aspect, people in the industry specialize into different roles, especially if you are working in an agency setting. What is your ultimate aim? Do you plan on staying mainly as a designer in an agency? Setting up as a one-man shop? If we know what your goal is, it might be easier to direct you to resources.
posted by thebestsophist at 7:19 PM on June 11, 2010 [2 favorites]


@thebestsophist - I think you describe it best. I don't want to be a programmer, but I've found it increasingly important to know at least some degree of coding, since it seems that that's whats expected even if you're not a programmer. I'm freelancing as a user experience designer and eventually want to get a full-time job as one (entry level positions have been impossible to come by, so I'm doing stuff on the side while I work at my day job.) I need to be prepared to wear different hats if need be. It's too early for me to specialize, I think.
posted by Anima Mundi at 8:09 PM on June 11, 2010


Yeah, most entry level positions start out as a designer or a developer and then you move up into more specialized positions. Do you come from a design school? How well do your coursework and portfolio support the title as a UX designer? (These are things agencies will probably care about. Though, never having been in an agency setting, I may be wrong. Someone else may have better insight into how agencies hire new talent.)

As the UX designer in a two-man shop, I actually don't do much programming. While I am able to handle PHP and have a love for Ruby, my suggestion is that ultimately it is more important for you to get a big-picture view of the development/programing side of things than actual proficiency. Because of that, I am going to offer slightly conflicting pieces of advice based on my view of how I think the industry will change in the next decade so you can decide which is more important for your particular situation.

My personal inclination is to suggest that you learn Ruby, read Why's Poignant Guide to Ruby, you'll learn a simple, solid programming language that encourages good programming behaviors. More and more servers now offer Ruby on Rails, which is a great (though resource intensive) web development framework (Twitter runs on Ruby). However, because Ruby is still somewhat young, and because it is more resource intensive, fewer actual websites use it. But if you are even a somewhat new a Ruby developer, you've got a toe in a rapidly growing market.

Even though it isn't actually a programming language, PHP is pretty standard for people to learn and know. You know this. Joomla (which I hate), Drupal, Wordpress, and plenty of other content management systems are built using it. The problem is that it's simplicity and forgiving nature promotes bad code. There is a lot of poorly written PHP code out there, and piss poor PHP developers are a dime a dozen. (I once came across a petition Wordpress plugin that stored every database entry in a single comma delimitated cell.) On the other hand, the market for PHP developers is much larger than the market for Ruby developers (and Ruby developers often also know PHP and several other languages very well). Again, I think O'Reilly's books would be best to learn PHP.

Similarly with programming and scripting languages, learning database languages is the same. MySQL and PostgreSQL are the big ones as long as you're in the small to medium category. I won't bother mentioning the enterprise level stuff, because as a freelancer, you're almost never going to touch them. What I will mention, however, is what is going to only get bigger in the next decade: document-oriented databases. As HTML5 gets wider adoption, document-oriented databases are only going to become more widespread. So if you learn a bit about CouchDB or MongoDB, along with traditional relational databases, you're going to have a huge foot up on other developers. (Sadly, I can't offer too much help in this area because I'm also still learning more about them.)

I think you are correct not to pick a single content management system to learn, in fact, I think you first learn a programming or scripting language before you start heading into CMSs. Each CMS works slightly differently and fills a slightly different niche. Also, it'll be much easier to learn how a CMS works after you've learned programming anyway (and they won't really make sense until you do).

I personally do not use Flash in my consultancy, and I know a lot of other design shops, large and small, that don't either. And again, as HTML5 becomes more widely used, I expect to see its usage dwindle. As its growth slows and it gets more marginalized with the growing mobile market (which is growing 8 times faster than the PC internet market is, by the way), Flash's importance will shrink dramatically. I am not saying this as an Apple fanboy, this is my honest assessment based on what I see as the direction of the web.

Speaking of the CS, you mentioned you need to learn to use Adobe CS4, this worries me. What is your education background? Using design tools like all the Adobe software tends to happen in a design school curriculum.

Just being able to use the software doesn't guarantee being a good or successful designer, just like knowing how to use Word doesn't make someone a great author. There is a lot of knowledge and experience that has to back a good designer to be able to make use of the tools. Mind you, it is possible to learn these without going to design school, but your job is a whole lot harder, and you can't just be learning how to use the software. Trust me, as someone who didn't go through design school, I know very well where my shortcomings in design are.

By the way, though you'll likely need to learn to use Adobe CS if you plan on entering an agency setting (CS5 just came out), I don't have or use any programs in the creative suite and we don't use it in my shop at all.
posted by thebestsophist at 11:04 PM on June 11, 2010 [1 favorite]


I think what people are trying to express to you is a worry that you are biting off a bit more than is really feasible. Let me give you some context. I am a programmer by trade, with a Computer Science degree from a top tier university. I would consider myself intermediate to advanced in half a dozen different programming languages, and have been programming in some form for about 10 years. I started learning Python about a year ago, and have since transitioned to a job where I am coding every day in that language. It took me at least three months of working in Python every day, 40+ hours a week, to get to the point that I felt comfortable calling myself a capable Python programmer, and there are still a lot of language features I am not taking advantage of and low level implementation details that I have not fully wrapped my head around.

For someone with no real programming experience to talk about first of all learning the fundamentals of programming and development, learning multiple scripting languages, learning multiple web frameworks, learning a database language, and then also learning multiple complex design applications is somewhat crazy. If you are serious about it, it can be done, but this is going to be a multi year learning process. If you just heard a bunch of acronyms and buzzwords on job posting boards, I would rethink your strategy. As others have said, you are better off focusing on a core specialization. Pick a framework and a language you want to work with and focus on that. If you are really good at Drupal development, you can get plenty off jobs with just that and a smattering of basic web knowledge. Get a book on the framework and a book on the language (Drupal->PHP, RoR_>Ruby, Django->Python) and start building a site.

Also...
Even though it isn't actually a programming language, PHP is pretty standard for people to learn and know.

As much as I dislike PHP, this particular criticism is invalid. PHP is very much a programming language.
posted by sophist at 1:33 AM on June 12, 2010


I want to get entirely into UX design and leave my current job. Like this anon poster I'm in libraries and indeed, it's become a dead-end field and the MLIS is a worthless degree (though thankfully my situation isn't as dire as theirs.) I want to develop a skill that will help me get a job ASAP, even if it means burning the midnight oil. From reading these new posts, it sounds as though I should be focusing on Drupal.
posted by Anima Mundi at 5:27 AM on June 12, 2010


As its growth slows and it gets more marginalized with the growing mobile market (which is growing 8 times faster than the PC internet market is, by the way)

The fact that something is "growing faster" then some other thing doesn't actually mean it's going to end up bigger. Especially since you're probably using a narrow definition of "mobile" to mean only smartphones. Basically, people are going to replace their old phones with smartphones over time, but most people are not going to do general purpose computing on tiny screens, no matter how high res they get. Some will, but I don't think it will be very common.
posted by delmoi at 6:01 AM on June 12, 2010


Are you an academic librarian? How versed are you in the research side of library sciences (ie informatics)? I ask because though you are marketing yourself as a UX designer, it may be an easier transition to be an information architect/UXer. Your CV would probably better back up that sort of role as well (and make it less of a hard split between the two jobs). The book Information Architecture: Blueprints for the Web is a great resource for this. Other books are: Sophist's suggestion is pretty good, learn one and you'll likely be fine (also, learning one will help you learn others). (I say that PHP isn't a programming language, because I differentiate between programming and scripting language, mostly uselessly semantic nowadays, but I do it anyway.)

delmoi, it's true, mobile will not replace computers for most people, however, that doesn't matter. It means that as a business, as an increasing number of users visit your site via mobile platforms (likely to check business hours, get directions, etc), you cannot afford to alienate them by just providing base functionalities and key content using Flash. But I digress.
posted by thebestsophist at 7:31 AM on June 12, 2010 [1 favorite]


I'd second Designing With Web Standards.

Of course, part of the problem here is that things have moved subtly onwards since a lot of these books were useful to me, so you're going to be careful in interpreting a lot of what they say in the light of modern technology and approaches. Designing With Web Standards probably still holds up though.
posted by Artw at 7:35 AM on June 12, 2010


@thebestsophist - Again, thanks for the advice. I'm in public libraries but I have had some experience in academic ones. I took an IA class during my Masters program and we read the Morville/Rosenfeld book. I'm frustrated by how long it's taking to transition fully into the IA/UX field, and I figured that a lack of programming knowledge was holding me back. While I'm not knocking continuing education, I'd really prefer to not have to go back to get a second Masters when I'm still paying through the nose to get my first one. :/
posted by Anima Mundi at 8:05 AM on June 12, 2010


First, I think what you're doing is great. Learning a little bit about a lot of things. Not only does it help you find the things you really want to become an expert on... it makes it much harder for other people to bullshit you.

For the Adobe apps, I used the "Classroom-in-a-book" books. I found them really, really helpful. Especially helpful learning the basics of Illustrator, InDesign, and Flash. I actually did take a class, but I think the books would be helpful on their own, if you actually went through the lessons, and then did a few of your own projects. (A couple of things I found to be really good practice: Find half a dozen company logos and re-create them in Illustrator. Pick up a copy of Wired magazine and re-create the layout in Illustrator.)
posted by eleyna at 9:51 AM on June 12, 2010 [2 favorites]


Oops. I meant recreate the layout in INDESIGN.
posted by eleyna at 9:52 AM on June 12, 2010


@eleyna - Yes, that's exactly what I'm concerned about when I have to interact with programmers. I was wondering about the Classroom in a Book books...now I'll definitely give them a shot. :)
posted by Anima Mundi at 11:22 AM on June 12, 2010


You need to decide whether you want to be a designer or developer. It makes zero sense to learn PHP and Photoshop at the same time.

Also, you don't learn PHP, and you don't learn Photoshop. Your premise is wrong. You learn how to design or how to program.

When you learn to design you learn about colors, typography, grids, the difference between web and print, usability, accessibility, et cetera. Photoshop is just a tool in which you apply your knowledge. Of course, to be productive in a future job, you'll need to know to handle this tool. Learning to design includes theory (reading) and practice (doing, e.g. drawing, creating a mockup digitally).

When you learn to program, the language you pick doesn't matter, although some languages are easier to learn than others. Don't start with Javascript since it doesn't have real documentation and it's a different kind of programming language (functional languages) than PHP, Python and Ruby (object oriented languages). I would recommend starting out in PHP since from your question you want to learn how to build websites, and Joomla and Drupal are PHP-based.

(Some would argue you can write OO javascript but that's advanced level stuff)

If you're a developer on a web team, you won't ever open up Photoshop, in fact, you won't even have Photoshop since your boss won't shell out $1K+ for a license. The main expectation will be that you know how to program and know a fair thing about databases. You'll also be expected to know basic Javascript. Unless you're doing hardcore web application work you won't ever need to leave the

If you're a designer on a web team, you don't need to know how to program, although basic programming skills are helpful (if you understand the developers' job, you're going to be able to work together in a better way). You'll need to know how to handle Photoshop for making mockups and you'll need to have the skill to slice your own designs into good HTML and CSS. The main expectation is that you know how to design, not that you
posted by wolfr at 8:34 AM on June 13, 2010 [2 favorites]


« Older My wife is going to be traveli...   |  What are memorable phrases tha... Newer »
This thread is closed to new comments.