

Has web development become any easier? How, or why not? - Tichy

If I look at games development, I see a progression of tools that make it easier to create more and more complex games: 3d modeling tools, level editors, 3d frameworks, physics engines... You could just license a 3d game engine (or use an open source engine) and create a stunning game that would have been unthinkable a few years ago. <p>On the other hand, for web development I see no such thing. There are MVC frameworks, but do they really give you that much an advantage over early days CGI programming with Perl? Somehow I don't really think so, but I could be wrong? Am I missing some tools?<p>I am asking because I wonder how I should approach my own web development. Should I start with my own framework? Or would it be alike to creating a 3rd person shooter from scratch using assembly programming, that is, would the competition walk all over me because they have the superior tools?
======
cturner
> On the other hand, for web development I see no such > thing.

It's a good point. Web development does feel like it's far more of a chore
than it should need to be.

It's still very difficult to have a development methodology that allows you to
develop mega-pages (so as to offer a lot of functionality on one page and
thereby keep the request/response loop down) without the codebase turning into
spaghetti. I thought I'd done it at my last job, I've since spoken to the
maintenance programmer, he's unimpressed, and that says 'failure' to me :).
The combination I used for that was tapestry and cayenne and I still think
it's the best grouping although Tapestry 5 will be a strong improvement (don't
get into it yet though - the tutorial on the site isn't finished). Also,
you're stuck with java if you do this.

> early days CGI programming with Perl?

There are huge advantages to using a templating system. If you want to
understand why, have a think about how you'd implement an algorithm in CGI
that allowed you to edit the first and last name for a list of people in a
single page, and to have the resulting data factored into objects
automatically before you start writing your handling code. Good templating is
not new, but it is new to the mainstream. WebObjects was doing all this and
more in the late nineties. But the API was so quirky, the end-user tools so
poor and the system so expensive in its early years that few people got to
benefit from it. Expect to see a bit of a renaissance from WebObjects - Apple
have some top-notch people working on it and have really opened it up. (Still
-I'm not sure how or if they'll be able to overcome the verbose and quirky API
though.)

Coming up with a framework that can do mega-pages well is a problem I've
revisited many times, and I'm not there yet. My latest attempt is at
datamagi.org. This approach attempts to make the web server a dumb client that
asks a 'logicbase' for the user's current position in the system, and then
renders it to them. Basically - you define a state machine that is the
application, and then the interface wraps around it. In this way you can
develop dynamic webapps without touching a line of HTML. In time I'd like to
come up with a description language that describes how data should be
rendered, and then have this dumb-client webserver then lay out a webpage
matching that view. I don't even have transactions properly worked out yet.
But I do think this is the right approach to the problem. Once we have this it
will be near-trivial to painlessly develop better user interfaces than the web
browser.

The approach I'm taking on a web project I'm working on right now (that I need
to work - hence not using my immature framework) is to use python and
cherrypy, and do all the processing manually. It's cumbersome, but I find it
quite rapid to refactor, and once I understand where the repetition points are
I can work out my own framework.

Django looks cool. You could check out rails as well. I've avoided it because
the ORM in that platform is primitive, and because I prefer python for lots of
little reasons. I can't remember why I avoided Django - might have been a
maturity thing. I'm very distrustful of heavy frameworks in general because
I've been stung a few times by situations where I want to do something and
can't work it out (or find that it's not possible because I haven't followed
some disgusting 'convention' wired into the platform), whereas I find that if
I develop a framework myself I don't get into that position. I had this with
tapestry 3 - had to go to ridiculous lengths to get what in .ASP would have
been called a 'page'-scoped variable.

For you - developing a framework would have the advantage that you'd
understand the problems that frameworks solve. So when you go looking for a
framework later on you'll know what you're looking for and why.

I love web development. :)

------
optimal
Developers continuously push the envelope, so building state-of-the-art
applications will always be difficult and time consuming. It's the last 10-20%
of development--the truly hard finishing part--that takes an application from
"good enough" to "really cool" (also from being permanently labeled "beta").

As an analogy, there was a time when breaking the four minute mile barrier as
a runner was considered impossible. Now it's quite common. Yet it's just as
difficult to be the fastest runner.

My advice would be to become familiar with a number of web frameworks _and_
understand how to build your own. This will take some time, but the benefit
will be your understanding of when to use frameworks and when not to. One
question to consider is what sort of projects are you planning to build? If
it's a one-off for a client, would a framework get most of the job done? If
it's a product you'll be hosting or distributing, will you be living with the
code base for a long time and therefore benefit from the investment of your
time in development?

------
mrtron
Using the web as a GUI has become much easier in the last 10 years. The new
frameworks allow you to do things in a matter of hours that would have taken
weeks in the early days (possibly some personal skills bias is coming into
play here too).

Try out something like RoR or Django.

I had the desire to write my own framework for many years, and completed a few
half-baked frameworks, but it is definitely worthwhile considering one of the
major frameworks. There is a lot of time, thought and effort put into them
that you can leverage!

------
bayareaguy
_You could just license a 3d game engine (or use an open source engine) and
create a stunning game that would have been unthinkable a few years ago._

The improvements in game technology have been more visibly stunning but there
is plenty going in in the web space. Think about what Virtualization
technology is doing vis-a-vis deployment effort. Imagine someone running a
"server-less" company even a few years ago. Now lots of companies are doing
this with Amazon.

------
DarrenStuart
I think it depends on whether you have a favorite language to program in and
if there is already a framework that fits your own need there is no need to
waste energy.

I have created my own toolkit that sits over the top of the asp.net 2.0 and
that fits my needs and gets used for all my projects.

I think in a few more years time your be able to use tools like Access to
deploy web apps(I know you can do it to a point now).

------
Zak
I don't think the best tools of today are much better than the best tools of
1995[0], but more people have access to good tools now. I suspect Hunchentoot
and CL-WHO aren't substantially better than the set of tools used to write
Viaweb. Both are light-years ahead of CGI scripts.

[0] Obviously, we can make richer interfaces today, but that often means more
work, so I wouldn't say it makes development _easier_.

------
brlewis
Your intuition is right. MVC frameworks do not help individual hackers. Their
purpose is to make it harder to do bad things. Making it easier to do good
things is not a requirement.

On the other hand, it does look like good client-side JavaScript frameworks
provide a competitive advantage, if used judiciously. I haven't investigated
which is best yet.

~~~
boucher
"Their purpose is to make it harder to do bad things. Making it easier to do
good things is not a requirement."

That seems like a pretty silly set of expectations for a framework. By virtue
of making it easier to do things, you may eliminate a lot of bad things, but
the goal really is to make it easier to do things. This might seem like
splitting hairs, but you split the hair here, and I disagree with the
conclusion.

------
superjared
The reason I say "no" is because the designer I worked for had ridiculously
high expectations. And with Django we were able to deliver to many of those
expectations, but the ones we were slow with we heard about for a while.

------
jimbokun
I don't think there has been much improvement since the Objective-C version of
WebObjects.

