Kanban board != any vertical surface with cards stuck to it
- Kanban is the latest cool buzzword.
- We want to be (perceived as) cool.
- Therefore, our card wall is a Kanban board.
Well, actually…
No, it isn’t.
Architect != any relatively senior-level job title, even if it has nothing to do with architecture
- Fresh out of Foo School: I’m a Foo One.
- Two years later: I’m a Foo Two.
- Two years later: I’m a Senior Foo.
- Two years later: I’m a Foo Engineer.
- Two years later: I’m a Senior Foo Engineer.
- Two years later: I’m a Foo Architect.
- Two years later: I’m a Senior Foo Architect.
Well, actually…
No, you aren’t. You just a Foo with a fancy title.
“Agile” or “Lean” != whatever we were doing (or selling) before, with a fresh coat of paint
- Our Gantt Chart software supports agile project planning.
- We’re doing agile big design up front.
- Our project is using a waterfall process, but we’re doing it in an agile way.
- We don’t need to use sound software development practices, because agile development is all about values and culture.
- Our project team is agile. Every morning, we all stand up and give our status reports to the project manager, and he gives us our assignments for the day.
- We found a Lean way to improve Process Cycle Efficiency: Ignore non-value-add time during process steps. Besides, as long as we’re thinking about working, we’re adding value to the product, right?
Well, actually…
- No, it doesn’t.
- No, you aren’t.
- No, you aren’t.
- Yes, you do.
- No, it isn’t.
- Gosh, you’re adding value to your product right now, aren’t you? Impressive!
Refactoring != any sort of change made to any sort of object for any reason
- I’m refactoring my desk. It’s a mess.
- I have too many emails. I’m going to refactor my inbox.
- I want to refactor my old Volvo into a new Mercedes.
- This weekend I’m going to grab the lawnmower and refactor the grass.
- We’ll refactor the application so that it displays custom screens based on user preferences.
Well, actually…
- No, you aren’t.
- No, you aren’t.
- When you figure out how to do Ferraris, let me know.
- No, you aren’t.
- No, you won’t.
Story Points != a euphemism for time-based task estimation
- We’ve pegged a “story point” to one hour of clock time. It makes story sizing so much easier!
- If we know how many work hours our team will be available next iteration, we can calculate how many story points we’ll deliver.
- After we’ve done our bottom-up task estimation in terms of time, we can roll that up into “story points.”
Well, actually…
- That’s not a “story point,” it’s called an “hour.”
- If you know how many work hours your team will be available next iteration, then you know how many work hours your team will be available next iteration.
- Yeah, roll it up and smoke it. Your iteration plan won’t be any worse, and you might feel better.
Velocity != a bludgeon for beating more work out of a project team
- If we divide the total scope (in story points) by the number of iterations, we’ll know the velocity the team has to set in order to make the deadline.
- If the team can’t achieve the velocity target dictated by management, it has to be because the team is either incompetent or lazy.
- “Continuous improvement” means challenging the team to increase velocity by 20% per iteration. That will inspire them to try harder.
- If Team A delivers 50 story points per iteration and Team B delivers 40, then Team A is better than Team B.
Well, actually…
- Sure. They’ll just “set” the velocity and punch the “start” button. No problem.
- It could be both, right?
- Yes. They’ll try harder to game the numbers.
- Be sure and remember that at bonus time. Team A will appreciate it, and so will your competitors, where the members of Team B will be working. And just watch Teams C and D adjust their estimation process. They’ll be delivering hundreds of story points per iteration!
Persona != a cool-sounding synonym for “actor” or “user type”
- Our application has four personas: Member, Guest, Administrator, and Back-End System.
- The only persona we need to satisfy is our boss…
Well, actually…
- Okay, but how many personas does each of them have?
- …and all he cares about is scope, schedule, and budget.
Productivity != effectiveness in delivering value
- Our manager says she’s focused on business value, customer satisfaction, and product quality; but all she measures is productivity: Quantity of output per unit time. So, we generate as much crap as we possibly can.
- Everyone needs to be 100% utilized at all times. If anyone is ever idle, it’s a waste of money.
Well, actually…
- “Tell me how you will measure me, and I will tell you how I will behave.” (Goldratt)
- True, if your corporate mission statement is “Keep all employees busy all the time, even at the expense of throughput.”
“Do the simplest thing that could possibly work” != build the easiest part of the solution first, then change jobs
- There’s no need to handle exceptions, as that would make the code less simple.
- If we keep delaying implementation of the challenging parts of the solution, maybe they’ll cancel the project before we need to worry about it.
- If John spends 20% of his time at work searching for a new job, he might not find one before we get to the complicated part of the solution; if he spends 80% of his time searching for a new job, he can find one before things get too difficult around here.
Well, actually…
- Obviously.
- Hope is not a plan.
- That’s a great example of the 80/20 rule. I hope John is a good multi-tasker.
Test-Driven Development != manually testing the whole application after the fact, or maybe just thinking about testing it, or maybe just hoping someone else will do it
- I use test-driven development: After the users test my code in production, I drive back to work to fix the bugs.
- I’m “test infected.” Whenever someone suggests I test my own code, I start to feel sick.
- Test-driven development is just a cheap knock-off of design-by-contract.
- I’m a socially conscious programmer. I don’t want to throw all those testers out of work. They have families to feed.
Well, actually…
- Wonder if you’ll upgrade your software development practices once the price of gasoline hits $5.00 per gallon.
- Funny thing, whenever you’re out sick the rate of technical debt accumulation declines.
- Maybe so, but have you ever tried to enforce a verbal contract?
- All hail Saint Bugger, The Prolific.
“Best Practice” != an excuse to stop thinking about improvement
- I learned best practices in school. That means I already use the best possible practices.
- I read about best practices on the Inter-Web. That means I already use the best practices currently known.
- I’m an Ace Programmer. If I don’t already do it, it isn’t a best practice.
- Your best practices might not be my best practices.
Well, actually…
- You mean, you already use the best practices you know of.
- You mean, you already use the best practices you know of.
- You mean, you already use the best practices you know of.
- You mean, you already use the best practices you know of.
Brilliant. Well done. Carry on…