Kenneth Ismert
kismert at gmail.com
Sun Apr 5 16:50:47 CDT 2009
Mark, Max gave a good outline of the skills needed to make a web application, and William provided good insight, too: you don't have to be an expert in all these categories to produce a good web site. A one word summary of this post would be "frameworks". For more words, read on. For references, go to the end. As far as the learning curve goes, I would say: 1) HTML - Easy You are on the standards-compliant, table-less div-based layout bandwagon, aren't you? Advice: build your HTML/CSS in FireFox using the FireBug add-in, then fix compatibility issues that arise with other browsers. FireFox is far and away the best developer's web platform out there. 2) CSS - Difficult, but getting easier -- Mainly because of cross-browser compatibility issues *cough* IE6 *cough*. IE6 consumed almost 2/3 of my CSS consulting time on one large project I was on. Blessedly, IE6 is dying, and the worst cross-browser issues are dying with it. Use IE7 as your lowest common denominator when designing standards-compliant sites. There is so much CSS documentation out there (a lot incomplete, some misleading or just plain wrong), that it can be hard to find the critical points you must grasp to make your style sheets work. Get a good book. See below. 3) Javascript/DHTML - Hard -- Javascript was a rushed project that instantly became the web client-scripting standard after it was launched, and it carries all the warts of its hurried design with it today. That means the web is awash with bad coding examples and confused advice on how to use it. Javascript is, at it's heart, Lisp with a C syntax. If you use it in a Lisp-like way (first-class functions, closures), you will get the highest value. There are an enormous number of mature Javascript FRAMEWORKS out there that will perform AJAX/DHTML functions with ease. If you are doing anything non-trivial with Javascript, you must choose and use one. Javascript is poised for a renaissance. All the significant browser players (MS is not a significant player) are building Javascript optimization technologies that will dramatically improve it's performance. Javascript will equal or exceed Silverlight's capabilities as an client-side web application platform. 4) Back-end database - In hand -- Members of this list will have no trouble building databases to support web apps. 5) Back-end business logic - Doable -- Sorry, but you can't use VBA. You'll have to use something newer, like PHP, Python, Ruby, or .NET. All modern web languages are vastly better than VBA -- once you learn one, VBA will strike you as limited and clumsy. Don't build your site from scratch using just your chosen language -- that's so Web 1.0! The language is secondary to your real choice: what web FRAMEWORK to use in that language. Web frameworks are a philosophical and sometimes religious choice, but you can choose based on breadth of support and applicability to the type of application you are building. 6) Graphics - Use a Mac -- Or find someone who does. What I'm saying is, if it's not your cup of tea, get a designer. GIFs are out, PNG is in. Don't edit a Mac-made PNG on your PC -- you'll screw up the gamma, and your designer will complain. 7) Web architect - No one right way -- Once you've mastered a subset of these skills, putting it all together is one of the simplest things. If you can get it to work, you've done it right. If your site is successful, you will have plenty of time to fix your mistakes. Books: JavaScript: The Good Parts -- http://oreilly.com/catalog/9780596517748/ -- Douglas Crockford Crockford, a curmudgeon and world's leading Javascript expert, tells you what to use in Javascript, and what to avoid, in a dense, slim volume. Stylin' with CSS -- http://www.stylinwithcss.com/ -- Charles Wyke-Smith Wyke-Smith gives a correct, fairly complete, and up-to-date tour of CSS, while avoiding common pitfalls. Links: The Browsers of 2009 -- http://css.dzone.com/news/browsers-2009 A cost/benefit analysis of developing for the various browser platforms -- the IE6 comments bear out in my experience. CSS: Specificity Wars -- http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html Andy Clarke gives by far the most approachable introduction to the CSS specificity that I've seen. If you don't understand specificity, you'll struggle endlessly trying to get your CSS to work. -Ken