Schedules and Perfectionism

Schedules suck.

Each time we make a software development schedule, we do so despite two glaring problems:

1. It’s really tough to estimate or forecast any substantial development project. (That’s the long version of “schedules are useless”.) Looking at any large successful software project in hindsight your estimates and schedules appear naive if not ridiculous

2. We also can’t deny that schedules themselves (or is it deadlines?) are a huge cause of stress. Assuming the wrong time scale causes a ton of stress, but so does simply having a deadline at all–even if it’s easily within reach. I was talking to Tanner about this the other day– having given a customer a delivery date for a two hour mod, and how that suddenly put a pin in the otherwise smooth fabric of his day.

The cautionary tale "dreaming in code" - no coincidence that they were also building a calendar and scheduling app.
The cautionary tale “dreaming in code” – no coincidence that they were also building a calendar and scheduling app.

Yet, we also all seem to have a sense that schedules are necessary at some point: that they can help us accomplish what we want to get out there in the world. I just can’t articulate why nearly as forcefully as I can talk about how they suck. But there is something  worthwhile to a schedule, even if we only occasionally glimpse it.

– The cautionary tale Dreaming in Code rings true to many of us: without much pressure to ship, they never do.

– Our big, sprawling project for Blueprint, despite its wandering scope, has been timeboxed into two week, and now thee week, sprints. That works: agile works. Code gets shipped, customer problems get solved, though it’s definitely stressful.

– There also just seems to be something behind the saying that “without deadlines, nothing gets done”.

So, given that we don’t have a great model for what a software schedule should look like, how can we decide if we have enough of a schedule to make progress without wrapping ourselves in futility and stress?

A good schedule answers two questions.

I’d like to suggest two things a well made schedule can accomplish, two questions it can answer:

1. Am I working on the right thing?

This may be the roadmap / checklist part of the schedule instead of the “deadlines” part, but we can spend a lot of time on the aspects of a project that frighten / intrigue us only to emerge from them to be surprised by the vast amount of work remaining. (And in some sense a schedule is just about avoiding surprises.)

2. Should I stop polishing / researching and move on?

Given that we can endlessly perfect and refine these things we’re making–AND given that this may be what drew us to making things in the first place–we need something to help us stop. A schedule can let us know when we’re ahead, when we’re behind, and how much time we have for research, polishing, and play.

A good schedule would let me know on any given day if it’s time to move on, to deliver (monetize?) the insights I’ve gathered so far, or if I can keep feeling around for something better.  “Moving on” can mean shipping a feature, or adding hooks so it can be modded later, or even pulling things so that a customer can “finish” a feature their own way.

The real benefit of schedules.

While I think we definitely need a mechanism for answering the two questions above, the real benefit of schedules may lie in this: they are a refute to perfectionism.

Perfectionism is tough because its side effects are usually positive; perfectionists tend to check their spelling. Yet we know it can cause all sorts of hard-to-spot but truly destructive practices: premature optimization, polish-paralysis, not-startingness. The worst problem with perfectionism, however, is that it’s about protecting ourselves.

“Perfectionism is not about achievement and growth. Perfectionism is the belief that if we live perfectly, look perfectly and act perfectly, we can avoid the pain of blame, judgment and shame.” – Brene Brown

Thus, perfectionism is inherently inward looking: and that is real poison for software development.

Schedules–good ones–force us to look outward. At the customer who’s going to use and mod what we’re making–at the customer who can’t wait to get it and is asking us about it on our support forums: a good schedule makes us focus on building the software for them, not for us.

Cautions.

A couple obvious things I need to keep reminding myself when actually making a schedule.

– Human beings overestimate the amount of time they have available.

– And software developers underestimate the amount of time it takes to code anything, let alone to package and complete it.

– Some of the most important work SeedCode has done has come from screwing around on stuff that wasn’t originally in the plan. So while I often fantasize about keeping the roadmap part of the schedule, and chucking the deadlines, it may be the roadmap that’s the truly dangerous part.

– How to plan for wandering around the roadmap seems like a good challenge.

Part 1 of this article can be found here.

Featured Posts

Follow Along

Stay up to date with the latest news & examples from SeedCode

3 Comments

  • Tom Fitch

    So many lessons to be learned from that book. It’s like the antipattern textbook of software project management.

  • Janita

    Brilliant post. I am not a software developer, but an end user of your calender app. I came to your website today trying to solve every problem you just outlined!
    You’ve inspired me to think a good schedule must be combined with realistic goals and forgiving attitude!
    Thanks!

  • Stephen Gallagher

    Brilliant John and for a neophyte like me…… Not too Stressful to read!

Leave a Reply

Your email address will not be published. Required fields are marked *

Check out some of our other posts ...

Suggesting Appointment Slots

Show Available Slots that Match Multiple Criteria Schedulers often look for gaps in their schedules to find the open resources for each opportunity. But sometimes,

Introducing Draft Settings Mode

Following up on this idea that people stretch themselves when they feel a little safer, we’ve been very focused on the customization experience for DayBack

New Longer Timescales for DayBack

Resource Scheduling Swimlanes You can now extend the pivoted scheduling view in DayBack to show items by week instead of solely by day. This lets

FileMaker Summer Camp – Recap

Unconference Sessions If you missed Pause in October, here’s a look at the sessions that attendees hosted. All the sessions are listed in this post

COMPANY

FOLLOW ALONG

Stay up to date with the latest news & examples from SeedCode

© 2024 SeedCode, Inc.