Complexity Isn’t Simple

It is very rare for me to respond to comments in follow-on blog post, in fact I don’t think I’ve ever done so before. However the response to my previous blog entry about Dot Net Rocks show number 476 was so overwhelming, and so many good points were made, that I couldn’t resist having another go at some of these issues.

Center of Attention

N.B.: I’ve taken the liberty™ of paraphrasing user comments.  The original comments can be seen here.

Too Much To Keep Up With?

Nate Jackson wrote that he felt, even as a seasoned developer, that the pace at which technology is coming out of Microsoft is too fast for him to reasonably keep up with or even use to provide context for future projects.

My response is that I don’t disagree that with so many new technologies it’s terribly difficult to keep up. Rather, my position is that I’d rather live in a world where there are constantly improving technologies and run the risk of feeling that I’m falling behind then live in either of the alternative worlds: the one where we forgo rapid technology improvement, or the one in which we prematurely deprecate technology that developers are still using.

Rapid Deprecation?

Guerchele objected that if we continued to advance the technology without deprecating,  we wii inevitably end up with too many technologies. He rejected my idea of a “gizmo” because it does not enforce adoption of the latest technology for new projects

While I embrace the evolution of development technology, the solution cannot be to “forbid” the use of platforms we released only a few years ago. While it is in my own experience that applications that would’ve taken me months or even years to finish with the technology available five years ago can today be completed in months while providing a more robust and better UI, I have to also recognize that other developers do not necessarily feel the need to move from the technology with which they’re most comfortable.

And it may well be that for them the opportunity cost of forgoing the potential in the new technology is outweighed by the benefit of not having to take the time to make that move,  given that they’re already fully productive in a technology they know.

No, actually  that’s a lie. If the truth were known, my actual opinion is that the anticipated cost of adopting a new technology is over-estimated by those who feel this way (and under-estimated, I suppose by people like me!); and the real world gains of moving to a new technology like Silverlight are in fact far higher than might be anticipated. But I really do understand that many developers disagree with me.

Full Projects Please

rickj1 wrote that our training and material has suffered from a lack of a “full-featured step-by-step end to end real world tutorial.” I fully agree, which is why I find the touring project very satisfying, though I think it’s extremely important to put each component into context and also to point out a generalized set of uses that transcend any individual project.

Note to rickj1, every part of project touring will be fully annotated and all the source code will be available as we move forward.

Others have commented, and once again I agree, that my tutorials and videos would be improved by providing more motivation for each technique; that is,  “don’t just show me how to do something, tell me when I might want to do it.”

A Few Words From Josh

“Nitwit! Blubber! Oddment! Tweak!” – A.D.

Josh Holmes, RIA evangelist for Microsoft, who was on the original panel, made the following points in a private correspondence(which he has permitted me to copy here):

You’re right, we can’t support the extraordinary train of technologies including everything from Access 3 to.NET 4.0….My biggest frustration with the show was that we never really defined “Complexity” and who things were complex for. I think I tried to make the point at least once that things were getting simpler to create for professional programmers but harder and harder for non-programmers (the so-called hobbyist). Even with the Getting Started posts and the like, you have to be a technologist to write an application these days with Microsoft technologies. This is one of many reasons that we are losing share to technologies such as PHP.

While I agree that we are not fully serving the needs of the so-called hobbyist — and parenthetically if we mean by that people who program but for whom programming is not their day job, then I think we need a different term; Programming Artisan comes to mind — I’m not sure there is anything like universal agreement that things are getting simpler for professional programmers.

There’s no doubt that with the latest technology, once mastered, we can do things more quickly, better, more simply than we could just a few years ago, however you have to factor into that equation the cost of learning the new technology, and the perceived “complexity” of myriad overlapping choices.

As to the hobbyist, or even the technologist attempting to transfer to .Net,there is no doubt that the learning curve has grown, if not steeper, then at least longer. That said, we all remember how much of the plumbing we used to write, and  few of us want to back.

Josh continues,  The second part of complexity that we never covered is that the software that we build is far too complex for our users. We have all of the opportunity to do something amazing but there are few firms that do. Silverlight and WPF are enabling technologies but unless the devs and designers really push it to its limits, my grandma still can’t use her applications…

It is certainly true that we are a long way from software that is as easy to use as a toaster, but that has been true for a very long time. I would argue that it was worse in the so-called “good old days” before things got so “complex.”  In fact, I would argue, we are slowly learning how to make software that is more intuitive, easier-to-use out-of-the-box, and that appeals to a broader audience. While we absolutely have a long way to go, I don’t think we should lose sight of the enormous strides that have been made towards more intuitive interfaces in products both from within Microsoft and from numerous other software vendors.

The bottom line for me is that the overall experience of being a programmer requires that you know more than was needed when I started, but that’s because we’re being asked to build much better products. And given that, I’d far rather have today’s tools than the tools I had in the 1980s.

Please note, this post was produced through dictation; my apologies for any absurdities. It turns out that carpal tunnel syndrome is a whole lot less fun than you might expect.

-jesse

About Jesse Liberty

Jesse Liberty has three decades of experience writing and delivering software projects and is the author of 2 dozen books and a couple dozen online courses. His latest book, Building APIs with .NET will be released early in 2025. Liberty is a Senior SW Engineer for CNH and he was a Senior Technical Evangelist for Microsoft, a Distinguished Software Engineer for AT&T, a VP for Information Services for Citibank and a Software Architect for PBS. He is a Microsoft MVP.
This entry was posted in z Silverlight Archives. Bookmark the permalink.