19 April 2016

Some Less Controversial thoughts on Agile: Scrum -v- Kanban

So, I've had a few rants thoughts on process in the past.

I'd like to revisit those with my Big Boy pants on.  For one thing, during my current job search process, my experience in Agile in the past 4 years always comes up, so I thought I'd parrot here what I generally say in the interviews, on why you'd choose one versus another.

If you'll allow me, I'm going to argue that both are valuable, and both should be in your organization.

First, let's define our terms.  When I say Scrum, I generally mean the process that arose in the early 2000's employing same-size sprints, Product Owners, Scrum Masters, and backlogs.  See the wiki link for more detail.  When I say Kanban, I mean the process employing same-sized units of work in a continuous delivery stream with a strong focus on Service Level Agreement (SLA) for a given team.

Things I'm explicitly not discussing:

  • XP or "Extreme Programming"
  • Scaled Agile Framework (SAFe)
  • Any generic holy wars that generally devolve into the No True Scotsman fallacy 


Let's proceed, then, Scotty.

Why to Choose Scrum

Summary --> If you have to adopt some methodology and you can't spell "Agile" yet, choose Scrum.  It's generic and structured enough.  Just don't let it become a religion.

Having lived through "Agile" when it was basically defined by what it wasn't, Scrum is amazing.  It's real, tangible, and it holds water to all those people who write the checks (your bosses) and buy your products (your customers).  People have a place, and defined responsibilities.  

Scrum optimizes for working code always, and deliverable code at the end of each sprint.   Each sprint is like a small software release encompassing design, testing, development (see what I did there?) and delivery.   At the end, there's a demo, and an opportunity for the stakeholders to adjust direction.  Lather, rinse, repeat.

A key term to learn in Scrum is velocity, the # of "story points" a team can complete within an increment (2 to 4 weeks), typically.  By using velocity and a well-sized backlog of work, one can do that Project Management magic of managing risk/schedule/function for a given product.

Scrum is great when...

  • You're building something big.  Each 'sprint' is another step towards the end goal.  (Keep that in mind, that'll be a big difference for Kanban), and a chance to course-correct.
  • You can leave a team alone for N weeks.  A big part of Scrum is minimizing impediments and interruptions.    They're going to go through a full development cycle before your very eyes, so watch "behind the glass" so to speak.
  • Someone cares to watch the demo.  This is obvious when you look at it, but it must be said:  Real business stakeholders often don't care to see your results twice a month.  If no one's going to the demo, it's a waste of time for everyone.
  • You have a new team or you've never been agile before.  As mentioned above, there's a way to go from Zero to Scrum, and most trained Scrum Masters can get you there.

Things to watch for....

  • Teams sandbagging because of the "commitment" part of Scrum
  • People rolling their eyes on all the meetings required for Scrum.  (Psst....they're not required.  Make the process work for you!)
  • People exhibiting Stanford Prison Experiment symptoms:  Because Scrum does so crisply define roles, it's tempting to lean back into them instead of transcending.  Those are just the rules, not the entire "Box" of your work responsibilities.  
  • Exhaustion, particularly in your Product Owners.  PO's have a "term paper" due every 2 weeks during release planning/spring planning, along with their other responsibilities.   

Why to Choose Kanban

Ah, Kanban.  Everyone in manufacturing or adjacent to it has learned Lean and TPS and all the theory around it.  In essence, Kanban takes the opposite approach from Scrum, in that it's fine with interruptions and odd delivery schedules.  Kanban optimizes for throughput by minimizing Work in Progress.  Similar to the GTD or Pomodoro philosophy, it hypothesizes that teams do best when they can concentrate on the work at hand.

Kanban is ideal for a team that has to be responsive, like a support organization.  In fact, it's nothing really that new.  In an ad-hoc way you might consider a ticketing system like RT (or any queuing system) as a Kanban way of acting.   

What Kanban is really good at is making everything highly visible and focusing the team on the work, not on the individuals.  For example, in standup, the team reports on each item in progress, not the team member's status.  That's subtle, but it's important: Businesses don't care about what Bob did yesterday, they care about Support ticket #1234 and if the customer is happy.

Kanban is great when...

  • You're any sort of support or operations group.  Kanban was made for you.
  • You have any sort of pre-sales or customization responsibility.  Things may crop up day-to-day to close a sale.  Those can work in Scrum sprints, but it's awkward.
  • You find your group always takes 3 or 5 "story point" stories anyway.
  • You have more of a continuous delivery model of development, rather than a hard shutdown/regress/ship.  For example, I couldn't see a Hardware R&D organization using Kanban, because there's little value in delivering things on different schedules--everything has to be fitted, integrated, and tested together.

Things to watch for...

  • Demos.   Kanban has no prescribed demo times, so you'll look-up in 6 months without ever demonstrating the product.  In a weird way, this can put you back in waterfall hell.
  • Too much WIP.  (insert Devo reference as you like!) It's tempting to put too much in progress at once, such that the team is working 1 story per developer.  You'll find your productivity plummets at that point--people get territorial, they don't pair, etc.
  • You're always working.  Kanban is a continuous stream of work, but there are other things to do: Training, refactoring, onboarding, etc.  Scrum makes it easy/easier to take a 'quality' sprint or a 'training' sprint with crisp edges.  That's not straightforward in Kanban.
  • Coaching instead of driving.   Kanban is about pulling work, not jamming work through the system.  Which leads me to...
  • Driving to dates.  Be honest with yourself--if you have something schedule driven, you don't have 'velocity' to predict things like with Scrum.  Kanban can be made to work in a schedule-driven shop, but it's better in a continuous delivery shop.
That's really about it.   One final word: Scrum isn't "basic" agile anymore than Kanban is "advanced" agile.  This sets up a pecking order, and it really doesn't exist.   As I've said above, if you're building something big, with milestones, and you need predictability, use Scrum. If you're doing support, operations, or pre-sales or continuous delivery, Kanban if for you.

Thus the kicker:  Most significant development shops need both.  You may have some teams building the new Widget, while some teams are mostly sustaining your bread & butter.  Choose whichever methodology makes sense at the team level, and work-out the reporting structure to project management from there.

The above is my considered opinion after years of Agile (before it had a name, really).   Would love to understand others opinions on it.

Settling in for the Job Hunt, long-term

Well, the goodbye echos are over, the severance check is safely in the bank, and the initial supernova of Job Hunt Hysteria has died down.

Yep, I'm just unemployed at the moment.  Nothing terribly special...just a guy looking for his next gig, like millions of others.

The first week of "not going to work" didn't go so well.  I was completely off-schedule at home, and an person with my brain chemistry devoid of structure tends toward anxiety and acting-out.  I did act-out on Wednesday, so the road back there continues.  I have calmed down considerably, and I feel like I'm through the change curve to the point of "Yep, I don't work at Lexmark anymore."

I have two sorts of days now:  Days where I'm at home, and days where I'm on the hunt.  "Home" days like yesterday are really nice--I get to take some of the burden off Whitney and do things around the house, deferred maintenance and errands mostly.  For example, I finally closed our old safety deposit box and re-upped my passport (expired since January), then cleaned-up the garage.

"Hunt" days finally have some structure to them as well.  I've taken to coming to the Northside Branch of the Lexington Public Library and using their 300Mb/s internet to good effect.  Physically the site is close to downtown, has several quiet rooms for people to use for things like conferences or job interviews, and its far enough away from home that I don't feel like I'm just "hanging out" in Georgetown.

So, the tech side of things is mostly interview prep on HackerRank.  I really can't recommend this site enough--all of the 'write this code" problems you inevitably get on a programming interview, plus instant feedback as it runs test cases over your submitted solutions.  It's much like the old ACM programming contests from back in the day, but fully automated and self-service.

I am considering picking-up some F/OSS projects or something else to keep me focused.  Doing practice problems is great, but there's nothing quite like squashing bugs or contributing to a real codebase.  My church needs a new website and app. so there's always that.

As far as current kit goes, I couldn't quite convince myself we needed another $2k+ MacBook pro, so I hit-up a used computer shop in Lexington and got an HP Envy 14" Core i5 machine with a 750MB conventional hard drive for $200, including a 90-day warranty.  

I put-up with Windows 10 on it for about a week, then slapped Ubuntu 14.04 LTS on it with the Unity UI.  Wow, Canonical has really done their homework with this one.  They're definitely emulating the Mac look/feel and most everything Just Works.  So far, there's no yak shaving required like in the good (?) old days, aside from the keyboard simply not working whenever I power off or suspend the machine.  As I type this, it's working just fine, but there's no predictability to it, so I'm carrying around a full 102-key USB keyboard.  Yeah, I should hit-up the warranty, but I don't want to be out a machine.

Maria's about to start summer swim team again--and she's getting faster all the time, with an improving dive--so it's time we make some definite plans.  Stay?  Go? If go, where?

I do thank God to have the financial security to take some time with this, but the Eastern Kentuckian in me is plainly antsy--seems like lots of good local stuff floating by me, and I'm not jumping in any of those proverbial boats.  At least, not yet.  By Mid-May, it will be time to do some narrowing.

04 April 2016

On Unemployment

Double entendre....on darn, already off to a poor start.

So, as 1 1 month ago, I took the leap, signed the papers, and volunteered to leave my former employer.  This came with some stipulations.  For one year, I may not:

  1. Try to recruit anyone actively employed at Lexmark or assist any new employer in same.
  2. Besmirch or otherwise criticize Lexmark.
  3. Return to work there.
That's right.  In the course of one afternoon, I went from a a fully-employed Software Architect at a (nominally) Fortune 500 company to 4 weeks from out-the-door on the job market.  

Today marks my first day of official unemployment.   As it stands, I have no job offers outstanding, but that's certainly not been the case through the past 4 weeks.  

So, the first week, I got offered a job at a startup.  No interview, just say 'yes to the dress' as it were.  I was so excited I nearly leaped out of my skin.  A STARTUP!  There's nothing more exciting for a developer than the opportunity to go your own way, to be a founding part of startup.   I put that one in my back pocket and decided to test the waters a bit more.

The next week, I had several phone screens and landed an interview at The Other Big Place in town.  Good group of folks, but it felt just like my old gig--software group amid a massive Hardware company, large legacy codebase they were trying to modernize.  Honest work, and a much more technology-focused group.  Representative quote: "We code here.  Basically 95% to 100% of your job will be coding.  Are you okay with that?"

Long interview later, offer #1 was on the table. I chewed on it for that next weekend and turned it down.  I didn't want to go back to the same place I just came from, proverbially speaking.  

Through a contact at work, I got an interview in a place up in Cincy that had exploded in growth over the past 3 years, with a culture that seemed like a cross between Google and Thoughtworks.  (Turns out, Thoughtworks was a consultant of theirs, so seems natural they'd adopt some of their policies.)

Need to pause here for emphasis--it's hard to imagine a better fit for me than this place.  Something like 300 engineers, all staff- to senior-level, with Coding Dojos, Hack Weeks, Scrum, Pairing, and Linux development.   Interview was a joy:  Intense 1-hour deal with their senior folks, good vibes all around.  I had an offer in hand by the next day.  But, it meant a move.

So, local startup or move to Cincinnati?

Neither.

So this is where I must introduce the architect of all this change: God.  My prayer life had been pretty consistent since January when they announced the voluntary exit program: This is your time to go.

So, from there, I was in denial right through the last day of the voluntary program, when I finally filled-out my paperwork and submitted it.  Listening to God isn't exactly something I do quickly, but I do get around to it.

So, praying over both opportunities I had, there were a couple of directives:
  1. You're going to be moving.
  2. You need to be patient.  Basically, I got the "Love, Joy, Peace, Patience..." verse running through my head.
Thus the verse, Proverbs 14:12 --> "There is a way that seems right to a man, but its end is the way to death."

But such....good....jobs!  One exciting without requiring my family to move.  The other only a moderate move to a place we generally like, Ohio.

It wasn't to be.  Upon discussion with several people trying to choose between the above the dichotomy, it became clear there wasn't a real winner because neither was where God had me going.   I was praying about jobs, not about where He wanted us

Praying over the map, I felt the pull to Texas.  Whitney laughed because her prayer life was just the same.  So, I look.

So, here I sit, back in the Ensor LRC where I was 18 years ago.  Yep...kids born that year are now here at Georgetown College, and here Old Fart Me sits, re-embarking on the job search.

Dear Reader, this is going to take me some time to work through.  I poured much (too much?) of myself into that old place, so now I have to find-out who I am in middle age.  This will likely be my forum.

18 March 2016

Leaving Lexmark after 17 Years

So, I've been at Lexmark longer than:

  • I've been married (10 years)
  • I've had kids (10 years)
  • I knew what autocross was (13 years)
  • I could swim a full lap in a pool (1 year)
  • I've known the Java Programming Language (in all its 1.1.8 glory) (15 years)
  • I've lived in any one place continuously (13 years)
The only thing I've done longer than have the email address hcombs@lexmark.com and the same strangely 4-digit employee ID (they recycle them) is:
  1. Breathing (37 years)
  2. Driving cars (21 years...legally)

...so yeah, I'm leaving.

Nobody saw it coming.  We had a "Voluntary Reduction Program" in which they'd pay me to take my services elsewhere.   So I considered my options and decided to take it.

It's really not much more complex that that.  It was time to go.  Perhaps it was time long ago, but that will be a post for 1 year from April 1st.

19 February 2016

RIP, Jeb Bush's Campaign

To quote Donne:

Never ask for whom the bell tolls, It tolls for thee.
The South Carolina primary will likely be the end of Jeb Bush's run for the Whitehouse.  I'm on the record decrying the idea that we'll have yet another member of either the Clinton or Bush family lead our nation.



Still, I'm struck by what this means, not only for Jeb and his personal legacy, but also for the Party and our nation as a whole. The saddest part of the slow-motion denouement of Jeb Bush's campaign: This is not who Jeb is.

He's a sane, credible, thinking man. He cares about immigrants and working people. He was an able leader and governor. He wants government that helps people succeed, not people that help government succeed--that is, he's what the Republican party OUGHT TO BE.

This campaign has thrown him into the modern equivalent of an Elizabethan bear-baiting, amid a radicalizing party tearing itself apart. He's had to lower himself to the same mean, petty, ad-hominem insults that his cliptastic peers practice, especially Cruz and Trump.

The current winnowing of candidates is leaving us with only chaff, people so Robespierre Radical that they'll further divide this nation.

God help us.