Thursday, October 15, 2009

Agile Tour 2009 Open Jam Part 2


Once again Agile Tour was an exciting event in the Philadelphia area. There was lots of energy around as beginners and practitioners could find an avenue to increase their agile knowledge.

The OpenJam gave people an opportunity to have open honest dialog around topics that they were passionate about. My blog first entry on the OpenJam covered the great topic of certifications.

This time I want to provide the session "Scum is Evil???" This was a great talk, where people could discuss the benefits of scrum over something like waterfall. It also got into issues where scrum just didn't go far enough.

I'll start with the list of cards from Scrum is Good, it is a much shorter list.

Scrum is Good:
Team Building
Burn Down Chart
Gave Agile Legs
Feedback Cycle
Regular Deliver of Software
Make Crap Visible
Failures have pushed evolution of Agile
Fail Faster then Waterfall
Customer Interaction
Scrum failure is visibility to Failure
Alternative to PMI
Works for Waterfall Executive Organizations
Scrum Tackles People Problems
Proven Process Documented
Generates Excitement about Development

Scrum is Evil:
Makes You Believe it Works
Failure is Delayed
Not Agile Revolution
$$$ For Certification
The Scrum Black Book
Outlived Initial Fame
Easy to be Evil
Scrum is the only Solution
TDD was not part until 2008
Separate from AgileAliance
No Change New Word
Product Manager on a Team
No Development Practices
Title of Scrum Master
Deceptive Marketing
Control
Burn Down Chart
Intentions are Wrong
Scrum Master is not a Coach
People play the wrong role
Scrum Failure is not Agile Failure
People do not Venture out of Scrum
Certification is Evil
Feedback has no Solution
Chicken Pig is divisive
Micro Manage and Oppress People
No Tools for Solving Problems
Leaves Staff Out
Is a Buffet of Practices


Tuesday, October 6, 2009

Agile Tour 2009 Open Jam Part 1


Agile 2009 came to Philadelphia and had some great sessions. It provided information for people new to Agile as well as experienced.

One of the three options available included an Open Jam. We had 3 topics that covered Certification, Scrum is Evil?, and Agile in a ERP. I want to thank all of the people who attended Open Jam. The discussion was great. For those who missed the sessions consider joining an open space discussion in the future.

The notes I have are based on index cards that were captured as part of the discussion. This blog entry will only cover the Certification topic that took place during session one. Look for the next entries in the coming days.

There were three main topics that came around our starting point of Scrum Certified Developers and scrum.org.

Certification:
Certified Developer
Training $4,000
Who can pay for training
3 day scrum training
Can't teach in 40 hr course
Language Specific certification is Bad
What skills should Agile developer have
Agility assessment
scrum.org scrum assessment online test
Who's plan is best for training?
Tom Mellor is the new Pres of Scrum Alliance
World Scrum board

Agile
What is Agile?
Distributes agile
Dev in one area, QA elsewhere
Lean vs Scrum, XP is Dead?
XP, pairing, TDD
Tracer bullet
Product people/QA Agile training is challenge
Team easy to work with
TDD is not QA
Use Manifesto to help push Agile
Buffet of practices
New AgilePhilly site, no feedback
General feedback people do not give
Start up XP/Scrum problem with no customer
Customer quick iterations
Feedback to create new stories

Improvement
Who tries to learn Agile
Incremental learning
Practices of an Agile Developer - Book
Read books
Participate in an Open Source project
Warcraft Quests to level up in Agile
Technology is always changing
Everyone is a social Web expert
Acknowledge flaws and improve
Blame/ownership CoCO
Egoless developer
Awaken developers abound Ego hold back
Discussion groups help learn
Hire for behavior not knowledge
Able to adapt to new environment
Teach other to learn
Learn from others

Saturday, August 29, 2009

Faster the good way.

So going faster never turns out well, at least that has been my message. I have been wrong about that. Using tools that help you execute tasks quicker, is a great way to improve productivity. They will actually improve your quality, by making trivial tasks easier.

Pretty much every developer who writes lots of JUnits learns the shortcut key to rerun a test. In my environment Eclipse it is Ctrl-F11. This simple savings of 2 or 3 seconds is important. It allows a pair to continue working without having to pause and search through a bunch of menu items.

So how can you become faster without creating a mess? Try learning the tools you have available to you. Pretty much every good desktop application has menus with all sorts of shortcut keys. Learn them, people didn't add them because it seemed like a good idea. Simply put they allow the experienced user to perform their job quicker.

Eclipse has a great plug in called mousefeed. Download it here: http://www.mousefeed.com/

This plugin will let you know when you select a menu item that has a menu shortcut. It gives a nice little tip that displays the shortcut keys you should have used. You can also change the tip to become a rule. So the next time you click the same menu item, you get the same popup with the action disabled. The only way to get the action to occur is to use the handy shortcut keys. This might slow you down for a short period, but the long term gain is well worth it.

If I still used the menu bars to execute JUnits, I would have wasted hours of my day by now. If you ran 50 JUnits in an hour and the key stoke saved 2 seconds, you saved over a minute. That is real savings.

There is another great tool for time savings called Infinitest, but I will get to that at another time. For now, you can focus on one easy task... Kill The Mouse!


Sunday, July 19, 2009

Pair it is the law!

There are some obvious benefits to pairing: Shared knowledge, keeping on task, holding each other accountable, reduced bad design/code. It is all about quality. When we make a mistake we live with it forever.

My wife works in heath care. She treats patients who have prostate cancer, with some sort of hugely expensive equipment that produces radiation. So when it comes time for a patient to receive treatment, how many people are involved in the treatment? Two, that is right two.

I have been so busy thinking about how as software developers we are changing the way we do our work. I didn't even notice that my wife pairs every day of the week. In fact she has regulations against treating a patient by herself. The medical community doesn't want people to make mistakes.

Why do we as programmers need to re-educate developers to not code alone? There are all sorts of regulations around treating patients with medical equipment. Shouldn't we consider our work just a critical? I say get that Bill to congress!

Wednesday, April 29, 2009

Book Review: Test-Driven Development By Example

Test Driven Development By Example is a Kent Beck book that introduces developers to the concept of driving feature development through the use of tests. This is not a new book on the subject, but it is the book that all developers should read. I have been developing using tests for quite some time, and I have used TDD techniques as part of my development methodology. Unfortunately it took me until recently to decide and read an actual book on the subject.

Kent uses two different examples to show the steps that take place in a Test Driven solution. The first example is a Money application that uses Java for its solution. The second example is an exercise in building your own xUnit testing framework for Python. These examples show the cadence a developer uses to go from broken test to passing test. Rather then describing theory for how to write tests, Kent demonstrates. While showing the reader what steps are made and why decisions are made, he is actually building a case for specific patterns. The third section of the book looks at specific TDD patterns.

This book does a wonderful job of demonstrating small focused tests. Create a test that fails, make it pass, refactor. Each chapter follows this pattern by focusing on a single task. Many of the chapters are less then five pages. They focus on a single test that needs to be implemented and the following implementation. This style may seem rather annoying at first, but definitely conveys the sense of being able to put down the book at any time. You can in turn pick up the book and quickly get right back into the exercises.

This is a great book for both beginners and experienced TDD developers. Beginners will get a great first lesson on how to TDD and why it can be as successful as it is. Experts can get reinforcement on why decisions and behaviors are important.

Saturday, April 4, 2009

The Surplus

I was watching the TV show "The Office" and there is an episode where there is a surplus and a decision needs to made how the extra money is spent. If they don't spend the money it goes away, and the next year they receive less money.

Think of this, if you plan on running a 4 hour marathon. Suppose you are going to be done 30 minutes early. Would you run extra miles after the race so you can run for the full 4 hours? That would be silly. Then again would you slow down so that you hit the line an exactly 4 hours. This is the same surplus problem.

Suppose a software team committed to delivering a project in 9 months and they finished what they agreed to in 8 months? Looks like there is a surplus. How should that time be spent? Should the team get assigned a new project? Should the team be allowed to determine what they need to do over that 1 month period?

I see a very similar relationships between the three scenarios. Management funds projects and pays for it through money and resources. If the project cost the price or less, management gets what they asked for. If there is extra money or resources who gets to spend it.

I would think the team gets to spend the money or time. Lets face it as teams we rarely have extra cash or time. We also are more then welcome to accept more work. I think it is time to reward teams for being good at what they do. Let them decide how to spend the extra money. Lets face it we will probably prototype out something with a long term goal in mind.

Monday, March 23, 2009

Passion, Drive and Trust

I have been working on a team for nearly a year, and this is an account of the last couple of weeks.  Essentially we ended up behind plan, I guess that is a whole different story to tell.  With some drive and passion for success we were able to accomplish some pretty good stuff.

Early on the team was able to build some core values before we were up against a deadline.  Code reviews were mandatory for everything.  JUnit tests were required for all work we did.  Fitnesse tests were also developed in appropriate areas.  I knew we had a good culture when I wasn't the only one who asked about scheduling a review or where the tests were.

So we finally realized we were kind of behind with 3 sprints left.  So I challenged the team to rev up up our output.  It was a straight forward challenge deliver 50% more points each sprint and we would do a happy hour every  two weeks.  I would kick in $50 and I challenged the product owner and manager to each match the $50. 

There are a lot of reasons that these gimmicks don't work.  There are also a bunch why they can work.  First it gave the team a challenge to do the impossible.  Lets face it as IT professionals we like to do the impossible.  It also gave us an opportunity to socialize as a team outside of the team room.

So what went right?  We were able to have our first two happy hours.  We are sure we are going to hit our last goal, because we ended up ahead of plan.  Our management team is happy and the team feels great about what it has been able to accomplish.  You would expect corners were cut to get the extra output, but because we had already changed the culture, the core values stayed strong.  So rather than cut corners there is only one way to get extra output.  Yes, lot of extra effort.

What stuff didn't work?  First I ended up sick.  I guess going on 4-6 hours sleep for 2 or 3 weeks really isn't great for the body.  We ramped up our development, but non-developer testing has been more difficult to to match the increase.  So we have a bunch of stories waiting for acceptance from our QA team.  Can we deliver the work without testing, no.  We still need to fix this.  I didn't say we were perfect yet.  Lastly I hope my boss doesn't expect the impossible on a monthly basis.

I still like the fact we are going to hit our deadline with quality.  I would rather be drinking beer and making better friends along the way.  I guess we would have been better off bonding as a team earlier in the release.  Then again we needed to trust each other to accomplish our lofty goals.