Code Smells -> Refactoring -> Unit Tests

November 3, 2009 in Software Development, TDD, Tools by Mark Levison

Striped Skunk - Mephitis mephitis Two weeks ago now I gave an introductory tutorial on “From Code Smells to Unit Tests” (pdf) at Agile Tour Toronto (thanks to the organizers for a great conference). The slides walk cover  an introduction to Technical Debt, SOLID Principles, The Sea of Complexity, Basic Code Smells, Refactoring and Unit Testing Basics, Good Practices, Bad Practices. As usual the slides are only taste of what was said. In the session two elements didn’t work: First I wasn’t expecting to have to explain SOLID Principles – I was caught off guard and was ill prepared. Second the pair Refactoring Demo tanked. The plan was to invite audience members up to refactor Martin Fowler’s Movie Example (git hub browseable, zip file) – the plan was that peopleSea of Complexity would make small improvements five minutes at a time. The goal was to help people integrate what we had covered in the seminar already by doing it live. There has to be another way of providing an integration event, basically I would need to give the audience a way for experiencing refactoring for themselves.

Please try the Movie Example (git hub browseable, zip file) and see how far you can get with some simple refactorings.

References:

BTW David Koontz did the hard work of typing in Martin Fowler’s Movie sample – I just modernized it (Java 1.2 –> 1.6).

Caveat Emptor – if you buy any of the books after clicking on my link I get 4% of the price. In all likelihood that means I might be able to afford a coffee or two.

If you enjoyed this post, subscribe now to get free updates.

If you want to bring Mark into your organization for Training, Coaching or Consulting please visit the corporate site: The Agile Consortium.

Introduction to Agile – Ottawa, Canada – Oct 22-23 only two spots left

October 16, 2009 in Agile, Software Development by Mark Levison

I’m teaching an Intro to Agile course next week and have only two spaces left.

Details:

http://mayford.ca/training/introToAgile.html

This is a 2 day course that delivers an in-depth look at the fundamentals of Agile Development, and is intended for individual project team members, or complete teams. Ideally, the students are a mix of end users, business domain experts and development team members, although that is not required.

Through lectures and interactive exercises, this course conveys the principles of Agile Development, and focuses on communication as the foundation of Agile Development success.

Course Outline

  • The Basis for Agile Development
  • What is Agile Development?
  • What Agile Development is Not
  • The Economics of Agile Development
  • The Project Community (Roles and Responsibilities)
  • Project Structure
  • Agile Principles and Practices
  • User Stories and Estimation
  • Project Tracking
  • Review
  • Sample Project
    • Defining the User Stories
    • Story Estimation
    • Release and Iteration Planning
    • Iterations 0 to 3
    • Release!
  • Review

Agile 2009 Post Roundup

September 24, 2009 in Agile, Software Development by Mark Levison

Last Year I did: Agile 2008 Post Roundup and so thought it might be fun to do again this year. As usual InfoQ has a number of items, including presentations and now MP3 downloads.

Retrospectives

A Personal Retrospective on the Agile 2009 Conference – Johanna Rothman’s notes on running and surviving the conference.

Agile2009 Drawing to a Close – Steven “Doc” List

Reflections on #Agile2009 – Karl Scotland

Thoughts on #Agile2009 – Mike Cottmeyer

Agile 2009: Appreciations, Agile 2009: A Retrospective – Portia Tung

Agile 2009: a retrospective – Pascal Van Cauwenberghe – see also:

      Agile 2009 report: Monday , Tuesday , Wednesday, Thursday , Thursday afternoon

    Looking back at Agile 2009 – George Dinwiddie – the comments include good discussion about ways to improve session selection.

    Agile2009 – A buffet of Agile, Agile2009 Day 2 – The Festival Continuous  , Agile2009 – Day 3 Program – Martin Olesen

    My Agile 2009 Summary – Adam Goucher

    Agile2009 Trip Report – Mike Jones of OutSystems

    Why Bother Going to Agile 2009 or Agile 2010?? – Damon Poole

    Agile 2009 Chicago – Xavier Quesada Allue

    My Agile 2009 Personal Perspective – James Martin

    Agile 2009 trip report – Dave Nicolette

    Agile 2009 Reflections – Eduardo Scoz

    Feeding the Agile Beast – Dennis Stevens

    Group posts from KlocTalk: Agile 2009…Day 1, Agile 2009…Day 2, Agile 2009…Day 3, Agile 2009… Day 4

    Agile 2009 – Mark Mansour

    Agile 2009 summary – Kenrick Chien

    Agile2009 Conference Debriefing – Wojciech Seliga

    Agile2009 Take Aways – Slawomir Ginter

    My #Agile2009 Conference Thoughts, Some enjoyable quotes from #agile2009 – Peter Edstrom

    Agile 2009 Roundup – my own effort

    Agile2009 Recap – Fitzgerald Steele

    Agile 2009 – Jason Fox UX Designer

    Agile 2009: Product Management/Ownership and Business Agility – Luke Hohmann

    Agile 2009 Experience Report – Brandon Raines

    Agile 2009… Thank You All – Jurgen Appelo

    Agile 2009: Looking back – Tom Hume

    Agile 2009 Report – Renzo Borgatti

    Reflections on Agile 2009 – Brian Bozzuto

    Agile 2009 – The General Highlights – Jesse Fewell

    Agile 2009 wrapup – Michael Longin

    Thoughts on Agile 2009 Tom Grant and Dave West

    Reflections on Agile 2009 Dennis Stevens

    Why big Agile Conferences don’t have anything New? – Naresh Jain – I don’t agree with Naresh’s thesis but it’s still thought provoking.

    Specific Sessions

    What I Learned Programming With the Stars and Building a Learning Culture on Agile Teams (Slides) – Declan Whelan

    Leadership Game @ Agile2009 Chicago, Rally Chalk Talk: The daily meeting – Yves Hanoulle

    How to Create Rapport with your Customer, The Responsibility Model Revisited, Mapping the Agile Enablement Battlefield, Facilitation Patterns and Antipatterns, The Bottleneck Game – Portia Tung

    Agile Alliance Functional Testing Tools Workshop – 3, Esther and Diana’s Excellent Retrospective Adventures, Selenium Open Jam at Agile2009 – Adam Goucher – and many more see: his agile summary for all related posts. Adam where do you find the time?

    Powerful Questions and Powerful Requests and Agile Team Start-up: one of the first agile adoption activities, Build your team’s collaboration muscle – Lyssa Adkins

    Prioritizing Your Product Backlog by Mike Cohn -  Martin Olesen

    Scrum intro, A3 Problem Solving template and example – Henrik Kniberg

    Balanced Software Development – Karl Scotland

    The importance of identity and vision to UX designers on agile projects – Johanna Kollmann

    Visual Management Workshop at Agile 2009

    Create a Vision and Reward Failures #agile2009 – Peter Edstrom

    Coaching Workshop – my own effort

    User Stories, Mission Possible, Guerilla Research Methods  – Fitzgerald Steele

    New Approaches to Risk – David Anderson

    Agile Infrastructure – Agile 2009 – Andrew Shafer

    Herding Cats – Managing Large Test Suites, Agile UX Design Emergent Practices, Ambassadors & Carrier Pigeons – Tom Hume – BTW Tom has written posts for many more of the sessions he attended.

    Agile for Families – David Starr – while I wasn’t able to attend – it was on my stage and I love to see Agile outside of software.

    Agile 2009 Session Results Posted , Day 3 , Day 2 , Day 1 , Patrick Kau

    Agile 2009 – AA-FTT Workshop & more – Lisa Crispin

    Day 1, Day 2 – Shannon Cornish

    Notes from Keynote at Agile 2009 – Keith Swenson

    The Scrum Bestiary, A Behavioral Taxonomy – Ade Miller

    The impact of Agile Architect Teams in Scaling Enterprise Efforts – Mike Dwyer

    Irrational Loss Aversion Slides – Brian Bozzuto

    Agile2009: Mapping the Change Battlefield – Giora Morein

    Agile 2009 and PMI – Jesse Fewell

    The 7 Deadly Sins of Almost Being Agile (slides and handouts), Cuke4Nuke: Cucumber for .NET Teams (born at the pre-conference Functional Test Tools Workshop) – Richard Lawrence

    Coding Dojo: Kake format at Open Jam – Danilo Sato

    Selenium Open Space, Applying modern software development techniques to automating the web UI, day 4, The test step sweet spot – Michael Longin – Michael has a number of other posts from the conference that are well worth reading.

    Agile Coaching Roles – Notes from OpenJamTop 10 tips for coaches, Taking Responsibility to Learn and Grow – Michael Sahota – Michael is another writer a great set of posts.

    inspiration, trends, thoughts – Mads Troels Hansen

    A look back at Day 1, A look back at Day 2 », A look back at Day 3, A look back at Day 4 » – Kevin Minnick

    Micro-Interval Exercise with Alistair Cockburn – Bruce Onder

    Interviewed by François Beauregard – Eric Lefevre-Ardant

    Agile in the Very Large – Sam Guckenheimer – David Starr

    The Prisoner’s Dilemma: Applying Game Theory to Agile Contracting

    Where Does Developer Testing End and Tester Testing Begin? Abby Fichtner, Nate Oster

    Agile 2009 Notes – Thursday, Wednesday,Tuesday, Monday Scott Duncan

    Videos

    Apple’s view of the future as seen in the 8o’ties – the video that Jared Spool shared with us during his keynote.

    Paired Juggling – Declan Whelan and Uncle Bob

    A funny but true thought about how developers act when solving problem – Patrick Welsh

    Agile2009 Developer Jam: Ugly Code vs Clean Code – Patrick Welsh

    User Story Mapping – David Hussman and Jeff Patton

    More videos: http://www.youtube.com/view_play_list?p=52E5DFBB0E317163

    I hope you have as fun reading this as I did, if I missed your post – sorry I scanned through the top 200 google hits, a number of twitter references – but in the end there is only so much I can read.

    One last thought – it was difficult to find proper names for everyone I quoted, please make it easier – your name should featured on the main page of your blog, if not there then at least on the about page. Also if you want to make your blog easy to quote – check if post titles can be easily selected? Do they link back to themselves or do I have to get the link as well?

    If you enjoyed this post, subscribe now to get free updates.

    If you want to bring Mark into your organization for Training, Coaching or Consulting please visit the corporate site: The Agile Consortium.

    Agile 2009 Monday Conference Sessions that catch my attention

    August 20, 2009 in Agile, Agile 2009, Software Development, Tools by Mark Levison

    Last year just before Agile2008 I wrote a series of posts about my the sessions I was planning on attending. Last year was used to help coordinate a diverse group of IBM’ers, this year the audience is smaller: me.

    Monday Morning 

    9:00 – 11:00:  will likely be open jam time for me. Come find me there and lets have a conversation.

    11:00 – 12:30

    Kanban adoption at Software Engineering Professionals (SEP) Chris Shinkle (45 minutes) – “In 2004, SEP tried adopting Agile practices. However, Agile failed to have the desired lasting impact across the entire organization. Things changed in 2007, when SEP implemented Kanban for the first time.”

    The Agile Playground Tobias Mayer (90 minutes) – “Agility in Action… This session will introduce five interactive games that a facilitator can add to their toolkit for team and management training. The games all illustrate the principles and dynamics that support Agility. The rationale for this session is that people learn best by embodying the learning, rather than just receiving knowledge at a head level. All participants will be immersed in the games; there are no observers. At the end of the session the participants will have a set of games they can introduce into their own organization to enhance their own Agile adoption process.” From my own recent experience: Learning: the Best Approaches for Your Brain – I can say that games are a vey useful way to integrate knowledge.

    Using the Agile Testing Quadrants to Plan Your Testing Efforts Janet Gregory (90 minutes) – “Different testing approaches are needed because quality has many aspects besides functional requirements, such as making sure the code is reliable and secure. How do you know you’ve done the kinds of testing and quality processes are necessary for your product, especially on an agile project?”

    My choice: Tobias “Agile Playground” Caveat Tobias said he wants at 16-24 for this workshop, please don’t overwhelm him based on my recommendation.

    Monday Afternoon

    14:00 – 15:30

    Help already too many amazing options. First a bunch of experience reports:

    Enterprise Agile Transformation: The Two Year Wall Chuck Maples; Weaponized Scrum Michael Marchi; Accidental Adoption – The Story of Scrum at Amazon.com Alan Atlas; The Amazing Team Race – A Team-Based Agile Adoption Gabino Roche, Jr., Belkis Vasquez; The Covert Agilist Ken Howard; Descending from the Architect's Ivory Tower Andrew Rendell – I’m interested in all of these but they have some stiff competition:

    In the end its coming down to three options:

    When it just *has* to work: Agile Development in Safety-Critical Environments Brian Shoemaker, Nancy Van Schooenderwoert

    What Does an Agile Coach Do? Liz Sedley, Rachel Davies – They just written the book on subject.

    Creating Agile Simulations and Games for Coaches and Consultants Elisabeth Hendrickson, Chris Sims (3 hours) – This one is on the Manifesting Stage for which I was a reviewer and I championed the presentation. I love the idea of learning how to create games. I’m really hoping that Elisabeth and Chris distill their knowledge into an InfoQ article.

    My choice: I’m torn between Rachel and Liz – What Does an Agile Coach Do? – I’ve got to work this a bit myself and Creating Agile Simulations and Games.

    16:00 – 17:30 I may be meeting with Linda in this time slot so I will play this one by ear.

    Team Start-up: one of the first Agile Adoption activities Lyssa Adkins (90 minutes): “Starting up an Agile team is one of the first things you might be asked to do when a company wants to “go Agile.” What do you need to know before starting up a team? In the start-up, how much do teams need to know about Agile before they “go”? What do they need to know about each other…what the project is all about…who they will become as a team? These and other questions are answered as we walk through good ways to start-up Agile teams.”

    Giving and receiving effective feedback Elizabeth Keogh (45 minutes) – “Find out why we give personal feedback, how to provide effective feedback, what makes feedback ineffective and how to deal with poorly phrased feedback. Learning what makes feedback effective helps you to seek your own feedback and improve, whilst being able to support the people around you.” echoes of “Giving an Taking Design Criticism with Rebecca Wirfs-Brock

    10 Temptations of an Agile Coach (new or experienced) Stevie Borne (45 minutes): “Regardless of your coaching experience, there are a wide variety of temptations you can fall into that affect the quality of your coaching”

    Effective code reviews in agile teams Wojciech Seliga, Slawomir Ginter – I was tempted by this one but as I read the description it feels a bit like a vendor talk. “The session includes a demo on how Atlassian Crucible integrated with leading IDEs via Atlassian IDE Connector facilitates the whole process”  Not interested. To be clear I like Atlassian and their tools, but it feels like the talk has less value without their tools $$$. See the exchange in the comments below.

    My Choice: Team Start-up: one of the first Agile Adoption activities Lyssa Adkins

    If you enjoyed this post, subscribe now to get free updates.

    Agile Mailing Lists

    June 10, 2009 in Agile, Software Development by Mark Levison

    mail_box Twitter is fun, c2.com is almost dead and blogs have a lot of great ideas, but the best discussions about Agile still occur on the mailing list. Yet I keep coming across people in interested in learning about Agile who don’t know about the mailing lists.

    What follows is the mailing lists I know of (most of which I subscribe to). BTW I don’t recommend subscribing to this many mailing lists your mail volume will be insane (mine is about 300-400 messages a day), I can only handle it because gmail collapses long conversations into a single thread.

    Visual Studio vs. CCNET as Service

    April 7, 2009 in Software Development by Mark Levison

    Ok I’m going completely mad with CCNET and Visual Studio 2005. We’ve got CCNET running from the command line – but wanted to migrate to running it as a service so that it would always be run after a machine restart. The service has the login credentials of the user that runs the command line version today. So in theory they’re the same people.

    The ccnet config file:

    <cruisecontrol>
     <project name="EndManager" webURL="http://localhost/EndManager">
      <intervalTrigger name="continuous" seconds="30"/>
      <sourcecontrol type="vss">
       <project>$/EndorsementManager_Net</project>
       <workingDirectory>C:\GLOBEXDOTNETVSS\ENDORSEMENTMANAGER_NET</workingDirectory>
       <timeout units="seconds">600</timeout>
       <ssdir>\\vss2\share2\GlobexDotNet</ssdir>
      </sourcecontrol>
      <tasks>
       <devenv solutionfile="C:\GLOBEXDOTNETVSS\ENDORSEMENTMANAGER_NET\Source\EndorsementMgr.sln" configuration="debug" />
       <nunit path="C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe">
        <assemblies>
         <assembly>C:\GLOBEXDOTNETVSS\ENDORSEMENTMANAGER_NET\Source\EndmBaLayer\EndmBaComponentUnitTest\bin\Debug\EndmBaComponentUnitTest.dll</assembly>
        </assemblies>
       </nunit>  
      </tasks>
     </project>
    </cruisecontrol>

    This contains the much maligned devenv task which we use because its easier than writing an msbuild script for all of the assemblies. The devenv task trys to do the following on the command line:

    C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.com "C:\GLOBEXDOTNETVSS\ENDORSEMENTMANAGER_NET\Source\EndorsementMgr.sln" /rebuild "debug"

    Net result – I get the following wonderfully descriptive error: “the application data folder for visual studio could not be created” What’s up? Is this an environment variable problem? Shouldn’t having the login credentials of the user mean that we get their environment variables?

    Any ideas?

    If you enjoyed this post, subscribe now to get free updates.

    Planning a Change in Career? Laid Off?

    April 6, 2009 in Software Development by Mark Levison

    image

    Recently a few good friends have been laid off and I’ve been left thinking what to do after that happens. First up I don’t have any jobs in my back pocket. I don’t know anyone hiring right this second. My thoughts are more general than that.

    Snippets

    January 29, 2009 in Software Development by Mark Levison

    Moving Stuck Projects Forward: The Clinic Method …The Clinic Method.  What’s this?  It’s a nurses’ station for projects that are sick.  If a project manager or product owner or scrum master or anyone feels that a project is in trouble, it’s a place to go for help.  Get five or six of your best people and have them meet for half a day, once a week. … What does this team do when someone brings a problem?  They don’t solve the problem.  They help that person come up with a positive step to move forward

    The Magic Chemistry of Teams – examines some of the characteristics required to build and renew great teams.

    Multi Tasking Myth – we’re often trained to believe that multi-tasking is good either in the small: doing email and answering the phone. Or in the the large working on two or more projects. This item from Jeff Atwood demonstrates the falsehood of both. This picture illustrates the problem:

    Handling Large Stories in Agile – a short item on approaches to splitting large stories/features so that they can be completed in a single iteration.

    Track Velocity, Not Time Spent on Tasks – reminds us that we ship features/stories to customers not task. While tasks are useful in helping the team plan, estimate and organizing itself – it really doesn’t matter how much time is spent on any one task. Instead what matters is whether the stories are getting completed.

    Time to Go

    January 28, 2009 in Software Development by Mark Levison

    time-to-go Friday will be my last day at IBM and on Monday I will become an Agile Coach/Trainer for hire, via my open little company: Pure Agile Consulting (sorry no website yet).

    I've had a nearly eight year run with a great bunch of people. First at Databeacon and our .NET Rich Client (tip of the hat to Robi, Dave, Marc, Tony, Patrick, Suzzane, Ralph and briefly Hans) – little did you know how far I would take those crazy ideas around unit testing, milestones and reflection. Then Cognos for the death of Corinth and rebirth of PMRC (add to the list Sasa , Viktor, Daniel and Johnathan), PMMT (Brenda, Brian and Steve – aka Chad). Finally IBM and Agile Coaching with people too numerous to name.

    Sometime ago I realized that I was no longer passionate about coding and that my interests lie in coaching and mentoring Agile Software Development, TDD etc. Along the way many of you have given me the chance to do coaching/mentoring work and for that I'm grateful. I'm also grateful to everyone who put with my all to frequent harangues about why Agile/TDD etc was better than what we do today. One of the things I have learned since is to ask questions, listen and then harangue :-) Thanks to everyone who helped me evolve

    Special thanks to:

    • Robi for teaching me a lot about quality and for helping me to get better at writing good code
    • A big thanks to Sasa who took a chance on Scrum and put up with a someone who was telling him how to organize his team.
    • Ralph for giving me a chance to coach and for keeping me through three rounds of layoffs.
    • Guillaume (and the whole BUDDI team) for letting me use BUDDI as an occasional test bed for my coaching and facilitation skills.

    An interesting side story on the number of people at each company: Databeacon was ~60 people when I joined and ~30 when we were acquired. Cognos was about 3,500 and IBM is about 400,000. So each time I've been acquired I've joined a company that was 1,000 times larger than its predecessor.

    It's been great working with everyone and I look forward to crossing paths again.

    My permanent email address is . I would delighted to connect with anyone on Facebook or LinkedIn (yes I've dissed LinkedIn before).

    If you want to bring Mark into your organization for Training, Coaching or
    Consulting please visit the corporate site: The Agile
    Consortium
    .

    TDD Adoption Strategies Article

    January 8, 2009 in Software Development, TDD by Mark Levison

    Eons ago I promised a blog posting on TDD Adoptions strategy. Well the posting grew and grew and grew (can you tell I read alot of kid’s books?) and along the way morphed into something bigger. In end I decided this article would want a wider audience and so I published it on InfoQ. Here’s the blurb:

    Making TDD Stick: Problems and Solutions for Adopters

    Teams in large organizations still struggle to adopt TDD. In this article Mark Levison shares problems he uncovered when he surveyed teams, and his own strategy to introduce TDD into an organization.

    Enjoy the reading.

    If you enjoyed this post, subscribe now to get free updates.