The Programmer Dad

I’ve not typed a semicolon for a couple of weeks now. I don’t mean the look-at-me-I-know-fancy-punctuation kind (there will be plenty of those here). I am of course referring to ;, the token that denotes the end of a statement. No, I’ve not ditched JavaScript for Python or Erlang; I’m on holiday. I’m getting back to (half of) my roots in beautiful Malaysia, and as a result I’ve not done any programming at all. I’m writing a blog post instead. Let nobody say I don’t know how to kick back and relax.

A week or two with a slow and expensive 3G internet connection has proven salutary. It has been more trouble than it’s worth to check my Twitter feed or GitHub issues; StackOverflow answers take so long to load that attempting to write more than a couple of lines of code has become prohibitively time-consuming. Consequently I’ve been forced to come up with other things to think about, namely that other major part of my life: family.

"And what do you say if a stranger tries to make you use tabs instead of spaces?" - "NO!"

“Rails dev, Emacs enthusiast and dad”

The stereotypical image of the programmer as a pasty-faced, socially-inept loner has seemed rather outdated for a while now. Proof of this is the fact that, like many other programmers I know, I am a parent. We parent programmers have collectively demonstrated both the physical and interpersonal skills requisite to the production of real offspring with a real, live partner.

Indeed, since becoming a dad just over a year ago, I started to notice just how many of my contemporaries consider their parenthood so important that they will mention it side-by-side with their favoured development technologies in their Twitter profiles or “about” pages. Yes, that serious.

Therefore I am surprised that, amongst the thousand-odd articles written each week discussing the relative merits of the latest task runner or whether or not Angular is dead, I’ve come across relatively few that address the condition shared by those like me at the intersection of software development and parenting. Here’s one from Jeff Atwood. Scott Hanselman has a whole bunch here. This one is my small contribution.

Adaptations

Becoming a parent is a life-changing experience. What a horribly trite, yet true, statement.

Being freelance and working from home, I have had to adapt several times to an ever-changing work environment. By reason of necessity, my home office is located in one half of my son’s bedroom. Trust me, I’ve looked for better options; I’m holding out on moving to a co-working space for as long as my sanity allows.

In the very early days, I was pleasantly surprised to find that, when my wife needed to eat breakfast or take a shower, I was able to work as normal but with my son sleeping swaddled up on my lap, like one of those mummified cats from ancient Egypt. This convenient state of affairs did not last long. Around the six month mark, I found myself starting work at 5.30 am, bouncing him in a harness whilst conducting a bleary-eyed, forced foray into the world of standing desks. Lately, with my son freely crawling in and around the office/bedroom, I have to contend with having my complex, teetering mind-structures periodically smashed by a disarmingly cute distraction.

The well-documented grumpiness of programmers which usually accompanies an unexpected yanking out of “the zone” proves difficult to muster when confronted with a wide-eyed, curious baby being daft.

I’ve also developed my ability to design, plan and debug in my head. Countless hours, day and night, have been spent bouncing my son to sleep. Much of the remaining former leisure time is now spent playing with, tidying up after or bathing my son. To begin with I just resigned myself to taking a huge hit in productivity - specifically in terms of my personal projects and open source stuff that I had tended to work on in the evenings and at weekends. Then I realised that I usually spend a good portion of that time just sitting, thinking about whatever I am working on - planning, designing, debugging. There are usually a couple of hours intervening between putting my son to bed and crawling to bed myself. In this time I can enjoy relative quiet and have both hands free to type. So now I try to consolidate these exploratory, ruminative phases (“What methods should this API expose?”, “Where might this tricky bug be coming from?") and defer them to “bouncing time”, while “both hands free time” should ideally involve maximal finger-to-keyboard contact.

This works out quite well; this past year I’ve completed five side projects and managed to keep up at least one blog post per month. I’d go as far as to say that “bouncing time” is right up there with “shower time” as a fertile source of ideas and inspiration. Case in point: the bulk of this post came to me during a recent middle-of-the-night bouncing session.

Something has to give, of course; in my case the sacrifice has been mainly a reduction of hours spent aimlessly trawling the internet, watching TV or playing Rome: Total War. Strange as it sounds, the discipline demanded by having a baby to care for seems to have improved my general ability to prioritise and manage my time, thereby allowing me to focus on the wheat and discard the chaff from my daily routine. As I said: a life-changing experience.

Getting Advice

As spoilt 21st-century programmers, we know that almost all our questions can be answered by a simple process which begins with Google and usually ends with StackOverflow. If you are like me, you start to get the feeling that this process should be able to map to other areas of life. Ideally all areas.

Take something that seems simple, like “What is the correct temperature for baby’s bedroom at night?”. Go on - try to figure that one out with your fancy Internet. Yes - many answers are forthcoming, but none of them are satisfactorily complete (okay, 16 - 22°, but with or without blanket?). I am looking for a code snippet I can copy-paste here, guys. Why hasn’t anyone made a jsFiddle or Codepen for babies? Free startup idea there, by the way.

To be sure, there are lots of sources of advice out there, but there is a high signal-to-noise ratio, and no “canonical” resource like StackOverflow.

The situation reminds me of years ago when searches for programming-related problems would inevitably lead one to Experts Exchange. As you may know, StackOverflow has long since relegated Experts Exchange to a dark, lonely corner of the internet, somewhere between MySpace and Friends Reunited. So could the all-conquering Stack Exchange network deliver a similar blow to the Mumsnet forums of this world? Well, not yet. There is a parenting Stack Exchange site, but so far it doesn’t seem to have caught on in the same way as its elder siblings. Personally, I just don’t feel the same drive to collect “rep” as a parent as I do as a programmer. Somehow the gamified collection of virtual rep, when viewed against the all-too-real fact of having complete responsibility for the life of another human being, seems slightly absurd. After successfully negotiating a faecal disaster - in the dark, against a backdrop of screaming, your last vain hopes of a decent night’s sleep swept away like so much poo in a wet-wipe - the last thing on your mind is “Great - I can use this experience to earn me some rep - maybe even a badge!”

Obviously, I’m being a little unfair here. I’m not comparing like with like. Child rearing is not a precise science. Fads come and go. Emotion is an understandably powerful driver of opinion. Quite unlike the cool, rational world of software development. Now, just remind me - it the correct form to use spaces or tabs? And where should I put the curly braces again?

Decisions

What is my true opinion of this brave new digital world we are building? Until recently, I’ve hardly questioned the myriad fruits of modern software development: boozy thumbs-up photos on Facebook, identity theft, YouTube comments, Buzzfeed journalism, Twitter harassment…

When the time comes, will I buy my son his own Rasperry Pi and copy of The Linux Command Line; or would I rather he be outdoors playing with sticks and throwing rocks at wasps nests? Choosing the former, would I be unwittingly setting him up for a life of cyber crime, the inevitable end of which finds him in a CIA “enhanced interrogation” room being waterboarded for exactly how he brought down the entire US government IT infrastructure using his Christmas present from dad? 

I got my first mobile phone in my mid-teens. You couldn’t get porn on it, and nobody had figured out sexting yet. How long should I hold out before acceding to his pestering for a smartphone (or whatever “wearable” it’ll be in a few years' time - a smart monocle, perhaps). Do I really want to give him unfettered access to the sum total of humanity’s weirdness?

It’s a genuine concern. He’s only just turned one and he’s already adept at swiping through photos on a touch device. Until now, I’ve always been firmly on the kids' side of the public “evil technology” debate. I still am, but my parental trepidation does now give me pause when it comes to the more dubious uses of technology and - especially - the Internet.

Perhaps I will take a leaf out of Kim Jong-un’s book and put together my own, private intranet. Or a heavily-filtered firewall. At least that would give him something meaty to hack his way out of.