By Brian Lucas
One day a traveler, walking along a lane, came across 3 stonecutters working in a quarry. Interested to find out what they were working on, he asked the first stonecutter what he was doing. “I am cutting a stone!” Still no wiser the traveler turned to the second stonecutter. “I am cutting this block of stone to make sure that it’s square, and its dimensions are uniform, so that it will fit exactly in its place in a wall.” The traveler turned to the third stonecutter. He seemed to be the happiest of the three and when asked what he was doing replied: I am building a cathedral.” – The Stone Cutters Parable by Unknown
[1]Often in agile, epics are treated as undesirable. We are driven to identify atomic level functions in user stories[2] as quickly as possible. There is however, a proper view, place and time for epics. Their targeted use can lead to harmony in application development. To be useful, epics should be construed as simply another view of information system components. I liken them to nebula waiting to reach their fulfillment as galaxies (it’s the astrophysicist in me). The epic view is one of large undeveloped areas of application potential with just enough detail to tell you how they basically fit into an enterprise architecture. This is reminiscent of a nebula which will form stars and solar systems with planets and become a full-fledged galaxy.
When speaking of applications at this level, we rise into the realm of enterprise architects. Much has been written about the antagonistic relationship between enterprise architects(EA) and agile development teams. There is an unfortunate notion that strategic architectures and agile concepts are incompatible and that I/T professionals in each camp are so different they cannot work together. On the surface this seems valid. If however, you think outside the box, the solution is really only a matter of perspective[3]. The secret here is that EA have to realize they are not writing laws in stone tablets and developers need to understand they can write lines of code in an ever changing sand beach.
A good application architecture puts the borders together on a large scale; showing how your application strategy fits together. It also tells you what is not included in a particular application. It focuses thought intelligently on this level of the picture. It not only shows you where the elements should reside, but shapes your strategic development efforts. Good architectures are liberating and save valuable development time. They should not cause unnecessary or onerous restrictions[4]. The epic user story concept is an efficient language bridge between enterprise architects and agile development teams. Not only is it language based, but it can easily be understood by both users and technical professionals.
Here are two techniques that have been around for quite a while which can hold this epic level of information: work breakdown structures[5] (WBS) and function flow block diagrams (FFBD). They are simple to use, easily understood and conveniently used with either white-boarding or electronic tools. WBS, when applied to agile software development, simply shows the functional decomposition of
an intended solution. There is no need to keep breaking down each function block level by level until you get to an atomic function. It is sufficient to just record the epic and the relationship each epic has with each other. At that point, you will then know how to group your user stories. FFBD adds the concept of data and communication flows between application nodes, adding more specificity. Don’t get too hung up on form or symbology. These are techniques that can be loosely interpreted. You can (and should) refine the diagram(s) over time. After all agile is an iterative process.
Both of these techniques are a great way for you to fit the pieces of your solution puzzle together in a reasonably orderly way. They keep your user stories organized by providing you a specific bucket for stories that share a common domain. They also orient your teams and build knowledge within the team by consistently assigning them to the same epic’s detailed user stories. They minimize refactoring by identifying utility or common use classes early on; building robustness and extensibility into the solution without the overhead of unused functionality. WBS are also very handy for designing a structure to manage scrum of scrums. FFBD address the two major technical issues of large scale agile development, the need for encapsulation of a particular node balanced against the specificity of the communications that are expected going to and from that node.
Epics can evolve two ways. The top-down approach works well when you have a strong knowledge of the problem’s domain. In this approach, you start with the identification of the epic and how it relates to others. You define just enough breakdown of the epic to make the overall epic’s domain clear. In cases where a new area is being explored, a bottom-up approach works best. The individual functions are first identified irrespective of their association. Later on, these functions are analyzed and organized into functionally cohesive groupings. You don’t have to get this perfect right out of the box! Just start and rework it as you gain knowledge. Hmmm, what does that sound like?
To sum up, epics are a good thing when used in their proper context. They can help you see the forest of your application’s product space through the trees of individual functions. Bring your EAs and developers together into the fold of agile by using WBS or FFBDs to hold the epic user stories that reflect your application architecture. Work well understood applications from the top-down and new concepts from the bottom-up. Don’t get wrapped up in perfection, it’s an iterative process after all. So let’s hear from all of you and till next time, remember to keep agile!
[1] This is one of my favorite pictures of the Crab Nebula. It is indeed an epic with an interesting history.
[2] User Stories Applied: For Agile Software Development by Mike Cohn is still the seminal work on user stories. If you haven’t read it, you need to, even if you are an experienced agile practitioner.
[3] Rather like Ed Whitten’s brilliant unifying M-theory solution to the multiple string theory issue.
[4] Architectures that restrict development and don’t facilitate the rapidity and prototyping that are essential to agile are one of the reasons agile efforts fail. You are trying to be agile in a non-agile environment.
[5] The WBS concept was developed for the Program Evaluation and Review Technique (PERT) by the United States Department of Defense and NASA in the late 50s and early 60s. See the Project Management Body of Knowledge (PMBOK) Guide for detailed information on use.
I was always taught to look at epics as bad things… Can you give some more fully developed examples of how epics relate to user stories? I would appreciate it very much!
I will try to post an addendum here with some actual examples. Thanks for the request. Stay tuned!
Could you tell me when you’re going to update your posts?
If you like the social media then you’ll be notified.
This was very helpful!!! I had not seen this twist before. Thank you for sharing it. Too often blogs don’t contain concrete information, yours does. I am going to follow this blog regularly. You are quite a superb writer! How often do you intend to post? I would read it every day! – Sincerely Thomas Brighton
Thanks Thomas! I am glad you appreciate that focus it was a very intentional one.
I have been doing this for years and it works well….Good tip from someone who seems to know what its all about…..
Hey Brian, this is a very interesting post. I was wondering if you could post a few more examples that would help me with this concept a little better. I like the idea, but I am a little unsure about the breakdown and how to level it. Would be open to an email and I could send you what I am trying to breakdown?
Sure P.L. send me what you are working with and I will look at it and let you know what I think.
This was quite inventive, taking something that was a perceived negative and finding a positive use for it. I am impressed.
Some equate inventiveness to adaptability, if so, since agile = adaptability and inventiveness = adaptability then agile = inventiveness. Thanks for the comment!
Huh! And we were always yelled at by our EXPERT high priced consultant for writing epics. I am so going to email this to him. Thanks BL
Keeping Agile is all about spreading knowledge and getting people to think, not dictating dogma.
This was very helpful!!! We were struggling with our user story breakdowns and this gave us a better way to do it and even provides value in the breakdown process as well. Thanks man!
Hi Brian: thanks for the tips on user stories they were great!
Never saw epics explained like this before. I always felt FD was a part of this solution. I just never saw anyone embrace it before. Great idea Brian. Simple, effective and solves a big problem! As a CIO this is the kind of thinking I really admire!
Cool! Thanks man!
Wow what a simple solution to the epic problem and capturing sweeping thoughts. My question is how disciplined are you in the functional decomposition? Do you follow classic lines of cohesion or are you interpreting it loosely?
Pingback: Ed Lobinski
Pingback: Julie Cope
Thanks for clearing this up for me Brian. I was always told that epics were bad.