- Set up the organisation to ‘sense’ its environment
- Treat internal teams (almost) as external providers
- Conway’s Law should shape our organisation design
- Promise Theory is a useful approach to organisational agility
I have been doing quite a bit of work recently with various organisations to help them develop new capabilities for building and evolving software-rich services. Part of this work involves thinking about the responsibilities of different teams and how these evolve. This blog post captures some thoughts and links on how the more successful organisations arrange themselves for agility and responsiveness.
Continue reading Designing organisations for responsiveness
I gave a talk at Velocity Conference Europe 2016 called How to break apart a monolithic system safely without destroying your team based on work we have done at Skelton Thatcher Consulting over the past few years with various organisations.
The slides are on Slideshare at http://www.slideshare.net/SkeltonThatcher/teams-and-monoliths-matthew-skelton-velocity-eu-2016 and the video of the talk will be online soon.
The main take-aways from the talk are:
- Recognise that by starting with the needs of the team, we can avoid cognitive overload, thereby making future development more sustainable
- Understand the type of monolith you are dealing with (there are many kinds of monolith)
- Consider using Code Forensics (see Your Code as a Crime Scene)
- Find the natural ‘fracture planes’ in your code and work with these
- Instrument the monolith before splitting it up
- Understand data flows and fault responses
- Split off one segment of code at a time, considering the cognitive load for the team
There is quite a bit more in the talk itself, including the effect of Conway’s Law, the benefits of monoliths, and real-world examples from client engagements.
A big thanks from me to the organisers of VelocityConf for their hard work, to the audience in my talk for some excellent questions, and to the speaker selection panel for choosing my talk (!).
Back in 2010 when Jez Humble and Dave Farley wrote their ground-breaking book Continuous Delivery, the Windows and .NET platforms lagged behind the Linux/Mac world in terms of automation capability. That is no longer the case – every core feature in Windows and .NET now has a PowerShell API and all the core tooling needed for Continuous Delivery – package management, artifact repositories, build servers, deployment pipelines tools, infrastructure automation, monitoring,and logging – are all now available natively on Windows/.NET.
Chris O’Dell (@ChrisAnnODell) and I decided we should explain how to make Continuous Delivery work with Windows and .NET, and thanks to the great editorial team at O’Reilly, we’ve published a short eBook:
The dedicated book website is at CDwithWindows.net and O’Reilly have published the first chapter of the book online as an article: Introduction to Continuous Delivery with Windows. We’d love your feedback: email@example.com
UPDATE: we’ll be at both PIPELINE Conference (March 23 2016) and WinOps Conference (May 24 2016) with printed copies of the book.
Note: we began writing the book in August 2015, and it’s astonishing (and exciting!) how much has changed in the 8 months since then, with Windows Nano, Azure and Windows support for Docker and containers, .NET Core, SQL Server on Linux, and even SSH for Windows. These and more recent developments do not feature in the book – perhaps we’ll do an updated version soon.
The way we think about data and databases must adapt to fit with dynamic cloud infrastructure and Continuous Delivery. The need for rapid deployments and feedback from software changes combined with an increase in complexity of modern distributed systems and powerful new tooling are together driving significant changes to the way we design, build, and operate software systems. These changes require new ways of writing code, new team structures, and new ownership models for software systems, all of which in turn have implications for data and databases.
Read the full article on Simple Talk: Continuous Delivery for Databases: Microservices, Team Structures, and Conway’s Law.
(These slides were presented in a talk I gave at develop:BBC 2014 conference on 13th November in London)
I wrote an article recently for the Simple Talk website called Common database deployment blockers and Continuous Delivery headaches, where I outline some of the common problems preventing databases from being deployable – a major blocker to Continuous Delivery.
Deployability is now a first-class concern for databases, and there are several technical choices (conscious and accidental) which band together to block the deployability of databases. Can we improve database deployability and enable true Continuous Delivery for our software systems? Of course we can, but first we have to see the problems.
The recommendations include:
- Minimize changes in Production
- Reduce accidental complexity
- Archive, distinguish, and split data
- Name things transparently
- Source Business Intelligence from a data warehouse
- Value more highly the need for change
- Avoid Production-only tooling and config where possible [I mention this in my talk How to choose tools for DevOps and Continuous Delivery]
To address [these things] individually perhaps doesn’t seem too challenging, but to tackle deployability requires close, effective collaboration between developers, DBAs, and operations teams to achieve the right balance between rapid deployment and access to data.
Read the full article here: https://www.simple-talk.com/sql/database-administration/common-database-deployment-blockers-and-continuous-delivery-headaches/