Software is hard: things get lost in translation

Software can be hard, especially when one is not prepared for it to be so. When something goes wrong, more often than not people are looking at the wrong place or laying blame at the wrong place. This blog provides an oversimplification of the issue.

It’s a euphemism to state that software is hard. It’s hard work. Anything seriously worthwhile is going to take grit and toil. Don’t let all the self-help marketing tell you otherwise, if you do you would actually make it even harder for yourself.

One reason software can be hard is that snowball effect is very common and can quickly result in avalanche-like consequences. So I wrote one reason, not the only reason, not the main reason, just one reason. I am not going to produce long studies, hard numbers or anything of that kind here. Instead, I give an oversimplification of the way the snowball effect, the trickle down with an ever-expanding area of influence, can be visualised.

Illustration, how small issues can trickle down
Illustration, how small issues can trickle down

Whenever something goes wrong, which is to say very often, a good way to go about finding solutions is in re-examining things all the way from the top and work your way down. Which place to start, which direction to go (top-down, or bottom-up ) is a matter of taste, choice, context, but usually just a personal one. Since, quite clearly, it is a complex matter, looking for solutions in a random manner can be extremely inefficient and may never yield any result.

A corollary of this situation is that, software can result in ever-expanding benefits if things go well. Such benefits could be much more than winning the lottery for example. If you revise the diagram, take expressions like “things can get in the way”, “human condition”, “distraction” and turn them respectively into “things can contribute”, “human insight”, “epiphany” or “serendipity”, and you have a different diagram and positive outcome.  Concerns like “fear”, “doubt”, “politics”, “unexpected changes” typically have a double-edged sword effect to them. These can have positive effects when properly leveraged, or negative effects when they actually lead us to inaction or unproductive behaviour.

With software, bad things and good things, don’t only travel top-down or bottom-up, they typically start somewhere and expand like fluid dropped on a piece of absorbing cloth.

Whether are a manager or a doer, next time people rush into quick explanations or laying blames, invite them to look just a little further, to take a deep breath, to just sleep it over, and reconsider their positions. More often than not, the outcome could be different. Taking that chance to just delay conclusions a tad is usually a good bet, a profitable investment strategy.

Web App Development still mainly reduced to publishing and consuming HTML.

Web standards focus more closely on moving forward publishing concepts, and much less on application foundations. Web as a place for publishing is reductive, in my opinion, it plays up visualisation and plays down other aspects such as exchange, translation, communication. We may still be at the cusp of a revolution that has yet to take its definite shape.

Every week I see some articles discussing web app development, and 99% of those only talk about manipulating HTML. It is as though web applications were only about publishing, whereas the way the web serves people today has largely evolved beyond publishing. As popularity would have it, most people involved in web development, the publishing side of it that is, have no formal background in publishing.

As far as I can see, there are lots of W3C and other open initiatives that strive to move forward web standards. W3C HTML groups seem particularly focused on publishing, as in the modern day version of what used to be print publishing (Gutenberg like). When I see talks about semantic HTML, I only see document oriented standards, but nothing seriously useful from an application architecture perspective. OWL doesn’t appear often in the popular architect and developer forums that I frequently visit, the more I look into OWL, the more it reminds me of the way CORBA went. OASIS is very heavily XML focused, which to me is one extra indirection from the basic concepts we manipulate when discussing applications. I tend to think of OASIS as the corporate web world, large companies trying to find common grounds, a bit less about pure and lean application architecture. I don’t see much else popular W3C efforts pushing application standards forward.

Numerous communities have thrived on the many shortcomings of web app development, and that’s a blessing. On the data presentation side, you have some thriving JavaScript frameworks such as jQuery, Emberjs, Angularjs Backbonejs, D3, and many others. These aren’t standards, but I wonder if W3C should just extend itself an bring in these communities somehow (I’m thinking of HTTP 2.0 for example, the way it relates to Google’s SPDY). Beyond this three’s not much else happening with any significant momentum.

If web browsers are only good at manipulating HTML assets, then it would probably be useful to have a new platform for web powered applications in general with HTML manipulation as just a subset of its functionality. There’s been a couple of products, Flock was one, but they didn’t really catch on. I don’t see much else happening in the way of truly facilitating web-enabled applications. This is leaving the field to only publishing oriented experiences. Ubuntu has taken an interesting approach that, at least fits in the way I’ve long envisioned web powered applications. The Web of Things could have been such next-gen platform, if only it didn’t brand itself as hackers’ and tinkerers’ Toy?

For the time being, only web publishing seem to get most attention, that’s where the money goes. We might as well learn a bit about publishing, the blending of apps thinking and publishing concepts may yield new kind of experiences that would enrich the web.