"It seems to me that my job as a webmaster has
continually been about fitting together a zillion little puzzle
pieces. This piece talks to that piece and that piece talks to
this piece. It is easy to get overwhelmed." - anonymous
reader
I have heard this statement about a hundred times in one form or another.
I guess I can see why someone would say that building web applications
is like putting a puzzle together. The myriad of web application
development technologies could certainly look like a jumble of
puzzle pieces.
However, understanding web application development in terms of a puzzle
metaphor is just about the worst thing you could possibly do for
yourself! This metaphor only leads to confusion and if you adopt
this metaphor, you'll quickly find yourself becoming overwhelmed
with the myriad of technologies.
Web application development technologies are definitely NOT puzzle pieces.
Puzzle pieces fit together in specific, "correct" ways. That is, although
puzzle pieces look similar in many ways, every piece is very different
from every other piece. One piece cannot be substituted for another
piece unless you want the final picture to look really weird.
With a puzzle, there is always a single, overarching, "right" way to put
the pieces together and each piece is unique.
In web application development however, there is no right way to solve a
problem and no truly unique technology. Rather, there are multiple possible
configurations of essentially redundant tools, each which solves the same
set of problems.
For example, as we will see later, CGI, ASP and Servlets all serve the
same basic function. They perform server-side processing. Similarly
CORBA, DCOM and enterprise Java Beans specify how to talk to distributed
objects. Likewise XML, HTML, SGML, XSL and CSS are all similar tools
for marshalling and displaying data across a network.
As such, web technologies within the same categories, can be used
interchangeably in MOST situations. Choosing one or the other may
often be more of a bureaucratic/administrative/standards decision
than a technical one.
Rather than using a puzzle metaphor, I like to think of web application
development in terms of legos. With legos, there is no overarching "right"
way to solve a problem. There are just a whole bunch of block categories
(6 hole, 4 hole, 2 hole) which can be put together in an infinite number
of ways.
Certainly there is variety within the categories (some 6-holed pieces
are red; others are blue), but all lego blocks, regardless of their
individuality within a category, are still equivalent as members of
their category.
The lego metaphor provides a way for you to make sense of the forest
of existing technologies and the forest of future technologies.
Rather than understanding each technology on its own, you need
only understand the categories into which individual technologies
fall. Once you understand where a technology fits into the scheme
of a web application, you already understand 60% of that technology.
Past that, you simply need to invest in a good reference manual for help with
syntax and API issues.