In the time before people flew, a teenage boy sat by the docks and dreamed of a sailor’s escape. Little is known of his life back then, of the home and family he left behind to board a steamer in Aberdeen and sail into a new life. My grandfather was fifteen when he joined the Merchant Marines. I can only imagine the excitement and fear he must have felt on his first voyage away from the familiar. Were he to have kept a journal in those days, I’d read it gladly, to learn of my heritage, of risk and rewards, of disappointments and dreams. And while his story is lost to time, my own is still fresh for the telling. And, so I’ll write this book, for my own daughter to read someday, and perhaps her children as well.
My voyage will be quite different. While his involved shoveling coal and staring off at an ever-present horizon, mine will take place on a comfortable chair, imagining a very different destination. To say the world has changed since my grandfather was a boy is, of course, an understatement, but one essential truth has not changed: we still don’t teach children how to think for themselves. The school lessons he left behind in rural Scotland weren’t very different from those my daughter learns in her progressive Quaker school. We’re still teaching at children, not with them. We’re still requiring them to memorize without much reason why.
My dream is to change this, if only a little. During the next year and beyond, I’ll leave behind my familiar life of high dollar software contracting for something leaner and more meaningful. With barely enough money to pay the bills and eat, I’ll create a software world that my daughter herself can use to kindle and grow her love of learning. She’ll explore abstract concepts in relevant, fun ways. She’ll learn to collaborate, to teach those around her. Most of all, she’ll learn how to think, how to solve problems creatively, not because she was assigned a task and will get in trouble if she doesn’t do it, but because she wants to keep going, because the lesson is hers.
Learning is the highest form of play. So let’s make a game.
“We noticed that it required a separate intention of the eye, a more free and abstracted vision, to see the reflected trees and the sky, then to see the river bottom merely” – Thoreau
Throughout software and school, we go through our day formatting paragraphs and taking spelling tests. We follow the familiar processes. We step-by-step our way along with comfortable goals and imagined praise for each small accomplishment. We stay focused on the river bottom.
But, a central question looms unseen by most. Behind each pair of eyes that watches you teach, within each mind that uses your software, there sits an unspoken query, a plea: do you know who I am? Every child, every user comes to the lesson wondering how it applies to them. And rather than answer this, we spout repeatable process with no regard to personal context. As Seymour Papert puts it, we effectively “program the child” (or user). We teach at them, not with them.
Yet with a separate intention of the eye, we can see a whole new world. By shifting our focus from the lesson-at-hand to the child receiving it, by making a personal connection before imposing our knowledge on another, we become collaborators on a shared journey of guided discovery. We become mentors, not teachers.
You ask, “How is this practical? How can you do this in a class of twenty students?” The answer is, “You can’t.” Through our Waveplace work, we experimented with student-teacher ratios and found that mentoring requires a ratio of at most seven students to one mentor, which confirms the findings of Alan Kay and others. In some settings, such as Haitian schools, a ratio of four to one is needed because the students need more.
Most dismiss such an approach as an extravagance. They see merely the logistics, the costs, the river bottom. Such ratios may be effective for teaching music and art, they’ll say, but for general studies, hiring three people to do the job of one is deemed unnecessary. We’ll pay the money to learn cello, but not to learn to think.
And so we must rely on software, the ever-patient, affordable, one-to-one surrogate of our dreams, though current software is even worse than the most overburdened human teacher. Do you know who I am? Better to watch a video of a teacher talking (Khan), than try to make a connection with the software of today.
Time for some smarter software. Time for cognitive agents.
In the last four weeks, I’ve pushed myself to describe a dream. First with the business plan, detailing not only what we want to do, but why and how as well. Writing those fourteen pages was difficult, requiring an unusual amount of stare-at-the-ceiling time and long thoughtful baths. The writing itself was equally slow. I averaged something like a paragraph an hour, with breaks every few hours. It was tough going.
Each morning I read the whole thing aloud. My enthusiasm increased as the document took shape. I knew the writing was taking too much time, time I didn’t have, but I allowed things to unfold anyway, reverent of the ineffable source of thoughts not fully my own. After two weeks, I sent the plan to my list of 84 conspirators, quite unsure of myself and fearing their reactions. Though the document was likely the best I’d written, I still felt the usual panic as I clicked Send. Such a brazen thing to say, “Listen to me,” never mind “Believe in me” too.
When the first few positive reactions came in, I was thrilled. People that knew more about startups and business plans than me were saying “Good job.” The few that read the whole thing seemed enthusiastic and ready for more. Even my wife, who had a dim view of the whole enterprise, began to get excited. As I read her passages from the plan, she kept asking questions, at last feeling hope enough to quell her financial fears.
Exhausted from writing, I took a few snow days off with Paula and Isabel, introducing them to Minecraft for the first time. I’d bought it years ago, but never spent more than ten minutes playing it. Knowing that Tidepool would have the same kind of open-ended creative nature, I figured it was a good time to get the girls doing “research.” Two days turned into five as the three of us became enthralled with our creations. Watching eight-year-old Isabel use Minecraft was especially inspiring. I’ve been talking about sustained creative engagement for years. To see my own daughter glued to the screen, narrating her thought process continually … I was thrilled.
Since then, I’ve been finishing the website and trailer, both more concise versions of the plan. While I’m quite familiar with making websites, the trailer has been a real trip, requiring hours upon hours of counting Flash frames and fixing little details. A few days ago, I decided to include 90 seconds of actual 3D gameplay, which has me learning Sketchup and Blender for the first time, which is a non-trivial detour, let me tell you.
Yes, I’m spending time I don’t have. Not a day goes by without feeling the ever present creative juxtaposition of “this is taking too long” and “just one more thing.” For now at least, I’m letting my artist side win out over my manager side, though as principal software development resumes, this will change.
What can I say? Seeing the first rendering of 2D Isabel sketches within a 3D explorable terrain was just too cool. If Minecraft has taught me anything, it’s that designing the overall look of Tidepool is paramount. Creating it now with my wife and daughter is about the coolest thing I’ve ever done.
“Hofstadter’s Law: It always takes longer than you expect, even when you take into account Hofstadter’s Law.” – Douglas Hofstadter
Last week, I sent an email to the alpha list saying that I’d be done with the website and trailer today at noon. With six hours to go, it’s fair to say that I won’t make that deadline. The website yes, the trailer no.
I’ve been making software for 33+ years. You’d think in all that time I’d have developed a finely tuned sense for estimating how long things take, but instead I’ve learned that software is a stubborn beast that balks at every step.
The only accurate way I’ve found to estimate software is called “timeboxing,” where you make a list of things you want to do, order them by priority, then commit to a set amount of time to do them. If things go better than hoped, you get more things done, otherwise you get less things done. Another way of describing this is “slip features, not deadlines.”
Unfortunately, this requires a large enough chunk of time to allow mid-course corrections. A single week isn’t nearly enough, which is why deadlines like the one I set for myself last week are a bad idea. “These things are never certain,” say the doctors, and so should we. My deadline was more of a “that’s how much time I have” estimate than a realistic prediction.
And yet there’s still value to Impossible Deadlines, providing they’re short-term and infrequent. While I may not have finished by today, I did manage to do more work than I might otherwise have done. Such short pushes are called “sprints” in my world. For some reason, they work better when you imagine the finish line is very real and very necessary.
They’re stressful though. Unsustainable. Each day I’m swimming in delay frustrations, reminding myself over and over, “It’s okay. This is good work. Just keep moving forward.” And yes, I end up doing three weeks in one, which at this point is needed.
But the sprint ends this week. I need to get back to my sustainable schedule. Slow and steady most certainly wins the longer race. I can’t wait.
Last week, with the website done and the trailer close, I was gearing up for the big private launch to my 84 insiders when I decided to finally call my lawyers. I was expecting maybe some tweaking to my aging Stock Purchase Agreement, but instead I received an earful about private offerings and state exemptions.
I’d known about stockholder limits from hearing the crowd-funding political rhetoric that led to last fall’s JOBS act, which passed. I knew the new law made it easier to have many small investors. What I didn’t know was that the SEC hadn’t changed its rules yet, that the needed provisions were in the “comment phase.” I was told, “You cannot have more then ten investors without getting federal and state exemptions.” They told me they could get these waivers for $5000.
Damn. I couldn’t afford the hour long lawyer talk, let alone the time and money these exemptions would take. With only five weeks until the money ran out, this was a problem. Moreover, I wasn’t allowed to make good on the promise I had made to my 84 potential stockholders that they could get a slice of future revenues for as little as $250.
So what to do? The crowd-funding site Kickstarter steers clear of this trap by focusing on purchase or donor transactions, such as selling future copies of a book. We could do the same thing, but our end product is free-to-play. We could sell the future coin-of-the-realm, crystals, but I’d already promised my 84 people free crystals for life.
What sort of MacGuffin could I sell to raise money? Some sort of special title or icon? Special mention in a credits page? A signed copy of a CD or thumb drive? Everything seemed rather cheap and unworthy of the trust these people would be putting into this endeavor.
Then one morning I woke and had a brainstorm. I’d sell real estate, or rather “fake estate.” The Tidepool world is split up into hectares (the metric acre, think “square football field”). To make your own neighborhood, you claim a hectare and its yours. People cannot modify it without your permission. Since the Tidepool world is modeled on our own world, you’ll be able to settle the hectare around your house. You could also settle Times Square or Beverly Hills.
The plan was to have the “Great Tidepool Land Rush” sometime in June, when everyone would walk from their starting point to wherever they’d like to settle, with all having the same opportunity to get choice spots. The new idea is to sell reservations in advance. Buy Trafalgar Square for $50 so that on Land Rush Day you’d already have it.
Yes, it’s really about supporting the project. The land is of token value, but at least it’s something that makes sense within the context of the game. When the world starts filling up, these areas will be desirable. And having played another “virtual world on top of our world” game before, I can tell you that it kinda sucks when someone else owns your own house. So we’ll sell “fake estate” as a way to raise money, at least until the lawyers can get us some real stockholders.
Exactly three months since starting, I’m done with project prep — business plan, website, trailer, and design. Starting Monday, I can finally roll up my sleeves and resume coding. I’m fantastically thrilled about this, particularly given all the word-squeezing and financial fretting of the recent past.
Programming is its own reward. You get in the flow and let the system lead where it will. There’s a stark and simple beauty to the task. Things either work or they don’t. Writing business plans and such is quite another matter. Imagining an audience reading and reacting, feeling them watch over my shoulder as I write … I’m so glad it’s done!
So now comes the moment of truth. I have 84 emails in my outbox. Once I click “send”, there’s no going back. No second chance at making a first impression. While I wish the 3D movies in the trailer were complete, I’ve decided it’s “fish or cut bait” time … time to stop preparing and start DOING. The 3D can come later.
So here goes … something.
I’m fascinated by speed drawing videos. Within the span of a few minutes, you watch as an artist makes hours of small changes, giving you a true sense of the details that lead to a finished work. While we all know it probably takes a lot time to edit a film or animate a cartoon, it’s quite something else to watch the artistry as it unfolds.
Software is likewise a progression of tiny details. Throughout the day, I make choices and changes that slowly move the product along. First, I read my design notes and imagine how a feature will look and act. I then write some code to bring a piece of it alive. As I click “Run” to first try the change, I often have no idea what will happen. That’s the true beauty of software development. You make something and try it. Make something else and try it. This simple cycle defines my work life.
In the same spirit as speed drawing, I’ve been making two-minute Tidepool videos every day or so, showcasing each feature as it’s done. While not as immediate as time-lapse graphics, these videos hopefully give a sense of steady progress, a glimpse at my programmer’s canvas as I eek my way towards the finish line. Nine months from now, I hope to have 180 videos, six or so hours chronicling a software project, start to finish.
Will people watch them? I suspect not many. Investors occasionally, to see where I’m at. Players perhaps, to see how the game was made. My hope is that future developers will watch them for inspiration, to see what can be done each day over time, to see the steady pace of realizing a dream.
“Designing a product is keeping 5000 things in your brain — these concepts — and fitting them together and kind of continuing to push to fit them together in new and different ways to get what you want.” — Steve Jobs
I spent last week on the 2nd most difficult software development task: detailed planning. My first roadmap, made more than a year ago, described everything to the month level. My next, made in December, planned things week by week. This new March roadmap gets it down to the day-by-day. Before me now stands 120 work days of development, split into eight milestone deliverables, one every three weeks. Quite a lot was cut.
Earlier I wrote about timeboxing, which keeps things on track through the peaks and valleys of software surprises. Often there comes a point where you need to “throw one away,” where incremental adjustments just won’t cut it, where you need to start fresh with a completely new plan. Ripping up the floorboards can be stressful and confusing, particularly last week while swimming through the vertigo flu. Somehow I made it through to this much cleaner plan, one that gives me both confidence and relief.
I wish I could describe this planning process. With dozens of factors in play … this piece becomes easier when this piece is done, this piece needs to happen first so this audience can use it earlier, this one’s a nice-to-have, this one is risky … it’s a huge multi-dimensional puzzle with no easy answers. Looking back, all the pieces fit where they need to be, but getting to that point is a true mystery. It just happens, at least for me.
And so a new chapter begins, once again. Now to focus on now.
This chapter is for you, or at least the future you. April has been busy for both mom and myself. We’re each very distracted by our separate all-consuming projects. Mom’s production of Jesus Christ Superstar is opening this weekend, which means this is “tech week”: the week she gets the kinks out of the lighting, sound, staging, etc. It’s also why she’s been home after bedtime each night.
I’ve been having my own tech week, preparing for our first Tidepool alpha release. Though I’ve shown each new change to you and mom for weeks now, showing another 90 people is another matter. I’m afraid what everyone will think, just like your mom. We’re both scrambling through last minute details that most people won’t notice.
Throughout our distractions, you’ve been wonderfully self-entertained, playing made-up games, Minecraft, and occasionally Tidepool. As I watch you play on the computer, I recognize the same determination that I use in my own work. Many parents would restrict your “electronic time,” but not us. As you narrate your actions like the YouTube screencasts you watch, as you build zoos and traps and underwater lairs, as you learn about mods and tricks … you’re learning about *learning*, which is arguably more important than anything you’ll learn in a structured group setting.
I could support this controversial thought with my work in the last seven years, but instead I’ll point further back to my own childhood. First with photography, then with games, then with computers … I was obsessed with my projects. They’re what I thought of when I woke. I’d read magazines on the gym stage instead of playing kickball with my friends. I’d race home to my darkroom or my computer to try the next thing. And now, I see in you the same drive, the same self-motivated interest. It makes me proud.
You’re learning the jobs that don’t yet exist, just as I did, when computers were new. Your future is beyond our imagining, and this will prepare you.
You still have to learn math though. Sorry.
Think of the last time you were frustrated with your phone or computer. “Why is it doing that? I don’t have time for this.” You try something. Doesn’t work. You try something else. No luck. Maybe you ask a friend or IT. Maybe you search online.
Since home computers were new, I’ve been one of Those Guys, the person you call when you’ve exhausted all options. I nearly always find a solution, often quickly. My wife jokes that I just have to look at a computer and it’ll fix itself. When problems last longer, she’s impressed with my patience, trying for hours, long after most would give up. Being a software developer gives one a high tolerance for computer snags. We spend our days fixing our own messes. The minor glitches most people experience hardly phase us.
Occasionally I find a problem I just can’t solve. We call this “falling into a hole,” and it’s NOT FUN. For more than a week, I couldn’t get Tidepool talking to Storymill on Europa, our dedicated server. I was using a technology called Enterprise JavaBeans, which was working fine on my machine, but not between machines. I knew it was probably something simple, but after reading reams of forum posts and trying every nonsensical thing I could think of, it just wouldn’t work.
Being in a hole is its own kind of madness. “Maybe this?” (Nope) “What about this?” (Sorry dude) Imagine clicking “run” with hope in your heart, over and over, six times an hour, for day after endless day. This is the dark side of software development, the unsung trial-by-fire we all unfortunately experience from time to time.
In the end, the solution couldn’t have been simpler. I simply had to move a single word from one line to the next in a text file on Europa. So why did it take more than twenty hours to figure that out? Good expletive question.