In the software world, there are principles that can be applied to make an architecture more agile. One of these is “design for change”. Because change is inevitable, a robust design will anticipate change in a way that minimizes impact to the existing system. A related design practice is to encapsulate what might change behind an interface (API). And a good practice for software in general is to hide the implementation of whatever happens behind the API so that code that relies on the functionality does not have to change its messaging or expectations when the hidden functionality is changed. (more…)
I know, long time since the last post. Life is rich. Thanks for asking.
I was at Agile Open San Diego last week. Thi sis annual event where smart people get together to learn from each other. I highly recommend it for next year. There are other Agile Opens in Orange County, San Francisco and Seattle.
I attended a session to discuss training for developers on Agile Teams. It was a small, passionate group. There were people from Net Objectives, a great source of technical resources and enterprise Agile transition, and Rocket Nine Solutions, an Agile consultancy I have been working with over the past year.
My modest contribution was to share some things I have learned from several iterations of technical training I developed and delivered over the years. I have not done any for a while but I still have a few relevant neurons left. I was recently at a client and had the opportunity to share with some younger engineers the things I thought they should learn to be more successful in their careers. They granted me the modern honorific of OG. If you are of my generation, you may need to look that up.
In the Agile Open session, I sketched out a suggestion on what might make a good curriculum for Agile developers. Not much of this is new. I learned most of it more than a decade ago, some 2 decades ago. For what it is worth, here is my list, in a learning sequence that makes sense to me.
Suggested Agile Developer Curriculum
- Test Driven Development(TDD)/Pair Programming
- Continuous Integration/Continuous Delivery/Code Coverage
- Programming by Intention
- SOLID Principles
- Emergent Design
- Clean Code
- Code Quality/Complexity/Dependency Analysis
- Design Patterns
You can get a lot of this in a Scrum Alliance Certified Scrum Developer course. The list would also be a great self-study course for internal engineering groups. We did some of these when I worked at Microsoft in the early 2000s. In discussion with others at Agile Open, I threw out an guessthat engineers could learn these topics in 3 months with a half day/week study if they integrated the learning into their real work. I have introduced the first 3 topics to groups in a half-day of training at several clients.
You may notice that automated acceptance testing, or story testing, is not on this list. I consider that to be a complementary but separate topic because it is trivially easy to learn. I have also gotten teams started in that in a half day.
I have heard good things about Mob Programming but have not tried it myself. Well, maybe once long ago when there were four of us “pairing”.
My favorite book on TDD is Test Driven. It also introduces automated acceptance testing.
The topic list above has links to other resources.
Do what you like with this. Learn, get better at your craft and go home each night with full confidence that the work you did today was rock solid. It is a great feeling.
My colleague Pete Behrens is offering a great new course Certified Agile Leadership Level I, Jan. 18-20, 2017 in Tustin, CA. This course is the first step in a great new Scrum Alliance program for managers, directors, VPs and executives who want to expand their understanding and effectiveness at building truly Agile organizations. Coaches are welcome, too.
If you are an organization leader, contact us for a discount code.
In this post I want to show where Scrum fits in the greater scheme of things now that we are well into the 21st Century. The context here is software development, where Scrum got its start. Scrum is used for many other types of work now but we are going to stick with software in this post. We will see that Scrum is just one tool in the set for achieving business agility.