Maps and Territories: Exploring “The Lean Startup’ through Nature, Part III

Using a map on a smartphone. Photo by Sebastian Hietsch on Unsplash

You are climbing up the steady incline of The Signal Ridge Trail when you are met by a hiker doubling back to a fork in the route which has been ambiguously signed. The trail notes you pull from your pocket indicate that you are to bear left at a trail split .8 miles from the trailhead.

“I think it’s this way,” he says, his voice pressured and his pace the pace of someone who has made a mistake and is trying to undo it as quickly as possible. He’s got worn-in boots and a decent pack. His legs look like hiker’s legs. The calf muscles are knotty.

He rounds the fork, bearing left rather than right and, indeed, this direction appears to take you up towards the ridge and then the summit. You can see the shoulders of the mountain through the canopy. (more…)

Socks and Sandals (and software-development faux pas)

Photo by Markus Spiske on Unsplash

I’ve worked with a lot of clients and potential clients over the past 10+ years. Sometimes, in conversation about a project, the client will roll out, oh-so-casually, one of about 10 pat statements that reveal a pernicious and erroneous belief about the process of software development. Now, most of my job involves educating clients so I take a deep breath and wade into the waters of a software-development ideation faux pas, of explaining why what the client has just said is analogous to pairing socks and sandals: Sure, it makes sense on one level, but it’s never a good idea. (Note: I’ve been chided by our development team that wool socks and Birkenstocks are certainly acceptable and that Keens and short anklets are also acceptable. I sigh. I choose to fight my battles one at a time. . .)

Moving on.

The objective here is to give the audience a bit of quick and dirty insight that, I hope, will help clients be . . . well, better clients. Better clients always, without exception, mean a more successful project — cheaper, faster and far, far fewer hair-tearing-out incidents. (more…)

Cascading to the Bottom: Waterfall vs Agile Software Development

Inquisitve Duck by Su Neko via FLICKR

What are you doing? Stop it. Stop hitting yourself. Stop hitting yourself!

But seriously, why are you doing that? Waterfall development, defined loosely as frontloading all specifications and performing all development with little-to-no iteration or deviation from the aforementioned specs, is the Prohibition of development methodologies. It works great on paper, but in practice you end up blind from drinking bathtub gin.

All your hopes and dreams (likely including your job and retirement fund) end up dashed on the rocks of Iguazu and you’re just left there floating in the frothy bubbling water in your nice work chinos, and your iPhone is soaked, and your ironic ‘70s polyester tie is never going to be the same.

All this could have been avoided. You could be sitting pretty right now, collecting your profit share, dry, playing Minecraft in your office where no one can see you, but you had to go with the Waterfall firm.

Let me tell you what went wrong. It really boils down to just two things. Things that seem obvious in retrospect, I’m sure, but they wreak havoc in the moment.
(more…)

Collaboration and Software Development

etymology of collaboration   Google Search

Most of us have probably used the term collaboration enough to have such a good idea of what it means that we don’t really have to stop to consider its implications. As the Google summary above says, the term derives from the latin word collaboratio (which also derives from the Latin terms for together (col) and and work (laborare)). Despite its similarities to the word cooperate — which also has connections to working (operari) together (co) — collaboration when it comes to software development and programming has a very distinct meaning from cooperation.

How Does Collaboration Differ From Cooperation?

While cooperating is an essential part of working with someone on a project, it does not connote a sense of ownership. This is an important distinction since ownership, the taking of responsibility for a task, is vital to working effectively when developing software. When collaborating with clients, it’s important that developers and programmers be willing to offer their clients the benefits of their expertise, particularly since it’s their expertise that clients needed when they first decided to work with an outside consultant. (more…)

How Can You Trust a Software Developer?

The world is full of deception.

Many creatures use it to capture their next meal. Many of the rest of them use deception to avoid becoming someone else’s next meal. Deception is used to entice mates. Orchids are masters of deception in the plant world, enticing pollinators with false promises of everything from bee sex to meals of rotten flesh, all completely bogus.

And humanity is not immune from deception. Even near-comic forms of deception work on some of us. Who’s inbox hasn’t been graced with an appeal from a generous Nigerian prince? Who falls for those? I don’t know, but someone must or the prince would stop trying.

It would seem that in a world like ours it would be the height of folly to trust anyone. But that’s not the whole story. (more…)