Programming everyday as a lifestyle
A while back, I referred a coworker back to my blog to show him some examples of d3.js, and noticed that it remained as abandoned as one’s old n64 from college days. Pretty neat and waiting to be played with, but sadly colleting dust.
As anyone with an engaging job and a family can attest, sometimes getting around to your hobbies takes a back seat from other priorities. Trying to develop your skills in a mentally challenging and detail-oriented hobby that sometimes requires hours on end of uninterrupted focus, however, is a much more difficult sell than, say, knitting (now that I think of it, I can see knitting taking up hours on end of uninterrupted focus…).
The reason that programming cannot be put into a “hobby” framework is that it doesn’t work like a continuous time investment stream. One can’t just do a little programming - that’s what all CS professors wisely advise against. Often times, you can’t just attempt to cram whatever knowledge you need to know in order to solve a problem. You can only Google so much before you realize you don’t know what to look for, or find a weird implementation example that has nothing to do with your original intent. You need to have access to a couple (or perhaps more) layers of abstraction, readily at your fingertips - sometimes just to figure out what is wrong! And that additional knowledge comes at the expense of having solved similar subsets of the same problem over the course of time.
And that is just for straightforward, single-purpose programs. Learning entire frameworks and contributing to open-source projects involves a couple more layers of abstraction, namely team collaboration and software architecture. Now that’s something that takes time…
Point being, anyone who seriously intends to become a somewhat proficient programmer, and who does not have the support network of being in a degree program, needs to treat the learning process as a lifestyle.
I’m particularly invested in improving my programming skills because:
- It’s fun
- It helps me with my day job
- It helps me bring better tools into what I do
- It keeps me sharp mentally
Whether I end up fully converting into a development career later on is yet to be seen, but it is a possibility to be certain. However, these reasons are strong enough for me to make any reasonable effort to invest the time and practice programming on a constant basis. How often? Why not daily?
When I first started working out, I was motivated by my coworkers who hit the gym 3x weekly. I remember thinking that it was a heavy rhythm and that I would fizzle out, but lo! I was able to stick it out, and now that they have moved or transferred, the regime sticks. The inertia of regular “rituals” is strong with the human brain, and I don’t see why programming should be any different. I’ve read up stories of Jennifer Dewalt and others who just “pick it up” and go for a lengthened boot camp, though there are also very good reasons against overdoing yourself. It seems that the upper bound lies around <=4 hours/day. Regardless of the frequency, having the drive to program constantly is a reflection of your actual pleasure in the craft. As someone on the last link worded more skillfully:
Not programming in your spare time does not make you a bad developer, however, programming in your spare time can make you a better developer.
And with that said, I’m aiming for the lofty goal of programming daily. I will attempt a unitary exercise, probably from the trusty /r/dailyprogrammer subreddit and vary it a bit. I’ve already started since last week, and its fun! My first aim will be with Ruby. I felt it was neccesary, as I’m using all this Jekyll mumbo-jumbo and running Ruby commands in the blind… Not proper.
You can find my exercises on the right in GitHub to keep me honest, or for your own use! I’ve taken painstaking detail into recreating any prompts and useful links in markdown for your viewing pleasure. Let’s see where this takes us!