Modern Software Development at Its Core
I spend a lot of time in hotels, so it’s pretty unremarkable that I would spend the first week of 2016 on the 6th floor of some Marriott. I unpacked and put my things in their usual places. I make coffee in the room’s coffee-maker the same way each morning. And I hit the hotel gym each day for a 3-4 mile jog between end of business and going for dinner. In terms of my routine, the first week in January is like every other week of the year that I’m on the road.
What’s not the same as every other week of the year is what awaits me when I arrive at the hotel gym. In December, it’s a roomful of softly humming treadmills and a TV firing out staccato bursts of salacious, 24 hour news at a mercifully low volume — the exercise room equivalent of a ghost town. This week, it’s full of newly New Years-resolved exercisers, armed with old walkmans, weird headbands, and pitted out T-shirts that, until this day, were reserved for painting the house.
A Pitched Battle with a Treadmill
One such man came in at the same time as me, and took the treadmill next to mine. I punched in my workout settings and started out at my usual 6 miles per hour, while the man next to me fiddled with his treadmill for a few minutes. Once he got started, he peered at me every few seconds, as if I were taking a midterm via treadmill and he wanted to copy my answers. He worked himself up to a speed similar to mine, and everything seemed to be in rhythm for 2-3 minutes, until his breathing became extremely labored and ragged.
Naturally, at this point, rather than pausing the treadmill or slowing the speed, he lifted himself off of the belt like a gymnast performing on the parallel bars. Once this became untenable, he set one foot down on either side of the belt, tottered awkwardly a bit, and then jumped off the treadmill. I assumed he was done, wanting to live to fight another day, but a few minutes later, he returned with a towel and leapt back onto the treadmill, using his arms to resume his former pace. Luckily for him, he did then figure out how to adjust his speed, allowing him to alternate between sprinting and walking until he decided he’d had enough.
A lot of gym regulars, as I understand it, find New Years resolvers to be annoying. I understand this sentiment if you take them as an entire group, seriously clogging up the gym for the first 3-4 weeks of the year. But it’s hard to fault any individual for wanting to engage in some self improvement and overcoming inertia (and annoyed veterans) to get started. In fact, it’s downright laudable.
As I passively observed this man’s struggles out of the corner of my eye, I was sort of tempted to lean over and say, “hey, word to the wise — that button right there will pause the treadmill.” But I didn’t know whether that would be helpful or patronizing, and talking to strangers isn’t’ really my thing anyway, so I kept to myself. What would have been far better than me helping him, however, would have been the treadmill helping him. “Hey, are you new at this? If so, press this button and let me give you a few pointers!”
Shut Up And Take My Money
I’ve made a career or writing software, and so have most of you reading this blog. While I’ve been doing it, culture has evolved from a “RTFM” sentiment to a “let me make that easy for you” one. This means that software is no longer just a matter of getting the bits to behave the way we expect them upon getting the inputs we’ve reasoned about. Software is about helping people solve non-technical problems and improve the quality of their lives, which one might loosely term “user experience.”
But let’s go one step further and call this what it really is: a form of entrepreneurship. User experience has sort of a mushy connotation to it, as if the whole idea were to code up the software equivalent of an aromatherapy spa experience. It’s not that, exactly. Rather, what we’re looking for is a path to the, “shut up and take my money” moment.
Imagine our hero, standing on the treadmill, looking sheepishly around the room, self-conscious about taking too long to figure it out. He starts the thing, not knowing exactly how it’s going to work. Right at that very moment, I’d wager dollars to donuts that he’d have paid a buck or two for a “treadmill plugin” that walked him through some basics. At the moment that he was vaulting himself off of the belt like an awkward gymnast, I bet that buck or two would have become five or ten. “Yes, whatever, shut up and take my money and show me how to reduce the speed on this stupid thing!”
The Essence of Software These Days
The essence of creating value is sniffing out those opportunities, even in situations where the person who would pay for something wouldn’t even dream to ask. Anyone can brainstorm and come up with ideas for “shut up and take my money” offerings, but, as software developers, we’re in a unique position. We can come up with those ideas and then, subsequently, have almost no hindrance to making them reality. We don’t need to find a “technical co-founder” or hire an offshore team. We can dream it up and then build it. And I submit that this is the core of modern software development.
It’s not about web or mobile or internet of things. It’s not about client side or server side. It’s not about OOP or functional. It’s not about full stack or short stack, and it’s not about finding the perfect needle in the javascript framework haystack. It’s about solving people’s problems in ways that make them consider it a matter of course to hand you a wad of cash. The rest is just details.