Sunday, 20 April 2014

Simplicity Coach

Recently I had a chat with colleagues from a very complex global omnichannel project, rebuilding a huge solution from scratch. The end-user was only supposed to realize performance improvements and nicer user experience, no service interruption. The colleagues involved a service design firm in the process. Although the project was complex, it was so from a technical point of view - business processes would only be changed afterwards. Hence I asked the guys: Why involve a service design firm?

Their answer: We needed a Simplicity Coach.

You will find this term in many ways around the web, in fact there has been a true simplicity hype in recent year  (e.g. Maeda, Küstenmacher). What struck me, though, was how they used it informally as a standard role. The service design team was part of the architecture team, in fact it was their daily business to challenge each others ideas. The architects from a quality, scalability and maintainability perspective. The design team from a simplicity perspective. The architects asked: "Can it be done safer?" whereas the service designers asked: "Can it be done easier?". Together they achieved true resilience in building an architecture based on small, versatile services, yet with a strong vision, common understanding and buy-in from everyone in the project.

Tuesday, 18 March 2014

Permanent Crisis

Maybe it's just my selective perception, but it seems in the last weeks there has been a burst in interesting IT industry topics which did not only cover technology.
  1. Uncle Bobs move towards more governance and how meriotocracy might not be the right solution if myths and stereotypes persist
  2. The question whether estimation is evil, if we should stop using the word Agile and why software development still sucks
  3. Fowlers Micro-services and the "history repeating" argument about SOA
Despite the obvious lack of reason in most of the discussions*, for me they also have something else in common: They're all about trends a new generation of coders have embraced particularly dogmatic in the last 5-10 years which seems to reveal they are no silver bullets in fact. It's like all the hype cycles ended up in the Trough of Disillusionment at the same time.

Are we still in software crisis?

At Baruco 2012, Paolo Parrotta diagnosed wittily: Software Crisis? You cannot be in crisis for 20 years! 

It's been 54 years.

Maybe software development just does not get really better? Maybe we are moving just with the real world, like everyone else, not being "special" or "visionary" by definition but actually just normal people with (or without) a degree in computer science, influenced by the same socioeconomic value shifts and biases? Maybe, as Software Is Eating The World, software just becomes as chaotic as the world itself?

Yes, the field improves but it's a little signal in a lot of noise. I am currently writing a book on building architecture vs. software architecture, which is why I haven't been blogging recently. It's not that I want the ideas to sell, no, a book does not bring you much money. But I see that I have to think ideas through, reading stacks of books, old notes dating back 5 years, re-reading articles and posts. And I see some improvement while doing this. But I also see many themes repeat over and over again. Sadly, instead of agreeing on a common sense, views seem to become more dogmatic and further apart. It's always the same pattern (The Excel Pattern):

Someone has a simple idea. Followers who believe in control systems and analytic engineering turn it into a methodology. Someone else sees the methodology and has a simpler idea. Then, both the old idea and methodology are declared evil.

As long as we are not working on the core biases and expectations towards software engineering and architecture this vicious circle will never stop and work towards real improvement, in technology as well as in team building, fairness and business value. Maybe this will turn IT into an art thereby. That's the risk we should be willing to take.

My current book stack - wish me luck:



*) But slowly returning, the original posts were mostly reasonable though

Sunday, 29 December 2013

On Flow-Based Programming

A late answer to Daniel's Post "The Future of Computing"

Since some time I am intrigued by Flow-Based Programming (FBP) programming. It feels natural to me because I've worked with vvvv back in university, doing some interactive work, early on with Node and Erlang, and share a general interest on the life cycle of systems, flow in architecture and how to bring process and flow into model versioning.

Daniel points out the social aspect to FBP when he links it to Bret Victor's "Future of Programming" arguing we should (I paraphrase) bring computing technologies to people rather than people to technologies. The way Alex puts it is a bit more extreme: "People shouldn't have to learn to code to apply software to these problems". The question is not technology, or how we present technology. There will always be professional engineers that like to use vim, and there will always be people who like to learn the quirks despite their original profession. And technology has already become a lot more accessible, easier to learn and distribute. On the other hand, however, people don't want to think abstract, externalizing their creativity into a formal language.

In Code, Georg Vrachliotis tells the story of how Architecture scholars reacted to the rise of the computer. From the Architecture Machine and the 1970s statement "We want to arrange matters so that the computer can be used as naturally and easily as a pencil" all the way up to the contemporary view of code and architecture cross-pollinating each other, at the section of programming a drawing, with technologies like CAAD - much like visual programming or FBP.

We can't bring technologies to people, neither can we bring people to technology. We can create, however, a new space that provides the tools for people to pick up and decide how much they want to engage with technology. We have to build systems and technology that is both easy and versatile, comfortable and challenging, stable and fluid. By doing so we avoid the System design trap - the more we engineer, the less natural a system feels. It reminds me of one of my favorite quotes from John Gall:
Trying to design a System in the hope that the System will somehow solve the Problem, rather than simply solving the Problem in the first place, is to present oneself with two problems in place of one

UPDATE:  On the discussion of common sense and using Nudge as a way of "Utopian Realism" I like to add the beautiful end of the Manifest for a New Realism:
Enlightenment still calls for a choice of position  and faith in mankind, in knowledge and in progress [...] What are needed are knowledge, truth and reality. Failing to accept them [...] means pursuing the ever-open alternative proposed by Dostoevsky’s Grand Inquisitor: the path of miracles, mystery and authority. 

Friday, 27 December 2013

E-Books and Tablets are so 2013.

In Autumn I decided to switch over to use a tablet  (Nexus 7, maybe part of the problem) exclusively for private work. At the same time I decided to use E-Books, mainly because I had read so many bad books I threw away that keeping paper didn't make much sense anymore.

From Jan 1, 2014 on, I will switch back to a laptop and paper books for the bulk of my work. Here's why.

Why I dropped the Tablet (pun intended):

Main reason: I multitask. I know it's not efficient. Probably it's same kind of boredom that drives me to it, as I am certainly not suffering from ADHS. Unfortunately I am not a stream person, either. Tablets are made for streams, executed one by one, like packet switching or serial monogamy. They are built for either technology agnostics (think iPad for seniors) or very organized cloud-only stream-switchers (think Ben). Sure, some solutions like Cover try to address this with contexts, but it's still single task.

Having more than one E-Mail open? More than one browser instance? Switching between a Spreadsheet and a PDF staying at exact the same spot? Want to write an article with references (leaving aside there is not a single good quote-taking app out there)? Undo after you accidentally deleted all text? All that is currently impossible with the current state of most Android and iOS Apps. It gets worse with offline or limited connectivity (Hybrid Apps just crashing, Google Maps stays blank), where it's literally impossible to do research over more than a few browser tabs. Add technical problems (no ESC key when Apps freeze, Android updating in background just when you need to show your plane ticket) and questionable product decisions (Apple disabling USB Sync) it destroys all the productivity added in the first place.

I was positively surprised with the text input (thanks to an IVSO keyboard and Markup editors), on-screen note-taking, reader capabilities and TV connectivity (ChromeCast). Really, I loved the Nexus. The problem is though, it only works 90% and drives you crazy the other 10%. It's those 10% that tests usually not mention but made me unpack my 5-year old PC and get workin' again. Efficiently.

As for E-Books:

Main reason: No experience. I do read for both pleasure and knowledge extension, but the latter I primarily do via Readers like Pocket. A book is usually a long text I want to work with, i.e. a text I need to understand, cross-reference, highlight, read many times. All this is extremely cumbersome, at least with Kindle (I did only try Google Books as an alternative but found almost no books I am interested in. Same by the way for movies (less than on a regular plane flight) which one cannot even rent in English).

The Kindle app does not have a central place to look through your notes or highlights (apparently in the US store there is "my Highlights and Notes"). It does not allow multiple page markers or general sidenotes like a quick pencil brush. It's, like the tablet, for grandma reading, not for working.

But even with longer novels it's not pleasure. There is only a very rough feeling of process as the bar and remaining time are based on tags (for chapters) apparently randomly distributed through the books I've read. The process bar shows a general process even if there is lots of advertising and errata in the book - which also destroys the nice experience of finishing a book. I had to scroll though some multiple times until the index showed 100%, a few will probably never make it over 99%. Reading multiple books in parallel (yes, I multitask) is annoying because they all show up, randomly ordered and no grouping.

In addition, you cannot rent or nicely give an E-Book present. A voucher for Christmas, really? Why can't I transfer it in virtual gift wrap? Why is there no way to transfer a read book with a nice personal ex-libris note? That probably put the final nail in the coffin.

Sorry slick technologies, at the moment you just annoy me.

Inspired by XCKD 1309



Saturday, 9 November 2013

Offline First

In temple architecture, the main room stands at a considerable distance from the garden; so dilute is the light there that no matter what the season, on fair days or cloudy, morning, midday, or evening, the pale, white glow scarcely varies. And the shadows at the interstices of the ribs seem strangely immobile, as if dust collected in the corners had become a part of the paper itself […] where dark and light are indistinguishable
Jun'ichirō Tanizaki, In Praise of Shadows, 1977

Hoodie.io, an awesome web app framework, started the “Offline First” initiative.

It struck me for two reasons: First, it’s the right way to go and I have been looking into Meteor or Rendr/Backbone for some time. In a world, where services converge across technologies, platforms and ecosystems, technology needs to go a similar way (see my W-Jax talk). Seconds, I was quite surprised the let’s-code-all-startups-in-javascript-scene is realizing that! I’ve had my troubles following all the JavaScript developments of recent years (with the exception of Node) because their use cases simply didn’t make too much sense for me, it all seemed to be exclusively fitted for kinda-social-cloud-powered-minimalistic-apps. Seeing this attitude changing makes me feel optimistic and encouraged.

Until recently, the web app world was like “The West” in Tanizaki’s book: Always perfect, brightly lit, accepting no natural error, resilience was only required in certain places like hardware. Tanizaki praises the shadow, and more the diffuse actually, as a juxtaposition to the always-bright, the efficient and the productive. In building resilient, adaptive, “Offline first” systems we now embrace the shadows, the connection problems, the version conflicts, the deadlocks. And more, we embrace the diffuse, the not-so-clear situations to be identified, auto-corrected or escalated to the user. This means we value adaptability over usability in some areas, giving the user control (if she wants or not) over the process. This means we have work closer with users, design better services, fail gracefully.

As an enterprise guy, where mobile applications have been in place for some time, my projects have always been “offline first”, i.e. “complex” rather than “complicated”. It’s the reason I looked into CouchDB for mobile sync. Even when I built applications mixed with WebViews and native views, this very distinction was made taking into consideration the connectivity context. Connectivity is a part of responsive, or adaptive, or reactive, design. And therefore a part of flow-oriented, resilient service systems that can adapt dynamically*. 

Or, as Ethan puts it, with a nice reference to How Buildings Learn and the aging process: “Shearing Layers”, which means acknowledging the gaps, designing for change where the system is exposed to natural forces and “invite our users into some of these problems” i.e. move conflict resolution to the user, and make visible the complexity - with a suggestion system at work.

Or, in Tanizaki’s words:
The quality that we call beauty […] must always grow from the realities of life, and our ancestors, forced to live in dark rooms, presently came to discover beauty in shadows

*) If you read my blog regularly you know I am not a fan of cybernetics the way Sussna is proposing it as an automated solution to cope with complexity. I like to quote Steve Jobs: “people don't know what they want until you show it to them”. However, I was happy Sussna did the JAX keynote, agreeing with him almost entirely, I fully agree to his Manifesto.