Last week I posted a survey, seeking responses from the community on a small set of brief questions intended to illuminate how the nuts-and-bolts of production have changed over the past few years.
Obviously the battles between HTML5 and Flash have certainly garnered much of the attention as a source of disruption in our industry. However, this much publicized conflict isn’t really the issue at all. The HTML5/Flash conflict has been more of a symptom, rather than a cause.
The root cause of today’s disruption is enormous platform fragmentation. There are simply a tremendous number of devices out there in the hands of consumers, and developers are expected to make their creations work on so many of these different hardware options.
Yes, we are told, HTML5 works on all of these devices — but, as any developer who has tried to create a rich interactive, multi-platform experience in HTML5 will tell you, HTML5 has distinct functional limitations and tends to work differently in many different contexts, requiring a tremendous amount of effort to achieve a consistent cross-platform performance and experience.
And not only does HTML5 work differently on all of these devices — the landscape can literally change on a daily basis, as a new browser version is released, or Samsung updates the version of Android on their Galaxies. Many do not realize that the HTML5 spec is, itself, still in flux.
This is a remarkably tenuous environment in which to be producing experiences — vastly more temperamental and less stable than at any prior point in the 20 years since I began building websites.
And so, in an attempt to quantify some of this thinking, I designed a brief survey intended to gauge factors that are indicative of instability. The survey featured seven multiple-choice questions — six regarding factors indicative of difficulty or annoyance in the execution of work. The seventh is about overall satisfaction. Then, respondents could optionally respond to three open-answer questions.
The First Six Multiple Choice Questions
The results clearly demonstrate that the day-to-day work of a developer in 2012 is more difficult and/or frustrating than it was in 2010: on each of the six points (Learning Technologies, Managing Expectations, Building Features, Testing Features, and Prevalence of Bugs) things were better in 2010 than they are today.
By a whopping 38-to-1 margin, 76% of respondents claimed that they must learn more technologies today in order to execute their jobs, compared to only 2% who say more technologies were required in 2010.
69% of respondents believe that it was easier to establish realistic expectations in 2010, compared to only 10% of respondents who believe it is easier today in 2012.
55% report that it was easier to estimate effort in 2010, compared to 20% who say it is easier today.
51% report spending more time on features today, compared to 24% in 2010.
49% report spending more time testing and validating their code today, compared to 33% who say more time was required in 2010.
And, 51% of respondents explain that more time is spent in bug remediation today, compared with 20% who report more time spent in bug remediation in 2010.
As far as these results may be considered valid, from them we can ascertain that, today in 2012, developers:
- must learn more technologies in order to execute their jobs;
- find it harder to establish realistic expectations on feature performance;
- find it harder to accurately estimate their work;
- find it takes longer to build features;
- find it takes longer to test builds;
- find that more time is spent in bug remediation efforts.
Thus, on six critical dimensions, work today for most developers is more difficult, burdensome and challenging than in 2010.
These results are inline with what I had assumed — though, the margin on some of the responses was striking. For example, that developers report, by a 38-to-1 margin, requiring more technologies to execute their work, is a striking statistic, and one which leads me to conclude that exceedingly few developers have been unaffected by the technological tumult.
Open Ended Responses
The survey also included three optional open-ended questions. The first asked for the biggest improvements to emerge in the past three years; the second asked for the biggest detriments to emerge in the past three years; and the final left room for additional comments.
Many of the responses to these open-ended questions confirmed that platform fragmentation is the root cause of these changes over the past three years, and that developers are intimately aware of this fact. One such comment read:
We are back to cross browser testing, in some ways worse than it was before. We’re jumping hoops to do things that use to be easy. ie. the embedded “video” of the iPhone 5 on Apple’s site – a ridiculous solution required for a problem of their own making. So many HTML5 demos are nice, but pale in comparison to the performance they would have had in Flash and only work in some of the latest greatest browsers.
Platform fragmentation was, indeed, the single most commonly cited detriment to have emerged in the past three years. Other responses, which touch on this issue in one way or another, included:
- “Extreme fragmentation everywhere. From multiple devices to endless options in terms of frameworks and dev tools.”
- “Platforms have been emerging too quickly (and dying too quickly). That is really making things jittery”
- “fragmentation has grown exponentially”
- “compatibility with all those devices out there”
- “Cross browser bullshit.”
- “HTML5 bullshit.”
- “Removal of flash on IOS browsers. HTML hype”
- “you have to use inferior technologies to fulfil the wishes of the clients”
- “Flash Player removed from mobile browsers and never been on iOS browsers. HTML 5 being hailed as the savior of the web but in reality not ready or available ESP on safari. Removal of design tools by adobe for flex development. Move by adobe to focus on flash for gaming and abandoning flash for application development. Annoyance of apple for not progressing and supporting HTML 5 features. Annoyance at web community for not really solving the issues flash is trying to solve. (needs to be a HTML 5 plugin and alliance to solve issues).”
While, in my personal observations, the market has calmed significantly from last year’s peak battles between HTML and Flash, and we are seeing more reality and accuracy in discussions and media coverage, other comments identified ‘FUD’ (Fear, Uncertainty and Doubt) as a major detriment to their work:
- A much more poisonous atmosphere in the general populace due to untruths precipitated by the “tech media”.
- Steve Jobs’ remarkable ability to get people to believe things that aren’t true.
Given the difficulties and variabilities identified above, it is unsurprising then, that many respondents included comments indicating an increase in difficulty communicating with clients:
- “Some client perceive that development costs should be lower now than there were a few years ago.”
- “Customers have become more sensitive on time, effort and cost. This makes it difficult to do things logically. in terms of developer attitudes as well as calibre, I have observed a more casual attitude towards learning. Anything which needs digging into and hard work is looked down upon.”
- “”Customer/Client” confidence in certain technologies has made it harder to sell products w/ said technologies; even when that is the best choice. The evolution of mobile devices and especially native apps may make future development more difficult if you have to accommodate for them. I am not yet in a position where that is important to my clients.”
- “clients need more educating”
Finally, several respondents cited Adobe’s haphazardly-executed 2011 change in strategy as one of the sources of today’s difficulties:
- “Adobe’s hopelessly inept management of the future of Flash.”
- “not being able to rely on Adobe anymore. They USED to be an asset to the technologies they support, now they’re a hindrance.”
- “Adobe gave up on Flash. Flash was cool but now it’s a joke.”
- “There are no good alternatives for flash and Adobe’s pulled back support on several fronts because they can’t get flash on iOS and HTML 5 is not ready nor has the tooling behind it that targets all browsers”
Overwhelmingly, the biggest improvements respondents identified as having emerged in the past three years, are the number of “available frameworks” (as well as plugins, libraries and other tools) for getting work done. I believe this is indicative of a process of rapid maturation of technologies, as they are adopted into professional-grade workflows. Some such responses included:
- “Maturity of available frameworks for HTML and flash”
- “tools, more to help you get those nasty bugs or strange issues”
- “IntelliJ and Sublime getting mo-hottah.”
- “Better initiative from the community to create frameworks and development tools that ease the pains of using/learning new technologies.”
- “Many plugins and libraries help builing coll stuff”
As I said above, much of what this data reveals was not surprising. I executed this survey to test some of my assumptions of current trends. After all, it’s one thing for me to continually argue (as I have repeatedly done on this blog, such as this post) that work is getting more complex and expensive; it’s another to have a statistically significant chunk of the community report similar experiences. This, to me, provides some tangible confirmation of my assumptions.
But, there was one piece of data in the results that I found very surprising.
The seventh multiple-choice question was geared to measure overall job satisfaction among respondents. I had assumed that the responses to this question would roughly correlate to what the first six questions revealed, indicating a drop in developer satisfaction with their jobs. After all, if the day-to-day jobs of developers is becoming more onerous and challenging on numerous dimensions (as indicated by the responses to the first six questions), then it is reasonable to assume that developers would have less satisfaction in their jobs.
Instead, this was the only of the seven questions on which “2012” outperformed “2010”. By a relatively slim margin, 37% of respondents indicated that developers are more satisfied with their careers today, than in 2010; an additional 27% indicated that they have maintained the same level of satisfaction.
Thus, 64% of respondents indicated that they are at least as satisfied with their careers today, as in 2010.
What gives? If so many quality-of-job metrics have declined in the past few years, why hasn’t developer satisfaction, as well?
I do not have an answer, and the survey did not include any additional questions to illuminate this. I do, though, have a few possible explanations for this rather surprising result.
1) The Mess Hasn’t Sunk In
One possible explanation is that, while developers are clearly aware that their jobs are harder today than in 2010, not enough time has passed for this awareness to sink in. In other words, developers haven’t yet had time to realize their jobs are harder, and that they are thus, less satisfied.
I do not find this explanation particularly compelling; though, the phenomenal rate of change with which developers must cope on a daily basis does add some believability to this notion. After all, if all of your time is spent just keeping up with your job (learning new technologies, managing client expectations, and delivering quality code), it is quite possible that you just haven’t sat back and thought about job satisfaction.
2) Developers Like Messes
Many developers derive joy and satisfaction from solving complex problems. Indeed, the more complex the problem, the greater the sense of joy and satisfaction that can be achieved from overcoming it. If one frames today’s messy technological landscape as a tapestry of complex problems, then I can see a portion of developers deriving great satisfaction from solving those problems, and developing great experiences that perform reliably, across platforms, and up-to everyone’s expectations.
In other words, it could be that developers like big fat messes, and derive satisfaction from overcoming them. While the platform fragmentation may thus be a drag on client budgets and customer experiences — perhaps the opposite is true for developers (or, at least for a portion of developers). (Hence the title of this post.)
3) HTML5 May Be Difficult, But Not As Difficult As Homelessness
The final possible explanation I have considered is that, well, the economy still sucks. It’s one thing to be frustrated by spending your day fighting with varying HTML5 implementations; it’s another to be frustrated spending your day fighting with bill collectors and mortgage holders.
Yes, our industry may be in a difficult period now, but we’re not in anything like the shape of the rest of the American manufacturing, construction or real estate sectors.
Given where we could be right now (and where many of our neighbors, relatives and friends are), dealing with platform fragmentation is just not that big a drag. In fact, an argument could be made that the massive platform fragmentation is actually stimulating the developer economy (requiring more labor to execute similar features).
Again, these are just potential explanations, and it is possible that none of them are accurate.
But, of these, I prefer the second one: that developers like messes. Programmers enjoy problem solving and overcoming challenges. This sounds most like reality to me.
A few weeks ago, Robert Reinhardt of VideoRx.com said that “if Hollywood had to make films with technologies like HTML5, they’d strike.” Maybe, given the results from this survey, a corollary to that statement could be, “…and if developers had to make apps with tools as stable and reliable as those used in Hollywood, they’d get bored.”
Complexity Costs Money
While I continue to ponder the results of that seventh question, to me, the key takeaway of this survey confirms what has been my personal experience this past year: building interactive applications is a more complex endeavor, requiring the intermingling of more technologies in a process that consumes more time.
Platform fragmentation has created a landscape in which it just costs a lot more money to deliver the same feature to the same percentage of your audience, than just three years ago.
And this is why interactive development costs more in 2012 than in 2010.
Given that, what does 2013 hold? And 2014 and 2015? At what point does the rate of platform fragmentation first stabilize, and then possibly reverse? Alternatively, will any technologies emerge that help us overcome platform fragmentation (as Flash once did in the pre-iPad era) with less difficulty than is required today? Until that happens, I do not see any possibility of reversal of the trends covered in this post.