Guy recently referred me to an article on how user’s read the web. It’s implications were poignant when mixed with the motive of acceptance and market share.
We know the most efficient way to consume online information is through the technical process known as “scanning”. From emails to advertising, knowledge to news, online users inundated with information have established a coping mechanism of scanning. As presenters of online education material, do we acquiesce to the the masses and achieve acceptance and market share by presenting radically shortened content? Or do we draw the line and encourage proper reading habits through presenting albeit verbose; accepted educational tautology?
A different discussion, but one closer to this thing called software development; how much of what we do, as a software community at large, results in encouraging bad behaviour?
When you sing, you begin with doh-ray-me, when you code you begin with “what say ye?â€. Indeed, what sayest the project investors? Beginning with the processes we choose to manage and define our project, how much of what we do becomes an AntiPattern? Further, do we aspire to eradicate that strangling weed in future projects. This is not a process-related condition, it’s a human behaviour condition and so it affects the traditional plan-driven, the agile and the anything in between processes.
Language support too has its fair share of nasty accommodations. I recently ended on the guilty side of calling a pure virtual function from the constructor. Oops. Now, in C++, you’re likely to get a nasty dialog box or even better: a compiler warning. With C# and Java though, although not a recommended design [and sometimes classified as unpredictable, depending on whose documentation/interpretation/blog you’re reading], the memory model does allow you to get away with it- and what’s worse: all your tests will pass! 🙂
Lets look at browser differences and XML data islands. They make life very easy [for simple things]. Building that into a dynamic-content interactive online small-medium enterprise application has great potential for building another BLOB. Granted, anything can become a BLOB if you you don’t manage it properly. In this context, as handy as they are, are not the norm for this project which implies extra process burden in terms of managing it’s lifecycle if included. So without even going into CSS differences, browser standards can breed their own demons. And considering CSS support, IE lets you get away with a lot, but at what cost to your career as a designer?
Database engines suffer the same potential for disaster. There’s a standard which is not always designed for rapid development and then there’s the exception to the standard [eg. self-incrementing fields] which does make development a little easier. Again, at what cost?
Of course, the counter-argument is concept focused on pioneering; trend setting and evolutionary. So you can, as with everything, form an opinion first and then pick your arguments to justify your position. Be that as it may, CheeseOriented debate is quite tiresome.
In your arena you need to decide what’s ultimately detrimental and control that within your area of responsibility. In a largely collaborative software community the decision makers that defend or propose standards determine the greater good. They engineer the breeding ground for the programming quality of the future. No wonder these standards issues are so hotly contested. Regardless of how much is motivated by purity of intent and how much by market share opportunity, we will ultimately be forced to work with the standard of quality we didn’t fight for.