Every month in the United States has at least one official theme (I have no idea how these get set–is it Congress? Lobbying groups? Industry organizations that just spend enough money on ad campaigns? But I digress…) and November’s is National Novel Writing Month.
This includes an initiative called NaNoWriMo that started in 1999 (hello, “Holy crap I remember things from over 20 years ago” feels) to encourage writers to tell their story–and write 50k words of their novel during the 30 days of November.
But John, What the Hell Does Novel Writing Mania Have to do with Software?
Very, very little. At first glance anyway.
I tend to make tenuous, difficult-to-explain connections between concepts. Essentially what I’m working with here is motivational techniques, specifically two concepts: Big Hairy Audacious Goals and the Buddy System.
NaNoWriMo calls for writing 50,000 words of a novel in 30 days. That’s one of the biggest, hairiest, most audacious goals I can imagine. That’s 1,667 average words a day that advance a plot, develop characters, build a world in which those characters exist. That’s a significant amount of time, brain power, and creativity to apply consistently in a fairly short amount of time (with the looming American holiday season, no less).
I’ll paraphase Jim Collins in case you didn’t click thru the link above: if you want to do great things then you need to have big goals. Collins uses the moon landing as a key example of a BHAG–in 1960, John F. Kennedy said, “We’re going to put a man on the moon by 1970.” It was big enough to beg the question “HOW?!” which is exactly what gets the brightest minds in a room excited. It was also based in reality, since this is the nation fresh off the high of inventing the atom bomb, defeating Japan, and re-conquering western Europe all in the same 4 year period–conceivably, that same energy and ability can simply be redirected.
In case anyone missed the memo, it worked–NASA pulled the collective engineering genius, industrial capability, and economic power of the nation in line behind this goal and made it happen. Without the driving force of “We have ten years to do a massive thing from scratch” it’s conceivable delays and rationalizations could have made a moon landing impossible–look at how long it took to replace the Space Shuttle program without a compelling goal.
One of the major draws of NaNoWriMo I’ve observed is the community. People are pack animals–we tend to be at our best when surrounded by other people with the same goals. If anyone has been on “Author Twitter” during November can cite plenty of examples–people encouraging each other, talking up each other’s efforts, giving support when people hit their wall (because it’s all too easy for a BHAG to switch from motivational to a mental health trap). It’s just easier to do difficult things when you’re not the only one doing it.
You’ll see this (sort of) with Advent of Code. Particularly on teams that use the framework for team or skill building, or groups of peers who share solutions and challenges. The fact that there are people also making themselves tinker with code after working with code all day and are expecting to see your attempt is often what’s needed to power thru. The simple knowledge that you’re not in it alone (and that others know it too) can help one tap into a powerful reserve of motivation.
Applying the Concepts to a Side Project
A developer who is employed full time and has interests outside of software is sort of like NASA in 2011–yeah it would be nice to have this accomplishment, but it’s sort of taking most of our budget (energy) coordinating Soyuz trips with Russia (writing code to pay the rent).
But say that because of who you are as a person, you’re frustrated by the lack of momentum on an idea you want to bring to life. Having that BHAG to move things forward significantly might be what motivates you to solve the problem of “How.” Finding a buddy or community working similarly big, hairy, and audacious goals can provide the support and accountability typically missing from these solo projects.
So when a friend of mine suggested I join in on NaNoWriMo with her this year, it planted the seed of “Yes, and what if I wrote software instead of a novel?”
So if not a Novel, then what’s the BHAG?
My goal is to deploy an MVP of a product I’ve had percolating for a couple months now. Shove it from the current v0.1 up to v1.0 and reevaluate.
Currently, I’m sitting on a non-trivial shell product:
- One can create an account with a customized flow
- One can see slightly different content whether they’re logged in or not
- I have a CI/CD pipeline using Github Actions
- I have a test environment in Azure
And that’s it. It started as an excuse to play with ASP.net Core and then I stalled once I reached those 4 milestones, little more than a Sprint Zero well done.
So what’s involved?
My product is yet another way to teach people how to write software (because there are plenty of resources for learning to code–but turning code into software is another sport altogether). I plan to develop my own platform (because writing code I want to write is different from code I’m paid to write) as well as the content.
I have 31 initial stories across 9 features–but there’s several spikes that I expect will lead to additional stories. That’s already more than 1 story per day–and based on my “Sprint Zero Point 2” work this past week, that’s 100% not realistic.
So Why Do It?
Because I’m pragmatic. And agile. I feel goals–even BHAGs–are guidelines, landmarks to track to gauge progress and priority. They’re a thing to aid in decision making. If I get to Thanksgiving and I’m looking at 40 cards in the “Done” column, I’ve learned things. If I’m instead looking at 4 cards, I’ve also learned things.
And in either case (or the more likely middle ground case) I’m still closer to the ultimate goal than if I did nothing.