Stories about Software


Musing on Agile’s Built In Caveat Emptor

First things first.  I’d like to thank the folks who submitted “Ask Erik” questions (I’m thinking I might need to come up with a title that’s not as lame — iterate all the things!)  I’m pleased with the results so far, and early returns on my hypothesis look good.  Interestingly, I received more than one question related to my take on capital-A Agile as a movement.  I plan on answering these questions directly, but I have opined on this subject a bit in the past:

Reading the questions I received and letting them kick around in my head a bit as I was jogging earlier today, I started to think obliquely about the topic and how it’s approached and regarded in the industry.  What’s going to follow is fairly raw riffing on this topic, and please forgive me if I seem a little loopy.  It’s about 1:30 AM, I just got back from a concert, and, given that I’ll be off the grid for a couple of weeks starting September 5th, I didn’t want to let a Friday lapse sans post.

1 Agilius

So, story time.  What would you think if I laid the following narrative on you?

17 well known, well respected elders from different villages came to realize that the prevailing methods for tending and cultivating crops were not sufficient to feed the growing populations of their villages.  These elders had some ideas, both mystical and practical, for how to solve that problem.  They’d gained much knowledge on their own and needed to spread the word.

They decided to convene a summit, but the odds were stacked against them.  Each village had its own ways of doing things and cultural preferences, and the elders were each accustomed to those around deferring to them.  Initially, they could not even agree on a location for the summit!  How were they ever going to agree on providing food for the known world?

Against all odds, however, they made progress.  They retreated into the mountains and toiled for 2 days and 2 nights, expecting little to come out of the gathering, but when the sun rose on the 3rd morning, not only had they made strides — they’d all agreed, as if by Divine Providence.  What emerged from this gathering were stone tablets containing the 4 Core Values and the 12 Principles of food cultivation.

Over the years, the Word spread far and wide.  What started as 17 quickly became dozens, and eventually hundreds, thousands, and hundreds of thousands.  Great centers of learning and cultural exchange emerged, devotees made annual pilgrimages to important sites, and the new methods for food cultivation spread far and wide.  And, lo, it was good.  There was much rejoicing.

In case this doesn’t ring a bell with you off the cuff, it’s basically the history of the Agile Manifesto.  And, before you bristle, read that history that I linked.  It says epistle in there to describe one of the communications between signatories, for goodness sake — if that doesn’t invite religious comparisons, I don’t know what does.  Try googling that word and finding a reference in the top 10 that doesn’t prominently mention the Bible.


This post isn’t actually about comparing capital-A Agile to religion.  This is well trod ground, and a well placed google search will let you tread it to your heart’s content.  But if you temporarily accept the premise as axiomatic, there’s an interesting plank to the agile canon that’s generally missing from religion, at least in my experience with it.  What I’m talking about is self-reference in a way that isn’t begging the question.   Read More


Don’t Be a Human Resource

It’s easy to wince when someone uses the term “resource” to describe a human being.  At least, it is until you’re desensitized to the word being thrown around in a business context.  After that, I think it’s a subtle form of signaling.  But I’ll get back to that in a minute.  Let’s do a thought exercise, first.

Imagine if one day you received a call from your friend who, after a bit of small talk, said, “I’ve been having something of a rough time since the breakup, but I think I’m turning a corner.”  Fair enough, but then things got weird.  “I’ve decided to get into the dating market to find a companionship resource.”  Wait, what?  “Yeah, and it’d obviously be great if they could also supply nice-to-haves like sex, dinners out, and small vacations, but I think companionship is a good starter offering.”  Holy crap, what?!


At that point, you’d probably be reconsidering the friendship and wondering when this person morphed into a sociopath.  Context is king, it would appear.

Read More


Use These 7 Tricks to Win Meetings and Get Promoted

Rest assured, there is a list of tricks that you can use in meetings later in this post.  But, before you get to the buzzfeed portion, please indulge me for a few paragraphs that will help determine whether you’re the sort of person that really wants to take this advice.

A while back, I took some material from my in-progress book and turned it into a post in which I offered a different set of names for the MacLeod hierarchy.  For the sake of expediency, here’s the pyramid I created with those terms.


In any company that scales beyond just a few people and starts to include overhead roles, it becomes nearly impossible to assess the impact of any individual on the company’s revenue (if anyone’s interested in hearing me expand on that assertion, let me know, and I’ll add a draft for that).  But we don’t let that stop us from manufacturing performance evaluations to the best of our abilities.  Interestingly enough, performance evaluations of opportunists at the very top and of line level pragmatists at the very bottom tend to be the most straightforward.

Top level opportunists (C-suite folks) are evaluated in the same way as head football coaches.  Company does well?  Accolades and bonuses.  Company does poorly?  Golden parachutes.  It’s not as though C*Os are singly responsible for all aspects of performance, but they are the one neck for shareholders or board members to choke.

Line level pragmatists are folks responsible for cranking out widgets, so they tend to be evaluated with metrics, such as “widgets per hour.”  Speciously, we assume that moar widgets == moar revenue == moar good, and thus are content to conduct evaluations of widgeteer performance with reductionist proxies.  At least, we do that for widgeteers not on the middle management (idealist) “track.”  When they get on that track, we evaluate them differently, as I’ll describe a little later. Read More


Ship Something for Yourself, Even if you Only Earn A Dollar

On the heels of the product kata post, I’m going to double down on the “ship something for money” advice.

There’s no time to lose. Valuable, profitable seconds of your life are ticking by, and you’re missing out. Surely you’re aware of the concept of compound interest? In case you’re not, suffice it to say that long-term investment depends a lot more on when you invest than how much. The same is true with you using the Internet to earn yourself some money.


Okay, at this point I probably sound a bit like a huckster. I get that. The sense of urgency might have been just a wee bit for dramatic effect, but I think the underlying message is nevertheless valid. You really ought to acquire for yourself the experience of making money via the Internet. I’m not trying to convince you to quit your job and earn your living this way, and I’m not even trying to convince you to attempt to make serious money. All I’m trying to do is encouraging you to make something.

What should you make? You could go any number of routes. You could start a blog and put advertising on it or use affiliate links. Writing a book or making videos for youtube would count. You could hook up with a content creation outfit, like Pluralsight, and do it that way. Building apps and selling them either standalone or through an app store is probably an option that appeals uniquely to software developers. Or you could always build a web-based product or start a company, if you really want to go all in.

If I’m not peddling a get rich quick scheme and I’m not even suggesting that you try to get rich, it’s certainly fair to wonder what my angle is. Why am I so eager to offer this advice? My reasoning is multi-faceted.

Opens Up New Possibilities

The most likely outcome to you starting a blog and advertising or building a little mobile app and selling it is that you’ll put in a lot of time and effort and get a little bit of profit back out. Hey, if you thought I was a huckster at first, hopefully I’m bringing it back from the ledge a little here by telling you that you’re pretty unlikely to get rich quick. The reality is that you’re almost certainly not going to retire from your first foray into entrepreneurship.

This type of bootstrapping is modest in aim and scope, for the most part. But it is an opportunity. And, it’s one with virtually no barriers to entry and not much limit to the possibilities if it takes off. Look at Life Hacker.

You probably won’t be Life Hacker, but maybe your blog/site/app/channel will become a fun hobby for you – a hobby that brings in a few hundred or maybe even a thousand dollars per month. And, over the long haul, it will also help you get your name and information out there to pry open the door to some networking and consulting opportunities as well. You’d be surprised at how many things come up when you just put yourself out there: job offers, consulting opportunities, speaking invitations, and more.

Introduces a New Earning Model

Most white collar workers spend an entire career working 40 (okay, who are we kidding, 45+) hours per week in exchanged for a fixed number of dollars. Wage labor is clearly the dominant model for income in our society, since traditional entrepreneurship tends to be a high risk venture. It’s all well and good for hungry kids just starting out on their career path, but a harder sell for folks with families and mortgages.

Building something small in your spare time with the aim of earning a little money, however, is not high risk. It’s the kind of thing you can do instead of watching a few TV shows. And, while the stakes may be small, the lessons learned aren’t. You’ll develop a sense of what it’s like to earn in a model where income is decoupled from time, which can be a valuable skill that you may use in your day job or, at some point, to start your own venture.

And There’s More

I originally wrote this post for the Infragistics blog.  Here it is on their site.  To read the second part of the post, check it out on their site here.


Code Kata? How About Product Kata?

When I was a kid, I spent a bunch of years doing karate. As best I can recall, there were three main types of activities around which we’d focus: kihon, kata, and kumite. I listed these roughly in order of sophistication. Kihon translates to something like “basics” and it involved executing the same punches, blocks, or kicks repeatedly, going for correct technique. Kata was something like “form” and this involved stringing together moves into more complex sequences and practicing those, presumably to emphasize rote practice of sequential movements. Kumite was sparring, and this was meant to be in-situ, improvisational practice, using the first two activities as building blocks.

There’s a lot of spiritual type stuff that goes on around martial arts, and it’s not my intention to rag on that in any way. You get out of things what you put into them and you find value that makes sense to you. But, at its core, these activities are really all about learning how to punch and kick other people and win fights. So you practice the basics, string those together into sequential movements and then have dress rehearsal sparring matches. This is all done so that when the time comes to actually punch and kick people in real life, you’re good at it. You don’t flinch when someone throws a punch because your countless hours of practice have made stepping into the blow, deflecting it and countering as second nature to you as cringing and protecting the head are for most people.

Learning to Punch People with Our Code

When I first heard of the martial arts concept of “kata” being applied to software development, I found it sort of interesting and weird. There’s intense marketing power in appropriation of this nature, and it can really make a concept take off. And, there are parallels between the two beyond the simple notion that deliberate practice improves technique. One of the main benefits to code katas is the practice of techniques like refactoring, TDD, etc. when the pressure is off. When in coaching/mentoring roles, it’s pretty common to see people try new techniques, only to abandon them when delivery pressure is perceived. To have “stickiness” for a software development technique, it’s essential that it hit a tipping point where the practitioner finds it less efficient to skip it than to do it. And doing a lot of code katas is a way to work toward that tipping point.


Of course, as with any cross-disciplinary metaphor, there are gaps and those gaps can be problematic. Again, putting aside the spiritual overtones, karate is about learning to punch and kick people effectively. This is pursuit heavy on instinct and muscle memory and relatively light on cerebral cortex activity. A fight also spans seconds or, at most, minutes, where programming is a pursuit of hours, days, weeks, months, or years. I believe it was this sort of information gap that led John Sonmez to post about code katas. He heard the term “code kata” and mapped the martial art version onto it — one where you practice precisely executing the exact same movements until you can do them in your sleep. That’s not the intent of the code kata, but recall that we’ve been over what happens when you recycle terms with baggage for marketing purposes.

Read More