Can you give me any pointers on learning web development? Unlike other similar questions in the archives (
), I have a lot of programming experience. I haven't really followed web programming practices closely, however, because without keeping closely involved, it has been hard to sort out useful stuff from buzzwords and fads. (Non-web programming has enough of those!)
I strongly prefer having a big-picture understanding of systems when working with them, so the various "here's stuff to copy-and-paste to make this happen" sites don't do me much good. I'm not concerned with that level, rather, I want to pick up the underlying skill set, so I can teach myself the surface details as necessary. (FWIW, I recently learned standard practices for HTML, RSS, and have gotten a sense of how to (and not to) use CSS. The stuff about
semantic markup makes a lot of sense to me. I suppose Javascript and jQuery come next?)
A good example of a page I find opaque is the wikipedia page on
REST. It sounds like it's about managing state in a stateless protocol, and about abstracting away storage so that proxies, replacement servers, etc. can be used transparently, but the terminology is a bit alien, and I wonder if I'm just missing something.
For programming, I'm quite comfortable with Python, Lua, C, OCaml, and Scheme. Of those, Lua is especially noteworthy, both because it would be my first choice (Python second) and because it's semantically quite close to Javascript. I'm also familiar with RDBMSs (SQLite and postgres) and the relational model, and have about a decade's experience with Linux, BSD, and the associated toolchain.
For other languages people tend to suggest: I don't know PHP, and everything I've read about its design makes me wary. I have tried Ruby a bit, but don't care for it, and Lua + Python already cover that niche for me.
I'm not clear if learning a web framework would be a good idea for me or not. It would probably help with picking up the vocabulary I'm missing, but at the same time, the "handle the details for me" aspect would interfere with learning what's actually happening. I'm not worried about ORMs, etc., as I'm fine with setting up abstractions for the database myself. I'm also not concerned with scaling - I know a lot about algorithms, caching, etc. already, but I also know about premature optimization, so I won't worry about that unless something I write
needs to scale. Abstracting away browser incompatibilities would be quite welcome, though. (Frameworks also seem to be where most of the buzz is -- advice like "check out _, it's teh new hotness" really doesn't tell me anything...)
Python is a widely-used web dev language, so I'd stick with that.
If you like to understand how things work, learn JavaScript before touching jQuery, and try straight Python before Django (the popular Python framework). Try to stick with progressive enhancement in any JavaScript you do, i.e. it should generally work without JavaScript.
It sounds like you already have enough knowledge to start making things, so you should start making things. You'll quickly discover where you need to learn more.
posted by scottreynen at 6:23 AM on June 8