Recently I've read a nice maxim by Bill Clinton "Every person has an optimist and a pessimist side. The trick is to be optimist on bad days and pessimist on good days".
In the technology world, we still live up to the optimism of the 50ies, it's considered anti-innovative, even anti-social, when concerns are brought up - unless you directly describe how you solved them. This begins with interviewers looking for 10x, Ninja and Rockstar programmers, assuming agile processes will work more productive amongst superstars, born with success and hyper-productive. Or people argue resilience is a bunch of fault-tolerant servers and session state in a distributed database that will make sure transactional safety for us (we don't care how), or delegating it to a messaging system that will encapsulate flow from us (we don't care how), or a hardware load balancer that will normalize access (we don't care how). But it's not relying on superpowers that creates successul networked systems. Evolution has told us: it's communication, the best communicating group of the fittest will win.
We're only at the very beginning of understanding complexity and peer-to-peer-networks. The military has a long history in understanding complex networked systems involving humans and therefore error. Looking at the current discussion around drones the problem does not seem to be ultimately solved. For our systems to achieve a kind of "Byzantine fault tolerance" against infrastructure errors, we need a new approach to concurrency and consistency. Once we include business-critical processes in distributed systems, we need to make sure information is valid - in the eye of the beholder. Usually, transaction safety is considered ubiquitous, but we need systems more like MVCC, that gives one user the impression of consistency, yet allowing concurrent modifications in limited scope. True Resilience is about having the user chose between optimistic and pessimistic locking, and providing a relevant consistency context for the user, hyper-consistency if you want. In military, logistics is key. In the same way, having access to trusted, coherent, resources, is key in our distributed systems.
A blog about architectural emergence, specifically in IT systems by @janpeuker
Sunday, 18 August 2013
Sunday, 21 July 2013
Seek out feedback and learn from your mistakes as you go along
At the end of the tunnel, there is always light; It just might be a train.
The Streets, Going through hell
In May I
visited the Lötschberg-Basistunnel,
a recently completed 35km tunnel through the Swiss Alps. I learned two amazing things
from the guide:
- Most complex tunnel drills stay in the tunnel. It would be too expensive to get out of the tunnel (the costly heads are unmounted sometimes) – because they start plastering the inner shells right after it.
- In the beginning it’s not really clear where the tunnel drill will take its way. As the head moves forward, rock formations can require changes in the trajectory.
Gojko Adzic
merges Design Thinking, SMART objectives, architecture assumptions
documentation and business case calculation into “Impact Mapping”, singing the old hymn about analysis-paralysis and Water-Scrum-Fall. He claims that pre-planned software development “it's
not a road, it's a tunnel”; rather than sticking to a linear backlog, project should have “something like a GPS”, a vision. Funnily that's how, in fact, tunnels are built. Roads on the other hand often are grids. It's not the question of a tunnel or a road - the distance makes the difference. A straight planned product with tons of features in a neat grid will not enhance usability. Creating a vision – an impact that everyone understands – will. Being able to define a long-term goal allows for adjustment. Rather than just to “divide and conquer”, this is the art of the product owner.
As someone who moved from startups and design/advertising into traditional consulting I am amused by the now-mature generation of Web 2.0 firms which start to look into the very same traditional processes: product planning, sticking to delivery, definition of requirements which are backed by business cases, business process management and simple interfaces. It's good to see that the mechanic and the organic approaches to software development finally merge, creating a mature, objective and tolerant way of building technology that helps the people using it.
Something between Micro Services and ROA
A post from July 2013 on Microservices I never finished but now, in 2014, like to reference. It's unchanged, so take it with care and read Fowler's and Richardson's stuff first.
I've read two interesting articles recently one on Divide and Conquer and another one on Simplicity*. Both advocate a new pattern of maximum decoupled services called Micro Service Architecture (by Fred George).
...
This reminds me of NoFlo and Mathematical Visualizations and Abstractions. The strength of Micro Services is not the Continuous Deployment or Decoupling but enforcing to think about organization and the connections of functionalities, because one cannot simply tangle them.
...
However, Micro Services are still services, which means verbs. If they would be nouns, there would be no need to manage tangling because the complexity would already be in the hypermedia.
Maybe something in between is the future of Software Engineering, where Data is managed in REST but logic as Micro Services can be moved between the tiers, as horizontal view of vertical data.
....
*) The solution to this within Yammer is DropWizard, an approach going in the direction of Cell Architecture, with Autodeploy features added and a noun-based approach. A little bit like the Java answer to the 12 Factor App and Docker but, in my opinion, too much of a data expose layer with some PaaS candy.
I've read two interesting articles recently one on Divide and Conquer and another one on Simplicity*. Both advocate a new pattern of maximum decoupled services called Micro Service Architecture (by Fred George).
...
This reminds me of NoFlo and Mathematical Visualizations and Abstractions. The strength of Micro Services is not the Continuous Deployment or Decoupling but enforcing to think about organization and the connections of functionalities, because one cannot simply tangle them.
...
However, Micro Services are still services, which means verbs. If they would be nouns, there would be no need to manage tangling because the complexity would already be in the hypermedia.
Maybe something in between is the future of Software Engineering, where Data is managed in REST but logic as Micro Services can be moved between the tiers, as horizontal view of vertical data.
....
*) The solution to this within Yammer is DropWizard, an approach going in the direction of Cell Architecture, with Autodeploy features added and a noun-based approach. A little bit like the Java answer to the 12 Factor App and Docker but, in my opinion, too much of a data expose layer with some PaaS candy.
Sunday, 26 May 2013
Design Thinking for Ecosystems
Bret
Victor’s talk about “Drawing
Dynamic Visualizations” (via Stilkov)
inspired me to go a little further on design thinking. Not in particular
because of his amazing visualizations but rather his quote of Alan Kay
referencing Jaques Hadamard, who did a survey amongst great mathematicians what
kind of tools they use. In this study
Hadamard found that only a few of them “claimed
to use mathematical symbology at all […] they did it mostly in imagery or
figurative terms”.
![]() |
| Alan Kay in Bret Victor's Talk |
I am
sometimes surprised to see hardcode-science-educated colleagues struggle when I
apply techniques and methods learnt in design and architecture school.
Sometimes even simple brainstorming seems to disqualify me as proper nerd peer.
This also applies to systems or enterprise architecture when I draw systems in
the size according to the importance of their interfaces on the whiteboard,
print out code to show its asymmetries or refuse to include technical layering
in early system drafts (in the end it’s all indirection).
Design
Thinking is everything but new – d.school
has shaping it for a while. But via the organizational implications mobile is
putting upon enterprises, it’s entering the world of technology architecture
rapidly. Agencies like R/GA, Frog
or recently-Accenture-acquired Fjord
take giant steps towards the convergence of innovative service and product
design with technology. What they call “functional integration” is often coined
an ecosystem in the technology world. It gets more interesting though if we ask
why this integration has not reached all the platforms we know of. Apple is
usually considered one of the best ecosystems – yet, its technical platforms
are surprisingly heterogeneous and task-based, you could argue skeuomorphic in the way they act. Android and Windows 8 are much more “flow-based”, trying
to support an externally planned long-running activity
through multiple
channels. In a way, they are more technical – but then again, in the
long-term, they might very well bring the benefits of good design: a product
that is unobtrusive, long-lasting, essential and pure.
Our
architectures must become like good design, like an unobtrusive ecosystem that
shaped the components living in it. As Triarchy
writes:
“Deleuze and Guattari talking about the structural and genetic aspects of organisations and the need to consider the shape of the formed organisation on the structural plane as well as the evolution of the formed organisation on the genetic plane. This echoes the debate about whether to prioritise structures or processes in management. For D and G, it's necessary to do both.”
Or as
Bjarne Stroustrip, again quoted by
Bret Victor, said: “A lot of thinking about
software development is focused on the group, the team, the company”. Evolution,
i.e. predators, are important in emergent, especially in agile, iterative
systems. However, systems don’t end in themselves; they need to fulfill a
purpose. In a world where all kinds of systems are possible, design thinking
can find this purpose.
UPDATE: A good write up on why design thinking is a discipline, not a process: http://www.fastcodesign.com/1663558/design-thinking-is-a-failed-experiment-so-whats-next
UPDATE: A good write up on why design thinking is a discipline, not a process: http://www.fastcodesign.com/1663558/design-thinking-is-a-failed-experiment-so-whats-next
Thursday, 25 April 2013
Ätzende Architekturmetaphern
On JAX 2013 I gave a talk "Ätzende Architekturmetaphern". The main thesis was that software architecture has arrived at a point very similar to one in the history of urbanism, where two main streams merged. The one coming from the tradition of society, the "organic" one. The other coming from the machine age and functionalism, the "mechanical one". Via a short detour over emergence, a new kind of theory materialized - what Vidler called "the third typology". It lead to a new approach of "bottom-up" research, cumulating in the analysis of informal architectures, i.e. slums. This new way of critical theory could very well apply to the current state of our profession, where we are looking for a way to include resilience, rhizomatic structures, information flows, evolutionary design and agility into our architecture.
As Prezi does not feature longer transcripts, this is the reading list (received on April 25th 2013):
- Taleb : http://www.fooledbyrandomness.com
- Dobelli : http://www.dobelli.com/kontakt/klarer_denken_textauszug
- In Zeit Nr. 17 / 2013: http://www.zeit.de/2013/17/nassim-taleb-rolf-dobelli
- Mencken 1920 : http://en.wikiquote.org/wiki/H._L._Mencken
- Johnson 1954 : http://www.mediaarchitecture.at/architekturtheorie/philip_johnson/2011_philip_johnson_crutches_en.shtml
- Carpo 2011 : http://mitpress.mit.edu/books/alphabet-and-algorithm
- Howell 1902 : http://www.library.cornell.edu/Reps/DOCS/howard.htm
- Similar Evolution : http://www.theatlanticcities.com/design/2012/11/evolution-urban-planning-10-diagrams/3851/
- Wright 1943 : http://www.steinerag.com/flw/Books/a0303.htm#Auto
- Corbusier, Precisions 1960 : http://books.google.de/books/about/Precisions_on_the_present_state_of_archi.html?id=I8ZPAAAAMAAJ&redir_esc=y
- Corbusier 1930 : http://highwaysofthemind.com/futurama/bychapter/futuc/futuc3note2.html
- Buckminster-Fuller 1967 : http://www.bfi.org/about-bucky/buckys-big-ideas
- Whole Earth Catalog and it's connection to Apple : http://www.hkw.de/en/programm/2013/the_whole_earth/veranstaltungen_83124/veranstaltungsdetail_87732.php?calmonth=2013-08&month=2013-08&bcal=1 and http://www.guardian.co.uk/books/data/book/computingandthenet/9780226817415/from-counterculture-to-cyberculture-stewart-brand-the-whole-earth-network-and-the-rise-of-digital-utopianism
- Gamma et al 1995 : http://dl.acm.org/citation.cfm?id=186897
- Fowler 2003 : http://martinfowler.com/books/eaa.html
- Koenig 1995 : http://en.wikibooks.org/wiki/Introduction_to_Software_Engineering/Architecture/Anti-Patterns
- Alexander 1977 : http://www.patternlanguage.com/leveltwo/ca.htm
- Linnaeus (Class) : http://palaeos.com/taxonomy/linnaean/class.htm
- Durrand / Laugier (Patterns) : http://www.jayebee.com/creations/archtypology/archetypology4_french_tradition.htm
- NATO 1968 : http://homepages.cs.ncl.ac.uk/brian.randell/NATO/NATOReports/
- Nygaard 1967 : The Simula-67 handbook e.g. http://dl.acm.org/citation.cfm?id=808391
- Brooks 1975 : The Mythical Man Month http://www.addison-wesley.de/9780201835953.html (and others)
- Garlan & Shaw 1994 : “An introduction to Software Architecture” http://www.cs.cmu.edu/afs/cs/project/vit/ftp/pdf/intro_softarch.pdf and http://c2.com/cgi/wiki?PerfectArchitecture
- Arc 42 Vorlage : http://www.arc42.de/process/process/processdetails.html
- Vogel et al. 2009 : Sofware-Architektur: http://link.springer.com/book/10.1007/978-3-8274-2267-5/page/1
- Beck & Andres 2005 : Extreme Programming Explained http://www.addison-wesley.de/main/main.asp?page=home/bookdetails&ProductID=95830
- Winograd 1996 : Bringing Design to Software http://hci.stanford.edu/publications/bds/
- Buschmann et al 2007 : On Patterns and Pattern Languages http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0471486485.html
- Tufte / Death by Powerpoint : http://www.edwardtufte.com/tufte/powerpoint
- Booch 2009 : Handbook of Software Architecture http://researcher.watson.ibm.com/researcher/view.php?person=us-gbooch
- Fairbanks 2010 : Just enough Software Architecture http://rhinoresearch.com/book
- Kruchten et al 2006 : The Past, Present and Future of Software Architecture http://www.computer.org/csdl/mags/so/2006/02/s2022-abs.html
- Vitruv / Vitruvian Man : http://en.wikipedia.org/wiki/Vitruvian_Man
- Hackers and Painters : http://www.paulgraham.com/hp.html
- Software Craftmanship : http://manifesto.softwarecraftsmanship.org/ und http://www.softwerkskammer.de/
- Coding the Architecture : https://leanpub.com/software-architecture-for-developers
- Dirk Riehle / How Buildings Learn : http://dirkriehle.com/2012/10/20/software-architecture-is-a-poor-metaphor/
- Beck & Fowler 2001 : Planning Extreme Programming http://martinfowler.com/books/pxp.html
- Fowler 2000 : Is Design Dead? http://martinfowler.com/articles/designDead.html
- Johnson 2001 : Emergence: The Connected Lives of Ants, Brains, Cities, and Software http://www.guardian.co.uk/books/2001/oct/15/society
- Hofmeister et al 2000 : Applied Software Architecture http://www.mypearsonstore.com/bookstore/applied-software-architecture-9780201325713
- Herz 2012 : From Camp to City http://www.manuelherz.com/from-camp-to-city
- Erlang Design Principles : http://www.erlang.org/documentation/doc-4.9.1/doc/design_principles/des_princ.html
- Mark Reinold on Jigsaw : http://mreinhold.org/blog/late-for-the-train
- Emily Tanaka-Delgado on Node.js : http://blog.nodejs.org/2011/07/11/evolving-the-node-js-brand/
- Fielding on REST : http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
- ZapThink 2006 : http://www.zapthink.com/2006/12/11/the-legoreg-model-of-soa/
- Lego Serious Play : http://www.seriousplay.com/
- Heidegger 1971 : Building, Dwelling, Thinking in http://www.routledge.com/books/details/9780415415170/
- Vidler 1978 : “The Third Typology” in Nesbitt, Theorizing a new agenda for architecture http://www.papress.com/html/book.details.page.tpl?isbn=9781568980539
- Ellin 1996 : Postmodern Urbanism, http://www.papress.com/html/book.details.page.tpl?isbn=9781568981352
- Archivo Superstudio : Archivio Superstudio: The Continuous Monument, An Architectural Model For Total Urbanisation, Firenze 1969 http://www.megastructure-reloaded.org/de/superstudio/
- Lebbeus Woods, San Francisco Project : http://www.archdaily.com/316687/sfmoma-lebbeus-woods-architect/
- Yona Friedman : http://www.yonafriedman.nl/
- Chandigarh by Iwan Baan : http://www.archdaily.com/128084/living-with-modernity-brasilia%E2%80%94changdigarh-iwan-baan/
- Vertical Slum by Adam Fry : http://www.pulsamerica.co.uk/2012/10/25/torre-david-vertical-slum/
- Western Cities (e.g. München, Barcelona) : http://www.mobgenic.com/2012/12/29/tata-kota-yang-rapi-dan-indah-di-eixample-barcelona/
- Eastern Cities (Tatami Mats) : http://www.apartmenttherapy.com/quick-history-tatami-matsretro-154420
- Richard Cook : How compex systems fail via http://highscalability.com/blog/2012/12/3/resiliency-is-the-new-normal-a-deep-look-at-what-it-means-an.html
- Todd Hoff 2012 : http://highscalability.com/blog/2012/12/31/designing-for-resiliency-will-be-so-2013.html
- Geoffrey West 2011 : http://longnow.org/seminars/02011/jul/25/why-cities-keep-growing-corporations-always-die-and-life-gets-faster/
- Jane Jacobs 1961 : The Death and Life of Great American Cities e.g. http://www.nytimes.com/books/97/08/17/reviews/jacobs.html
- Doug Saunders 2011 : Arrival City, http://www.randomhouse.de/Buch/Arrival-City/Doug-Saunders/e280019.rhd
- Joi Ito 2012 : Via Wired http://www.wired.com/business/2012/06/resiliency-risk-and-a-good-compass-how-to-survive-the-coming-chaos/
- Urquhart 2013 : http://gigaom.com/2013/01/27/devops-complexity-and-anti-fragility-in-it-stability-and-resilience/
- Holling 1996 : (in Urquhart 2013)
- Jeff Sussna 2013 : Manifesto for 21st-Centurty IT http://blog.ingineering.it/post/39385342347/21st-century-it-manifesto
- Sterling 2013 : Via Wired http://www.wired.com/beyond_the_beyond/2013/04/antifragile-system-design-principles/
- Takuro Hoshino, London 2000 : Via Franz Sdouz http://www.mediaarchitecture.at/architekturtheorie/philip_johnson/2011_philip_johnson_crutches_en.shtml
- Ruth Malan 2013 : What it Takes To be a Great Enterprise Architect http://www.ruthmalan.com/journal/journalcurrent.htm
- Tufte 2002 : http://www.edwardtufte.com/tufte/minard
- Heiko’s Big Map : http://www.imapping.info/heikos-big-map/
- Agile Software Architecture Sketches by Simon Brown : http://www.codingthearchitecture.com/2013/04/16/agile_software_architecture_sketches_and_nouml.html
- Jeff Scott : Urbanism as a poor metaphor http://blogs.forrester.com/jeff_scott/10-05-03-let%E2%80%99s_get_beyond_tired_out_of_date_ea_metaphors
Subscribe to:
Posts (Atom)


