On Agile

Read the Fine Print

As with many organizations these days, my company does Agile software development. Ignore for the moment that there is something wrong with that statement (and if you don’t see it, that’s fine, most people don’t). Agile is all the rage currently in software development. If you haven’t heard of Agile methodologies and you’re in the field of software, I have to ask what super-remote part of Antarctica you’ve been living in for the last ten years?

Agile development is a reaction against heavyweight project methodologies that focus on the documentation and the plan more than the people and the software. The various Agile flavors have the following elements in common.

  • Highly iterative and incremental development cycles focused on continuous delivery of working software.
  • Short feedback loops.
  • Small, self-organizing (self-managing), cross-functional teams of motivated professionals.
  • Close collaboration, both within the team and with the customer.
  • High value placed on simplicity and adaptation.

Agile in itself isn’t the answer to all of life’s problems. This should surprise no one, but there are a small few who are shocked when it doesn’t do what it is supposed to do. Like other methodologies, the various Agile methods are tools. It is up to those wielding them to make them work and create art. Being a certified Scrum Master or agile practitioner won’t make projects miraculously successful any more than buying a table saw will make someone a master carpenter.

Scrum, XP, Lean, Kanban and the various other disciplines look good on paper, but you need to pay attention to the fine print. What fine print? I imagine the Agile coaches, Scrum consultants and anyone else that makes money in Agile training don’t always mention it, though in the interest of full disclosure they really should. If you have a copy of the Agile Manifesto you can read the fine print with a magnifying glass while standing under a blacklight on the third Tuesday of every month.

For those of you without blacklights, here’s the fine print:

  • Use some common sense. That’s all Agile really boils down to. Yes, the people closest to the problem should be making the decisions. Yes, those people need to talk, raise obstacles, and otherwise work together. Yes, incremental design and development can work better than providing reams of documentation that no one will ever read. Yes, requirements can change and you must be able to react accordingly. Yes, the final product is orders of magnitude more important than following the plan. Does it really take an entire methodology to recognize these things?
  • Do not use for mission-critical systems. The thought of NASA doing Agile development should scare anyone that doesn’t want rockets and satellites falling out of the sky. Likewise, the firmware used in pacemakers better not have a team of agile practitioners guaranteeing that they followed Scrum to the letter.
  • If you are in management, do not use Agile if you are unable to let go of the traditional command and control hierarchy. This should be obvious when you see the part about self-managed, self-organizing teams, but micromanagers don’t always realize that they’re micromanagers.
  • Everyone on an agile team needs to have some kind of technical background, preferably coding. That Project Manager with an MBA and no experience writing actual software might make a good Scrum Master, but they will need something to do for the other six hours of the day and that something should be moving the project forward. Similarly, if you have Systems Analysts or QA Testers that don’t know what code looks like, you better have a plan for them before because “cross-functional teams” means just what it says.
  • Agile team members must be self-motivating and the team must be comprised of more good developers than average or below-average developers. A team of average developers cannot create great software in anything resembling a reasonable period of time, regardless of what methodology they use. Similarly, a team of good developers can probably create great software in any methodology, Agile just frees them up to do it more effectively.

For organizations that practice a more traditional development process, the transition to Agile will be highly disruptive. Making the transition without knowing all the implications will border on traumatic. Please don’t take this to mean that Agile is in some way flawed. It is very effective when used in the right context to solve the right problems. It is not, however, a silver bullet. Any ‘Agile Consultant’ that says or implies otherwise should be looked at askance, unless of course they mention the fine print.

Posted in Agile | Comments closed

Introductions

Where to begin? That’s always a difficult question when it comes to writing. Let’s begin with now and I’ll fill in the details if they ever become necessary. Allow me to answer two questions, “Who I am” and “Why I’m Writing”.

Who I Am

It is difficult to describe anyone, let alone yourself, in a single paragraph, so let’s touch on the highlights. My name is Benjamin Pack. I’m a software engineer by trade, a critical thinker by upbringing, a reluctant philosopher by chance, and a ruthless pragmatist by choice. The Myers-Briggs has me pegged solidly as an INTJ and, while I don’t think psychology has all the answers, I think it got that one dead on.  I’ve been told by people I trust that I’m nonconventional (odd), honest (lacking restraint or tact), self-confident (arrogant), rational (without empathy), and possess a keen wit (sarcastic). Obviously, throwing out a few adjectives doesn’t provide a very clear picture, but I hope it’s enough to get started and that my writing will tell you more about me as we go.

Why I’m Writing

I’m not building this site and writing these entries to become a successful blogger, nor am I doing it to earn money, create a tribe, spread a world-view, build a brand or gather a fan base. Admittedly, I wouldn’t be opposed to some of those outcomes, but that’s not why I’m doing this, and truth be told that wouldn’t be enough to keep me doing it. To Get Better I’m a decent writer, but I know I can write better. Likewise, I’m a decent software developer, but I know I can design smarter and write code better and faster than I do now. For me, this is an opportunity to be better [1]. This site is where I plan to practice, maybe show what I’m capable of and to track how (and if) I’m improving. To me, being good at something you’re passsionate about means always wanting and striving to be better.

Because It’s There

We find voids of raw potential intimidating. Be it a blank page, a blank screen, a blank source file, or a blank canvas – the artist stares at pure potential and the enormity of it all stares back. It’s also a challenge. ”Here it is,” the universe says. “Do your best.” How could someone not answer such a challenge?

Because I Can

Until recently, I’ve been working two jobs to make ends meet. Forty hours a week at my day job and 20+ at night. I did that day in and day out for more than two years. There wasn’t time to do much of anything other than work, sleep and spend what little time I had left with my family. Now, I have time and a deeper appreciation of what it means to have time. I’m using it to do this because I can.

Because I Can’t Do Otherwise

I can’t speak for everyone on this, but there’s something inside me that demands more. I refuse to stop learning, improving, dreaming or doing. I possess drive and determination that is relentless and I have to do something with it. At some point, I intend to pursue a Master’s degree. Until then, I have this site because I believe that the intrinsic motivation, effort and opportunity for fulfillment that creativity brings are all keys to that nebulous concept called happiness.

To Make a Dent

For years I’ve been manufacturing “deliverables” for my company. It pays the bills and I enjoy doing it to a point, but I want to do more. I want to create something beyond the infinitesimal curve my mass creates in space-time and the handful of applications a few people at my company use to do their job and think nothing further about. Here, I can do that. I can add something potentially worthwhile to the sum total of human existence. I don’t claim that it will be great or earth-shattering, but if it’s enough to add something to someone’s day, or to spark a thought someone wouldn’t have had otherwise, or see a code snippet that moves them a little more in the direction of better, or provide an application that people find useful, or any number of small moves toward an objectively better world, then I’ve accomplished more than I could in a lifetime of nine-to-five. I’ve created art, and art makes a dent in the universe [2].

[1] Case in point – I’m writing this using the classic power editor ‘vi’ because while I’m competent with it, I’d rather be capable of using it to accomplish feats of editing wizardry.

[2] With thanks to the authors of Rework, Jason Fried and David Heinemeier Hansson, for the eloquent phrase ‘dent in the universe’.

Posted in Uncategorized | Comments closed