I started this 100 days of coding challenge that has been going around the net recently. I’m not sure how/why I got roped in. (Actually, that’s not true… I have clear recollection. I was pressured into it by a dear friend who shall remain shameless!) The idea is that you write code for 100 days straight and network with friendly folks who are doing the same while sharing what you’re doing. Hi, I’m Cliff. I’m here because I was convinced (bullied) to participate in the challenge. You’re probably here because you’re new to coding and you want to be down with everything that’s going on. Now that introductions are over let me begin with a few disclaimers just in case you are unfamiliar with how I operate.
I’ll start by saying the challenge is a great idea and I am super excited to participate in it. Also I highly encourage you spread the word to others. I didn’t really understand what it was about at the beginning but now I’m involved and it’s a thrill. I have no hard feelings towards those who encouraged (harassed) me early on and if your life story resembles anything written here it is purely a coincidence. (Don’t message me with the, “how dare you make this sound like a bad idea?” I am all about the challenge and these is mostly just jokes, ok?) Even as much as I love the community and idea of social coding there is something that bothered me early on that I couldn’t put my finger on until now.
It wasn’t the way I got conned into participating. It wasn’t anything to do with the rules or the challenge at all. It was my inability to start. I honestly couldn’t figure out how I would participate or what I would do. I was trying to give the correct answer and I was coming up short. After various failed attempts at crafting the proper contribution and planning my perfect participation I finally just settled on doing what I do best, sitting and hacking together random code, libraries and APIs. It wasn’t until I stopped trying to plan my project that I was able to begin my project. It wasn’t until I stopped analyzing my approach that I was able to remember why I’m here in the first place! That desire to have the right answer was getting in the way of my ability to do the thing that was most important and it bothers me!
I hung out in the #CodeNewbie Twitter chat that same day when I saw the same desire several times in different community members. There was talk about, “I don’t have time” and questions like “where do I begin?” as well as people saying “I lack focus/direction”. All of this banter ignores the core driving factor behind the entire challenge, IT SHOULD JUST BE FUN! I never need to find time or a set of directions when playing my favorite video game and I always know where to begin. Why should the challenge be any different? At what point did we all stop enjoying ourselves and put on the responsibility garments of deadline driven politically correct practical software engineering and what do these garments have to do with the event?
I remember a time where I could just mash buttons on my keyboard without stressing over “a useable project”, “a deadline”, or “the right way to code a project”. It was a time when I would see something cool in an iSeriesNewsNetwork or JavaWorld article, type it into my terminal and tinker with this new thing without ever having any practical need or use case for it. It was a time when I would always have a tech book or magazine tucked under my arm and a time when I would dream of angle brackets stabbing me in the middle of the night. In these days I would merely discover stuff for no reason then there would just so happen to be a need for that discovery mere days later. It would sort of work like, “we have to update every Java class in this project with a VERSION string” and I would remember the trick I just read about using AntLR with the token rewrite engine a day prior. I would have experiences where someone needed a Excel spreadsheet converted to a web page from a non-Microsoft platform and I would draw from the blog post I read 2 nights earlier on the Apache POI project with stuff I got out of my XSLT Michael Kay red book then immediately cobble together some code that did exactly that. There were times when dabbling in random stuff like reverse ssh tunnels to get my Amarok music player running over a remote X11 session (with absolutely no audio) to show on my Mac would allow me to rescue a demo gone horribly wrong due to HTTP proxy issues.
My point is that I never wrote code to earn a paycheck. I never wrote code to meet a deadline. I never used to code for any objective other than the fact that I knew how to cobble together weird mis-matching technologies to make something work. Every project was never a project that was given from a manager. Instead it was a rehashing of an experience from only days prior where I was tinkering with some flashy thing on my Linux Beryl desktop trying to make it work & look like OS X or whatever. Everything I did originated out of a passion to play with computers. It was never planned, mandated or even organized. And now I find myself struggling to plan and organize something that felt mandated at first. It was not fun!
Some of the people chiming in on the Twitter chat sounded like they were setting themselves up for a work assignment. They sounded like they were forcing themselves to do the challenge because it would be somehow good for them. It is all wrong! It bothered me so much that I decided to write about it. What is supposed to be a passionate experience of 100 days spent coding is becoming 100 days spent bullying yourself to finish a project… Some of you are so focused on the end result that you’re robbing yourself of the entire experience.
Then I had all kinds of crazy questions and got to thinking the whole idea was wrong. I mean, why am I spending my time trying to complete a 100 day assignment? Do I plan to only code for 100 days? What happens on day 101? Will I no longer be an engineer? Will I suddenly turn blue, shrink to a 10th of my size and be on the lookout for Gargamel? Where would I find one of those noodle shaped stocking caps that bend forward slightly but never fall of the head? I code everyday professionally, shouldn’t I get credit for that? Who is collecting the credit? Can the credit be exchanged for an Xbox One when I’m finished? It got LL weird and Again, I overanalyze and missed the obvious!
Here’s a radical idea if you are taking the challenge and feeling lost or stuck. Don’t plan a coding project or do anything work related. Just break out your favorite IDE, programming language or framework and start tinkering. Don’t obsess over what the end result will be because that is not the point at all. I am in day 2 or 3 of the challenge and my project has a generic name and absolutely no purpose! I still don’t know what it does or will do, all I know is that I am having a blast tinkering with Azure, NodeJS, Express, Facebook and Twitter APIs. (I might even throw in some TypeScript and write my build system with Yarn!) For the first time in a long while I finally feel the way I did back in 2000-2005 when I would read my RPGIV programmer’s manual in the laundromat.