For me, there are 5 basic types of development:
- Client applications
- Server applications
- Hardware software (drivers, bios, etc.)
- OS
- Web
Doing Web development you are most of the time doing "Server applications". The result is HTML, which is interpreted by the browser. The new wave of web development, a.k.a. Web 2.0, uses a lot of DHTML and AJAX. That brings another complexity level to the web development equation because now you need to "program the browser".
The good thing is that we have the W3C, IETF, IEEE and ISO to help guarantee a level of compatibility between different OSes and Browsers. The bad thing is that browsers don't do the same thing all the time. Yes, you can blame Internet Explorer as much as you want, but the reality is that even Firefox has different behaviors in different platforms and different versions. Bugs get fixed, features get added or removed, and in certain cases the browser developer must workaround a shortcoming of the OS with its own implementation of certain APIs.
That said, Sampa has a sophisticated error tracking system. Every time there is a problem on the server we get notified. Every time a page is not found, we get notified, every time there is a Javascript error on the client we get notified.
Each error report comes with a gazillian data points, including the full request data, the response data, the callstack, the error message, the state of the session, and other items.
With all that information, we usually identify and fix most obvious bugs in a couple of hours.
The Javascript Issue
Turns out that we keep receiving Javascript errors that are not bugs on the system and it's becoming a consistent noise on our error reports. The problem is that we don't really control the client. Users run a myriad of different browsers, on different platforms, with different dot-versions and different patches applied, but that is probably not the cause of those errors. The two main causes are browser extensions and poor network connectivity.
At the end of the day, I keep thinking how happy client and server applications developers are because they can -- more or less -- control all the DLLs and executables that their users will use and deliver a deterministic experience. I wish we could automatically upgrade users to a newer browser version, but we can't.
We just have to learn to deal with the fact that some users will never have a great experience -- and usually those are the ones that struggle the most with technology, and that is sad, very sad.
I'm the Co-founder & CTO of