Speaker

Mike Clement

Mike Clement

Software Engineering Leader, Software Crafter, Open Space Advocate and Facilitator

Powder Springs, Georgia, United States

Actions

Mike Clement is a husband, father of four and currently a Distinguished Software Engineer at Hunter Industries. Mike believes we work best when we are working together and that there are no best practices—only better and worse ones depending on the context. Some leading practices Mike is passionate about are Test Driven Development, Pair and Mob Programming, User Story Mapping, Domain Driven Design and Open Space Technology. Passionate about raising the bar of technical excellence in the software development community, Mike is a founder and organizer of Software Crafters Atlanta, the Software Crafters Unconference, and the Lean+Agile Atlanta Unconference. Find out more about Mike on his blog (http://blog.softwareontheside.com/) and on LinkedIn at https://www.linkedin.com/in/mclement.

Area of Expertise

  • Information & Communications Technology

Topics

  • Software Craftsmanship
  • Agile Engineering
  • engineering leadership
  • Software Architecture
  • refactoring
  • mob programming
  • Pair Programming
  • Agile Games
  • Lean / Agile Leadership
  • Lean
  • open space

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 but now 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.

Software Craftsmanship and Agile Code Games

Musicians and athletes spend most of their time practicing, not performing. As software developers if we only practice and learn on the job, then we will continue to make mistakes on code meant for customers. On the job, we can only deliver features as fast as the code base and our skills allow us. We must improve the quality of our skills which will in turn improve the quality of our code base. We must take the time to practice allowing ourselves to improve our skills and develop better “code sense”. Learn how the Software Craftsmanship Manifesto (http://manifesto.softwarecraftsmanship.org/) provides a framework for us to improve in our craft. By learning a variety of code games we can collect a full toolbelt of activities that will help us improve as individuals. We can then take these games and give others the opportunity to improve and raise the level of the whole community. We’ll take a whirlwind tour of some different agile code games that will help us improve our craft.

Strategic Thinking in Software Architecture using Wardley Mapping

We make a multitude of decisions while we build software. When deciding between available technologies we can get caught in a herd mentality, blindly following the recommendation of a YouTuber or conference presenter. How do we develop and apply sound strategic thinking techniques and skills to building software? Join Mike as he blends his two decades of building software with strategic thinking techniques, highlighting Wardley Mapping.

Role Playing Distributed System Patterns

Modern distributed system patterns can help us build software systems that are not just distributed monoliths, but are truly distributed and independently deployable. Unfortunately, it can be very confusing to understand how these patterns interact and when each should be applied. This often leads teams to build parts of the system that do not work well together. By applying complementary patterns consistently in a system you can improve the effectiveness of your system.

Using architecture diagrams with rectangles and arrows to express interaction patterns is necessary, but often not sufficient to express how the system ought to behave. In this session, participants will role play as parts of a distributed system (UI, API, database, message broker, etc) to experience the patterns of communication. Not only will you gain a better understanding of these patterns, but you can use this technique to help your team understand your current or desired software system.

Refactor to Make the Change Easy (then make the easy change)

Many developers use the term “refactoring” to refer to any “clean up” effort in the code. This definition, unfortunately, mischaracterizes refactoring’s power to allow us, as software programmers, to incrementally make powerful changes to the structure of our code without changing the behavior. The problem is that sometimes developers will make changes to code in order to “make it better” when there isn’t a clear reason to change the code in the name of “tech debt” and this introduces unnecessary risk that rightfully bothers non-developers.

On the other hand, if there is a business reason to make a change to code, refactoring is a great way to transform the code so that the change is easy to make. Mike will do live coding to demonstrate specific techniques that will allow you to stay green throughout a larger refactor to make the change easy (so you can then make the easy change!)

Put the Tests 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.

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.”

Join me on my journey through different development practices and how I landed at mob programming as my preferred way of working. 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 for the past year 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. The pains and successes we had helped us learn and they may help you see a pathway to experimenting with mob programming in your work!

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.

Focus on Flow: Lean Principles in Action

Lean concepts have become more and more popular in software development. Coming from the manufacturing world, understanding these concepts and how they can apply to your software development efforts can help you get to deliver faster and more reliably. Join Mike as he makes the case for integrating lean software development principles into your software development methodology.

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!)

Collaboration Principles from Mob Programming

In the media, writing software is often portrayed as a solo endeavor. While many modern software systems begin as the work of one person, building and scaling them cannot be done by “lone wolf” developers. We need to collaborate with other developers as well as those in different roles and in concentric rings of responsibility and influence around the core product team. These socio-technical systems can be difficult to navigate.

Mob programming is a technique for collaborative software development where “all the brilliant people work on the same thing, at the same time, in the same space, and on the same computer.” I have had the opportunity to work primarily in mobs for the past six years and before that for years in pairs. I have observed that this has led to higher internal and external quality which has led to more maintainable code which has led to consistent delivery sooner. Either way, by sharing my experiences with mob programming, I’ll point to principles underlying the practices that will help you along your own collaboration journey.

This Could Have Been a Slack Message: Diagnosing and Treating Bad Meetings

In person or over a video call, many of us spend a significant portion of our day in “meetings.” We’ve all had the experience of sitting in a meeting and wondering “do I need to be here?” and then possibly following that up with “do any of us need to be here?” Unfortunately bad meetings are commonplace and have led some to call for the banishment of all meetings! If you are somehow working in an environment where no collaboration and coordination is necessary, that might work, but even independent contractors need to meet with their clients on occasion.

Over the years I’ve accumulated different models and tools to diagnose and treat bad meetings and to ensure that the good meetings are happening in a productive way. I’ll share stories of how I’ve used these tools to improve, eliminate, and sometimes even add new meetings to improve the way my team, department and company work.

Little Rock Tech Fest 2022 Sessionize Event

October 2022 Little Rock, Arkansas, United States

Atlanta Developers' Conference 2022 Sessionize Event

September 2022 Marietta, Georgia, United States

Stir Trek 2022 Sessionize Event

May 2022 Columbus, Ohio, United States

CodeStock 2022 Sessionize Event

April 2022 Knoxville, Tennessee, United States

Big Mountain Data and Dev Conference Sessionize Event

October 2021

Northern VA CodeCamp Fall 2021 Sessionize Event

October 2021

Atlanta Code Camp 2021 Sessionize Event

October 2021 Marietta, Georgia, United States

Music City Tech 2021 Sessionize Event

September 2021

Big Mountain Data and Dev Conference Sessionize Event

October 2020 Salt Lake City, Utah, United States

Northern VA CodeCamp Fall 2020 Sessionize Event

September 2020

CodeStock 2020 Sessionize Event

April 2020 Knoxville, Tennessee, United States

Lean Agile KC 2019 Sessionize Event

November 2019 Overland Park, Kansas, United States

dev up Conference 2019 Sessionize Event

October 2019 St. Louis, Missouri, United States

Little Rock Tech Fest 2019 Sessionize Event

October 2019 Little Rock, Arkansas, United States

Agile Midwest Conference 2019 Sessionize Event

September 2019 Saint Charles, Missouri, United States

Music City Tech 2019 Sessionize Event

September 2019 Nashville, Tennessee, United States

Stir Trek 2019 Sessionize Event

April 2019 Columbus, Ohio, United States

CodeStock 2019 Sessionize Event

April 2019 Knoxville, Tennessee, United States

Lean Agile KC Sessionize Event

November 2018 Overland Park, Kansas, United States

Agile Midwest Conference 2018 Sessionize Event

August 2018 Saint Charles, Missouri, United States

Music City Tech 2018 Sessionize Event

May 2018 Nashville, Tennessee, United States

Mike Clement

Software Engineering Leader, Software Crafter, Open Space Advocate and Facilitator

Powder Springs, Georgia, United States

Actions

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top