The Skills Funding Agency has been a hugely exciting place to work over the last year or so. We have torn up the old rule book, putting our users at the heart of everything we do, adopting agile techniques and bringing software development in-house.
I have the privilege of leading the Solution Design and Innovation team. Architects, developers and designers work with the SFA's Service Managers (Heads of Digital Service) to design the new services. We plan the transition from policy-driven 'inside-out' systems, to user-driven 'outside in' approaches - whilst recognising that both will have to co-exist for a multi-year transitional period. We are achieving the linkage using pragmatic APIs to connect the two worlds.
Our approach has transformed over the last year as we've applied the Agile Manifesto in our solution design activities. The biggest impact has been to change the balance of where we spend our time, spending relatively more with users and stakeholders - and less time completing extensive architecture documents. Some decisions were easy - for example, the solution design pack at the end of our Alpha has more coverage than our previous equivalents, but less depth. The main outputs were communication activities rather than technology decisions.
Some aspects of this process have been liberating - such as being able to highlight things we do not know, rather than trying to complete every last detail. The missing elements can be completed as the project progresses.
When a colleague introduced me to the idea of emergent vs intentional design, I saw the potential of mixing the best of our old world with the best of the new. The difference on our agile projects is not that intentional design is thrown out, but that it is done (like everything else on an agile project) incrementally.
I used to feel that my team should have an answer for every demand for certainty from a project - but as nice as it might be to make all design decisions up front, doing so is impossible. This means that on an agile project, design is both intentional and emergent. The design emerges because there is no big up-front design phase, even though there are design activities during all sprints. Design is intentional because product backlog items are deliberately chosen with an eye toward pushing the design in different directions at different times.
Have we solved all the tensions yet? No, not by a long way! Agile still needs strong solution design - we're starting with a viable approach, and iterating our way to a better one.