Fog Creek Software
Discussion Board

Welcome! and rules

Joel on Software

Programming for the Internet

I posted this on Joel's main forum, but I thought I'd add it here as well because it could be of particular interest to .NET and ASP.NET developers.

I graduated in '98, and since then the majority of my programming experience has been for web-based projects.  This recent post ( ) from Ingo Rammer reminded me how sound programming practices and programming for the internet are often at odds. 

Layered architectures must be refined for a web-based project, where speed is a much bigger concern.  The nature of scalability for the web is different from desktop apps.  And web-based programming just suffers from poor penmanship as companies try to push out products as fast as they can.

.NET and ASP.NET is bringing object-oriented philosophy to the Internet.  But right now it suffers from a lack of adequate documentation for enterprise level design. 

So far, I've seen many applying standard programming practices to the web, which is excellent.  But the web is also a new medium, with its own programming concerns, and I've seldom seen anyone addressing these web-specific concerns. 

My question is what other resources, books, people etc are out there that are trying to bring solid, sound programming practices to the web? 

Monsur Hossain
Monday, September 23, 2002

This has always been an interesting topic to me.

In some circles there has always been the perception that programming for the web is not "Real" programming :-). While I do not agree with that, that was a by-product of the original cowboy mentality and the hack-and-slash coding practices that were used to get a web presence up and running as quickly as possible in the heyday of the early dotcom era.  In the early days, the sites were nothing more than brochure-ware with slick graphics to grab your attention.

I still remember the days when there were "HTML Programmers". :-)

As we moved further down the timeline, businesses began to realize that having a transactional web site that provides real value to their customers while at the same time tied into business processes in the back-end provided a real boost to their bottom line.  This changed the perception and the importance of what it takes to build a site.

Once businesses realized the true value of the web, the need for solid design and programming practices in order to build a secure, usable, stable, reliable and scalable web site obviously has taken on much greater importance.

I personally would make the argument that the web is not so much a new medium as a different medium where the lessons that were learned in designing usable enterprise level software are still viable and valid.  So the ideas of n-tier design, OOA/D, Usability and Design Patterns are still very valid in the web arena. There are obviously technical limitations one has to consider when programming for the web such as its state-less nature etc. But that is simply another factor that must be considered in your design and analysis.

So the best resources are still learning solid OOA/D practices and  using design patterns in your software development to build on what others have learned etc. There are of course development methodologies that take these into account such as the Unified Process or the any number of the Agile methodologies.

The environment has changed, but the skills we need to bring to the craft have not changed in a lot of ways.

- Anil

Anil John
Wednesday, September 25, 2002

My big issue with "Web Programming" vs. conventional programming is the breadth of languages, idioms, and patterns one has to master just to create a simple,  nontrivial site:

HTML/DHTML (graphics design would be nice too)
Javascript, plus the DOM
Browser behavior
ASP/JSP/PHP/CGI or some other dynamic web protocol
VB/Java/Perl for the back end

Only then can you start worrying about database design, tiered application logic, and other "hard" methodologies which took me 10 years to master.

And I still have problems with Javascript...

IMO the best "web developers" have cut their teeth for years designing "old" client-server or 3-tier systems, when all you had to master was SQL, C or C++, and a GUI package.  These people graduated college way before the Internet Revolution began.

Roger Kaplan
Thursday, September 26, 2002

*  Recent Topics

*  Fog Creek Home