Iteration Review & Retro: #SAFeSummit 2018 SAFe Agile Software Engineer (ASE)
Richard Acosta
?? Digital Transformation | AI & Product Leadership | Enabling High-Performing Teams
This article contains the remarks and reflections of the SAFe Agile Software Engineer course that was delivered by the first time as General Availability at the SAFe Summit 2018 organized in Washington D.C. by Scaled Agile.
Why create (another) new course, this time centered in good technical practices
Currently, the market for agile courses is full of N flavors of Scrum, N coaching courses, N facilitation tools. Without mentioning those that are using the oLean-X" tag, where X can be replaced with a technique on how to be more empathic with our users/customers (read Lean UX), and tools for cultural change management that needs to happen at the companies so these new processes survive and do not struggle and die later (read Lean Change-Management).
Nevertheless, software development, considered by many as an "art", does not scape from being an engineering branch and that in order to improve quality, the development team needs to know and practice a set of good technical practices that go beyond leadership, facilitation, empathy and change management.
This gap is currently covered -in some way- with courses such as the Certified Scrum Developer from ScrumAlliance. I would not include here the DevOps courses, mainly because the development team (the team in charge of building the product) should not invest too much time, not even 50% in enhancing the DevOps maturity. For that we should have a separate team (or what SAFe suggest as a System Team), but this is something to discuss and that can deviate us from the main topic.
So let's focus in why we came here for.
About the trainer
Scaled Agile chose Ken Pugh as the trainer of this 3-day course. Ken is a professional with near to 50 years working in the software industry (yes, he started in the 60's and you can tell how passionate is about software development, almost like hiking) and he is author of the book Lean Agile Acceptance Test Driven Development (recommended to read before this course). As a first reflection, I would say that Ken's jovial character, his histrionic skills, (singing and reciting a poem during the course with charisma is not easy), as well as his vast experience and his ability to explain what is difficult with simple examples from real life, made a deeply technical course, in a fun experience.
About the other participants
Beyond the instructor, the experiences, stories, contexts and diversity of the participants in a global summit enriches the course very much. I had the good fortune to share a table with Nicholas who works at Roche, Faycel from Nav Canada, John from Mitre and Fredrik, who has his own consultancy in Sweden and works as an SPC in Europe. We made an excellent team due to the diversity of our profiles, the chemistry and the respect that we had from the first dynamics that began last Sunday.
In addition to the aforementioned participants, there were professionals from HBO, FedEx, Kaiser Permanente, and Quicken Loans.
If you don't come out with 3 alternatives to solve a problem, you don't understand the problem yet.
The 3 days of the course allow to cover in depth a vast diversity of topics. I must admit that I chose this course over a more-known course such as the RTE (which leads you to obtain the Release Train Engineer certification to be the Train facilitator), due to a personal analysis of the cost-benefit (both courses cost the same) and how many new subjects I was going to visit. I do not regret the choice.
Day 1
On day 1 of 3, we started with techniques described in the book Training from the Back of the Room (which I also like to use in my courses) to connect the participants with the course and with themselves, and break the ice to have a more enriching experience. We present the business case that we are going to work during the 3 days as a team, and that provides the practical part (that I would have liked to include a virtual machine or a server in the cloud). This is based on a cartoon format, which has already been applied in other SAFe courses such as DevOps and which has apparently brought good results at the pedagogy level.
It defines what is software engineering and how it is extended by the world of agility and specifically by XP. The principles are covered with a very interesting exercise, and key concepts such as BDD and TDD are visited for the first time. I must admit that before this course, I had a misconception of what was really "Behavior Driven Development" and in fact, reading Ken's book, helped me understand it better and with the course landing it completely. Then we reviewed the contribution of Lean to the ASE, Lean UX and the concept of MMF. Finally we checked architectural concepts and how to design elements to cover the famous T of the acronym INVEST: Testability.
Day 2
"Do not put code in, if before it doesn't have a test on" - Ken Pugh
Day 2 of 3 covers in depth the benefits, the what and the how to apply a change towards the "Test First" mindset. This was one of the aha! moments of the course because it is not something that is normally covered in the Scrum courses and is something where I personally see a lot of value. In a Scrum course, you focus on describing the framework that becomes the new way of working that the team will adopt to work iteratively and incrementally and thus (in theory) obtain the benefits of Agile. But, 16 hours are not enough to explain to the team how to reduce the batch size and how to implement the INVEST acronym in the user stories so that they reach their DoD. How to work from elicitation and requirements specification in an agile world is essential to avoid falling into Scrum-buts, Scrum-falls, Waterfall-up-front, or whatever you prefer to call the environment where you do Scrum, but waterfalls prevails like BUFP (Big Upfront Planning).
"The tests come to be part of the system documentation." - Ken Pugh
On day 2, concepts from the book More Agile Testing are also covered. If you have an account with Safari Books Online, you can find it there. Highly recommended.
The intersection between Agile Software Engineering (ASE) and DevOps is also covered. This is a positive point for Scaled Agile in its intention to maintain consistency in its courses.
The most interesting part appears later, when entering in detail in the BDD world. It covers the requirements specification or user stories acceptance criteria with BDD and ATDD. We review techniques such as Personas, Estimation, Story Mapping, how to divide stories, and cover something new that I think is valuable: including a phase of identifying assumptions and risks in each iteration planning. This provides discipline and alignment on stakeholders expectations.
Day 2 ends with a visit to the importance of use modeling for communication. Here I consider that there is an opportunity for improvement in the course, since it is based on diagrams that made me retrieve memories of UML, but there are new nomenclatures (like Archimate of the Open Group for example) that allow us to work in modeling more easily.
Day 3
Day 3 of 3 covers mainly technical topics. If you have not had a background as a software developer or QA analyst, you may don't get all the value of this part of the course, because we covered key concepts to understand how to build-in quality. This is one of the fundamental contributions of this course, since not everything is solved with coaching or pasting some post-its on the wall and suggesting that we are already agile. To have quality in development, it is essential to know software engineering concepts: qualities of a good-quality code (cohesion, coupling, assertiveness, non-redundancy, abstraction), design through interfaces, SOLID principles and design patterns. Books that are covered here are Uncle Bob's Clean Code and Steve McConnell's Code Complete. The nice thing is that there is an entire chapter full of examples and exercises where these concepts are applied, including how to apply refactoring and TDD, so as not to remain only in theory.
As a conclusion and final reflection, I would say that unlike the Certified Scrum Developer course that I took in 2011 in Lima, this course not only stays in XP but also includes practices for the implementation of the "test-first" mindset and the "built-in"quality value as well as software engineering topics. Hence its name.
As a final reflection, I get the pleasant impression that Scaled Agile has the merit and experience of integrating a set of good practices that work in the market, and that they have used this know-how to apply it to close a gap that is currently happening in many agile teams and is summarized in one of the principles of the manifesto: technical excellence improves agility.
I hope you got something valuable from this reading. Thank you for your time and if you are interested in learning more, or have any question, I will read you in the comments.