Sessions

I typically get my slides up on SlideShare quickly if you're here for a recent session that isn't listed here.

Maps over Backlogs: User Story Mapping to Share the Big Picture

A flat backlog presents problems understanding context of individual items. Determining the value of a user story in a vacuum is difficult, if not impossible. We need the big picture! Without understanding the big picture, how do we know if we have identified all the stories? How do we communicate the context of a user story in the big picture? How do we really know what is necessary for a minimum viable product? User story mapping is a technique that can help us keep the big picture front and center. It was developed to build shared understanding and display the stories within the context of the user narrative. We will discuss the challenges with flat backlogs, how user story mapping can help with those, do an activity to build a story map and discuss how to integrate this technique into the work you’re already doing.




Presented at:
Southern Fried Agile 2017
Atlanta Scrum User Group
Agile Atlanta Meetup
Lean Atlanta Meetup
Music City Tech 2018
Agile and Beyond 2018

Taming scary production code that nobody wants to touch

Most dev teams “own” some code that they don’t really want to work with. However it got there, the code is scary but pretty stable and requires updates. Perhaps your team draws straws to each time to figure out who is going to have to put on the metaphorical hazmat suit and deal with the problem. Or worse yet, your team relies on one developer to always do it and he or she is getting burned out and could leave at any minute. Mike will share some techniques that will help you modify the code with confidence using a few core refactorings and characterization test.




Presented at:
Little Rock Tech Fest 2022
NoVA Code Camp 2020
CodeStock 2019
Stir Trek 2019
DevSpace 2018
PRDC Deliver 2018
Connect.tech 2018
Atlanta Code Camp 2018
Southern Fried Agile 2017

Develop your sense of code smell

It has been 18 years since Martin Fowler published “Refactoring” which codified an initial catalog of code smells. But in that time, have our noses been able to sniff them out? What have we done to develop our sense of smell? We will do a series of Sparrow Decks to increase our sense of code smell by building the pattern recognition part of our brain. This way we can more easily know if there is something wrong with the code. Remember smelling you have a problem is always the first step. (Note: this technique works for non-programmers as well as programmers so even if you’re not a programmer, come and develop your sense of code smell!)




Presented at:
Atlanta Code Camp 2017
Codestock 2018
Mile High Agile 2018
Agile and Beyond 2018
Music City Tech 2018

Put the Test Before the Code

Test Driven Development specifies that you write a failing unit test before you write any code. Some people say this is impossible. I'll demonstrate that it's not only possible, but will change how you write code for the better.



Presented at:
Atlanta Code Camp 2016
Codestock 2018

Mob Programming for Continuous Learning

What if we took Extreme Programming and said it’s not “extreme” enough? What if we took pair programming and cranked it to 11? Mob programming is a technique with “all the brilliant people working on the same thing, at the same time, in the same space, and on the same computer.” I was lucky enough to be on a team for about year that worked “as a mob.” I’m also now leading a team that is mobbing full time and using mob programming for workshops and other learning experiences. Come learn what practices we found to be critical, what obstacles we encountered and what practices became irrelevant during our experience.



Presented at:
Utah Code Camp 2016
Software Testing Atlanta Conference 2016
Raleigh Code Camp 2016

The Quest for Continuous Delivery

Continuous integration, continuous delivery, continuous deployment.  These may seem like unreachable goals in your current situation.  Maybe you’re doing weekly or even monthly coordinated releases.  At Pluralsight we deploy multiple times a week, sometimes multiple times a day.  We’re not perfect and we’re constantly working to improve our system, but I’ll share an experience report of where we currently are and where we’re going.




Presented at:
Utah Code Camp 2015
Boise Code Camp 2015
Mile High Agile 2015
That Conference 2015

Play to Learn! Agile Games with Cards and Dice

Play is a powerful method to learn! Come and play some simple agile games that use playing cards, index cards and dice to explore the different values that are at the foundation of Agile and Lean development practices.  In addition to your own insights, you may be able to take these game back to work to share with your co-workers.

This is a hands-on session so come prepared to have some fun!

There is no "right" answer to what you're "supposed to" learn from a game, so come ready to discover your own insights into software development processes and teamwork.



Presented at:
Utah Code Camp 2015
Seattle Code Camp 2014
SoCal Code Camp - San Diego 2013
Baton Rouge Tech Day/SQL Saturday 2013
Mile High Agile 2016

Thinking in F#

Coding in a functional language requires more than simply knowing the syntax of that language. You can write a for loop in F# as easily as you can in C#, but you're missing out on the functional aspects of F# (and C# for that matter). We'll do an introduction to the language features of F# and how to unit test but more importantly we'll write some code with a functional mindset and discuss where and why you would want to use F# in your existing projects.




Presented at:
Utah Code Camp 2014
Boise Code Camp 2014
Chicago Code Camp 2014
Seattle Code Camp 2014
SoCal Code Camp 2014
Northern Utah .NET User Group March 2015
Atlanta Code Camp 2015

Software Craftsmanship and Agile Code Games

Join us to talk about what it means to be a software craftsman, how the Software Craftsmanship Manifesto (http://manifesto.softwarecraftsmanship.org/) provides a framework for us to improve.

A large part of being a software craftsman is practice. Using different "code games" we can have a full toolbelt of activities that will help us (and those around us) become better at our craft.

Agile software development promises the ability to deliver value quickly. But this isn’t just a matter of process. Uncle Bob says "the only way to go fast is to go well." But how do we go well? As software developers, we can only deliver features as fast as the code base and our skills allow us. Unfortunately the quality of our code base is directly related to our skill in the past.

Musicians and athletes spend most of their time practicing, not performing. As software developers (aspiring craftsmen) we must have practice sessions that allow us to improve our skills and develop better “code sense”. We’ll look at some different “agile code games” that will help us improve our craft.




These slides were used for the Guided Kata section of the Agile Code Games.



Presented at:
Utah Code Camp 2014
Boise Code Camp 2014
Chicago Code Camp 2014
SoCal Code Camp San Diego 2014
Seattle Code Camp 2014
Mile High Agile 2014
SDEC 2014 (Software Development and Evolution Conference)
Agile Development East 2015
Agile 2016
Southern Fried Agile 2016

Power of Patterns: Refactoring to (or away from) Patterns

What is a design pattern? Why should you care? What it the power of design patterns? How do design patterns tie into object oriented programming? If I'm using objects in my code, isn't that object oriented programming? (The answer is not necessarily!) When should I use them?

Design Patterns are great but the temptation is to use Design Patterns as a golden hammer. This can lead to unnecessarily complicated, over-engineered code in an effort to be flexible and ready for the future. That sounds reasonable - if you happen to be a psychic. More commonly, you will refactor to a pattern when the code (that you’ve written simply and minimally) demands it.

We'll talk about why you should know common design patterns, why they are powerful, how they relate to object oriented principles, different composite refactorings that will move you to (and sometimes away) from patterns and the smells that help you know when to apply them.



Code starting point: https://github.com/mdclement/RefactoringToPatterns

Presented at:
Boise Code Camp 2013
Utah Code Camp 2013
Chicago Code Camp 2013
SoCalCodeCamp - San Diego 2013

Transformation Priority Premise: TDD Test Order Matters

When coding using TDD, do you often run into a point when you have to “implement the whole thing”?  The sequence of tests that we write significantly impacts where are code ends up!  We’ll explore Uncle Bob’s Transformation Priority Premise, looking at the transformations that code goes through and how our tests can drive the code in different directions.


Presented at:
Boise Code Camp 2013
Chicago Code Camp 2013
SoCalCodeCamp - San Diego 2013

Using Rhino Mocks for Effective Unit Testing





Original design by andrastudio
Blogger port by Blogger Templates