Schedule
Wednesday August 26, 2009
| 8:30 AM | Continental Breakfast | |
| 9:00 AM | Ken Auer | Opening Keynote: Swimming Upstream, Sprouting Legs, and Running Free |
| 10:00 AM | Dave Astels | There and Back Again (staying technical throughout your career) |
| Michael Feathers | Self-Education and the Craftsman | |
| 10:45 AM | Fred George | Observations from an Old Warhorse |
| Christopher Avery | Demonstrating Responsibility: The Mindset of An Agile Leader | |
| 11:30 AM | Jim Weirich | Grand Unified Theory of Software Design |
| 12:15 PM | Lunch | |
| 2:00 PM | Ward Cunningham | What If Bacteria Designed Computers |
| 2:45 PM | Paul Pagel / Dave Hoover | Apprenticing to Mastery |
| Kevin Taylor / Micah Martin / Carl Erickson | The Business of Craftsmanship | |
| 3:15 PM | Afternoon Break | |
| 3:45 PM | Bobby Norton | Test-Driven Learning |
| Cory Foy | Selling Craftsmanship in the Enterprise | |
| 4:30 PM | Uncle Bob Martin | Craftsmanship Under Pressure |
Abstracts
Jim Weirich: Grand Unified Theory of Software Design
Many words of programming wisdom have been written to promote the idea of low coupling between modules. "Prefer delegation over inheritance", "The Law of Demeter" are examples of these words of advice. But why does delegation introduce less coupling then inheritance? And how does the law of Demeter reduce coupling? To understand these issues, we will look at the concept of "connascence" how it appears to unify many different design principles under an overall view of coupling. We will also talk about oatmeal and physics.
Michael Feathers: Self-Education and the Craftsman
Craftsmanship is a set of values and a state of mind. There are no barriers to entry except the desire to learn and willingness to apply oneself. However, we all arrive at the path of craftsmanship in different ways. Some of us have formal training in software engineering and computer science, and others don't. In this talk, Michael Feathers will outline essential knowledge about our discipline which you don't really pick up in apprenticeship unless you are very lucky; a core of knowledge about software which we must carry forward to keep our discipline grounded.
Fred George: Observations from an Old Warhorse
Seven observations will be made from experiences spanning 5 decades. Included are personal answers to: Objects or SOA?; Death of Iterations; Viability of Ruby w/o TDD; Discarding language elements to create more robust languages. The talk is meant to create dialog (and even dissension) with the audience.
Christopher Avery: Demonstrating Responsibility: The Mindset of An Agile Leader
Agile succeeds and flourishes where people demonstrate ownership behavior. The failure to take responsibility stalls projects, kills teams, and is a leading reason why smart managers fail.
This lively and unique talk presents:
- How agile leaders success soars when they take 100% responsibility
- Breakthrough research showing how the Responsibility Process works in the mind and how you can tap into it at work
- The Keys to Responsibility for your agile projects and to build responsible leaders, teams, and communities.
This material has a proven track-record in the Agile community and at Agile conferences.
Everyone will receive a full-color poster of the Responsibility Process.
Ken Auer: Swimming Upstream, Sprouting Legs, and Running Free
Does a fish know he’s wet? After having his first child in 1992, Ken Auer began examining his responsibility in training up the next generation. Seeking his true calling, reflecting on his experiences and becoming a student of history, he began examining, participating in and creating some very counter-cultural efforts. In 1998, he resolved himself to build the first Extreme Programming Software Studio™ based on his vision of apprentices, skilled journeyman, and software masters working together in an environment of continuous learning and collaboration to produce adaptable and robust software. As an accomplished software craftsman, his first conscious move toward this goal - with fear and trepidation - was to train a non-college-educated apprentice. Conscious of not wanting this young man to be a sacrificed guinea pig, he committed to do whatever he could to make sure he was in at least as good a place at the end of four years as he would have been if he had gone through four years of college. More than ten years later, with a long string of non-conventional experiences under his belt, he has realized many of the glories of taking a road less traveled. He’s going to attempt to share his incredible journey in the time he is given and challenge others to question their culture.
Ward Cunningham: What If Bacteria Designed Computers
I sometimes work real hard to make it look like a program was easy. I will describe my five year effort to write one page programs for 8-bit microprocessors. First I discard most of what I know about computing and replace it with my beginner's knowledge of cell biology. This exercise has had spin-off value that continues to delight me. I will do my best to share that delight.
Bobby Norton: Test-Driven Learning
In approaching any new language, there are many learning curves to overcome. What are the most frequently used API's? What frameworks should I use? What patterns and idioms? Reading books and blogs can help, but there's no substitute for getting your hands dirty and doing some coding. Thinking about software development instead of actually developing software is a lot like thinking about playing a guitar instead of just picking up your axe. You need to write code to learn, but you don't want to limit your learning to what you do on the job, nor do you necessarily have the time or interest to start a toy app.
Enter unit testing. Unit testing gives you a way to build yourself a library of examples that are verifiable, executable, and self-documenting. This technique isn't knew. 4 years ago, Mike Clark wrote the best material I've found on the subject:
I only found these posts about 6 months ago, however, and I suspect many people haven't seen this technique. I've found it to be a great way to practice in a safe environment rather than subjecting production code to my experiments. It's the code equivalent of learning to play the daf in a sound studio: You can record yourself, use reference materials, and do as many takes as you want. And you won't disturb the neighbors.
During this presentation, I'll demonstrate test-driven learning using Ruby. I'll have a Git repository with some code you can use to bootstrap your learning tests, so bring your laptops if you'd like to follow along. I'll also open the floor to discussion for other techniques people use to learn. As if this wasn't enough to blow your mind, we'll raffle off a copy of Pragmatic Thinking and Learning as a way to further continue your learning.
Cory Foy: Selling Craftsmanship in the Enterprise
To many leaders and executives, the craftsmanship movement can be a tough sell - particularly lines like "Not only working software, but well-crafted software." When you are bringing new practices inside of an enterprise organization, you need to be prepared on the challenges ahead and how you can face them. In this session, Cory will show how it is possible to adopt craftsmanship practices in an organization, and the guiding principles which can help you sell it to the larger management and executive teams. We'll also discuss pitfalls and political battles that must be faced to help grow your organizational community of craftsman.
Uncle Bob Martin: Craftsmanship Under Pressure
Being a craftsman is about how you behave when the chips are down and the pressure is up. In this talk Uncle Bob provides a set of do's and don'ts for software developers who want to hold to their craft even when the schedule seems impossible, the requirements are ambiguous, distractions and meetings take all your time, and the sky is falling.
Dave Hoover/Paul Pagel: Apprenticing to Mastery
Software companies are always looking for ways to develop skilled developers. Formal software apprenticeship is the approach taken by more and more companies, including Obtiva and 8th Light. Over the past 2 years we have observed almost a dozen apprenticeships and come to recognize certain apprenticeships of developers that are themed by their aspiration to mastery. These apprenticeships are unique in many respects. We will review the patterns of behavior that we've observed in successful apprenticeships. Most of these patterns are applicable both inside and outside formal apprenticeships and have been cataloged in O'Reilly's upcoming book "Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman".
Micah Martin/Kevin Taylor/Carl Erickson: The Business of Craftsmanship
"Craftsmanship sounds expensive!" If you've heard similar comments from your supervisors or clients, then join three experienced craftsmen-turned-entrepreneurs for this 30 minute panel discussion. All three panelists come from technical backgrounds and have built successful software development companies that are built on craftsmanship values, such as quality, learning, and community, and use Extreme Programming practices to develop software. During the panel, we'll delve into how software craftsmanship principles and practices have aligned well with the panelists' businesses and how they have presented obstacles to overcome. We'll start with the following topics and see where the conversation takes us:
- How can craftsmanship help one pick new clients and make existing clients raving fans?
- Does craftsmanship imply generalization or specialization when it comes to individuals and/or the company?
- How are apprenticeship programs structured, do they work, and how do they impact projects?
- Why and how is fostering community and partnerships valuable to a software development company?

