Choose the Second One

·

I wonder if any of you have ever tried this. When faced with a problem, think of a solution using whatever comes to mind. For most of us in the data space, this is a SQL-based solution, hopefully a set-based on for MSSQL. For Oracle, you might approach things differently. In any case, solve the problem.

Then force yourself to imagine that you weren’t allowed to implement the first idea for some reason. No funding, no time, whatever the reason, you can’t implement it. Maybe it’s your team hates your ideas and just won’t approve the PR.

Now, come up with a second idea. Something new and different. This might be harder in the data space with SQL than in application programming (C#, Java, etc.), but the idea is expressed in A Philosophy of Software Design by John Ousterhout. It’s how he has often taught his software design course at Stanford. His approach is to force students to think more deeply about their design, and he often finds that they build a better system the second time.

Hard to do, but arguably a good idea. He talks about this in this podcast with the Pragmatic Engineer, and how many smart people underperform when building their software. He says it doesn’t necessarily take more time to do this twice, which I am skeptical of. This might be easier for students, but in the real world, is it even practical? Often we’re not working on very hard problems; we’re working to implement something that needs to get done, and often isn’t that well-defined. In fact, many of the things I find developers are asked to build things that either aren’t well thought through or are relatively trivial. There might not be a good second solution for a lot of vague ideas whose value is unclear.

I do think that often we go down a path that quickly becomes complex. Engineers will start to overcomplicate things, so perhaps slowing down, spending a short period of time thinking of a second solution, debating another approach with others is worth a little time. Maybe you wouldn’t implement it, but at least think it through and game out the approach with pseudocode.

I haven’t run into anyone who approaches software this way on a regular basis, but if you do it, let me know. If you think it’s a good idea, maybe it’s worth trying at the beginning of the next sprint when you tackle a new design requirement.

Steve Jones

Listen to the podcast at Libsyn, Spotify, or iTunes.

Note, podcasts are only available for a limited time online.

Comments

4 responses to “Choose the Second One”

  1. John VanDamme Avatar
    John VanDamme

    Writers have this mindset, they use editors to correct nonsense. Developers often use the testing folks (over the fence, etc.) irresponsibly for solution one, regardless of the testing outcome. MS often had another approach that i have seen: using duplicate pathways to the same result; why – pure research.

    Like

    1. way0utwest Avatar

      Pure research isn’t the same. The real idea is to develop flexibility in your mind as a developer (or I guess architect/admin even) to look at alternatives rather than your first thought/instinct.

      Like

  2. Lee Markum Avatar

    I like this idea of choosing the second one, because it forces some creative thinking, and maybe even learning some new skills. As an example, many bloggers default to WordPress, and for good reason. But, what if you take that off the table, then what? For me, that meant moving to a static website that is free. That process is and will continue to be a learning curve, but it isn’t insurmountable.

    Like

    1. way0utwest Avatar

      I made the same move, Lee. Not here, but on another site. I evaluated it here, but ultimately some of the features of WP work better for me, and are worth paying.

      It’s not always the second one that’s worth choosing, but it’s worth investigating a bit.

      Like

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.