Habitual Automisation of Mundane Tasks is Mandatory
Send us your comments.
We are a special bunch of people: computer-literate, we are most often called for in times where your Windows-PC is letting you down and you have missed to backup your data. The next step for you has been to not only use that machine, but to extend your control by learn how to program — to create new functionality and use that freedom Turing-completeness gives you. And now, it doesn’t matter how good you are at it and what preferred programming languages and frameworks you are using you are leaving the consumer-zone and are becoming a creator.
A few years ago, when I re-joined university, after a brief exploration of the consulting industry, I started to invest time to create small scripts to automate tasks I otherwise could have solved with small manual effort. Those tasks ranged from extra-steps I had to take at regular intervals to sort or tag items, or tasks that would take me a few hours of manual syntactic work (i.e. joining multiple sources of data). I actually wasted a few nights on coding little helpers that I used only once at some points. From the point of time used for the task, I sometimes spent a much larger amount than I would have spent simply copying text.
I am a computer scientist and I think I did not waste my time.
My primary job is not to write code, but to explore the unknown areas of the things we can do with information. The computer is the primary environment that I use to scale my solutions up to millions of operations and to reduce the amount of effort we have to invest to achieve some objective. I am much more involved in researching concepts and algorithms and contexts within my systems will be introduced to then with implementing these concepts. Thus, why am I investing time in actual implementing stuff?
In the following I am trying to find rational answers, aside from my primary emotional answer: It is fun and triggers my primary reward neurons.
“Can you show me how this works”?
Not only do I have to introduce students to the craft of crafting programs (for them to fundamentally understand their field) but I occassionally am in contact with people that want to see that our concepts are working. “Normal” people (and sadly many students of computer science as well) are not fluent in formal descriptions and should not be forced to envision the colourful world our concepts will create — once implemented and used by many.
Furthermore, it is often much easier to create a small mockup or simulation to create a first test for an idea before you start to work through a potentially infeasible formal concept. If your idea fails in a simple simulation it might not be the world-shaker you imagined. Better spend your time refining your idea or drop it early before it wastes your time.
You do need coding skills for that. Coding is a craft and that needs experience to improve your abilities.
If the world is lacking the particular program you need or the solutions known to you are not made the way you want them — then you should create this program (or improve some existing code). If you are in need of that functionality, someone else might require it as well. Or, if you need it once, you might need it again somewhen. Do not risk to become a manual labourer of repeated, boring and uninspiring tasks. If a computer can do it, it should not be done by a human being. You are here to create, not to endure repetitive strain injuries.
Creation is — at least for me — one of the most satisfiing activities. You make it, you watch it, you feel exceptional.
“what I cannot create, I do not understand” — Richard Feynman
It is easy to fiddle around with data until it somehow fits, but nothing is more dreadful to realise — after weeks of fiddling — that you made an error somehow. You will not be able to reproduce the tranformations, calculations and abstractions you actually have performed and will be forced to redo every single step. A program creates reproducability of the whole or in parts. This enables you to test and verify your routines and the computer ensures that everything is exactly executed as it is defined.
If you invest the time, chances are that you will get it right the first time. If you simply hack your code without testing, at least you will not have to repeat the tedious calculations after you tracked down your mistake. And your program will double as a written formulation of the algorithms that reflect your understanding of the tasks you have to perform, making it much easier to search for the failure.
And the thing you are about to do might not look like it will turn into week-long manual labour, but necessary results tend to be used for further purposes. And while you happily work on boring repetitions of the same simple task, a second similarly tedious task will attach itself to your results. Now you have to automate two tasks if you realise that you will be doing manual syntactic operations until the end of the next month. Even worse, after you finished, someone will add a little data to your input, making it necessary to restart all over.
The habitual coder often will only have to re-run his code, or extend his program slightly to handle the new dimension, and then let the computer crunch the number while he is enjoying a break — or the creation of the next thing.
If it keeps you awake at night, it is worth doing it.
Last but not least, you should decide for yourself how you want to spend the time you are given. One of my indicators for this is the ability to stay awake while doing it. For me coding is one of the most immersive things to do. Creating a complicated, intertwined piece of code is a task that lets me forget time and everything around me. I could be missing my stop at the train, the hot coffee beside me, and I even need some transition time, before I can submerge back into the thing most people assume to be reality.
On the other hand, I have a track record of falling asleep while people are talking to me. I am very sorry, I just can’t help it sometimes. I might even be interested in the things they are saying, but I assime sometimes they are not stimulating the right or enough areas of my brain. Computers, code and math normally does and I have to force myself to sleep instead of dealing with yet another algorithm. Actually I occassionally haven’t been able to sleep and got up again to fiddle with some unimportant but engaging part that kept my brain awake.
I think that it must be somehow “your thing” if it keeps you going. And besides this being a fine indicator for the things you want to do in your live, if it cannot be helped, you have to pull through. Creating code for daily matters helps to keep me fullfilling even the tedious tasks that otherwise would lull me to sleep instantly.
Update 2015-11-22: There are people who you have to celebrate for how far they drive automisation. The admin described here is running in a whole different league than I could aspire for. He not only has automated messenges generated and sent to his wife and boss depending on the number of SSH sessions open at defined times, but also automatically reacts to defined keywords in customer mails to trigger automated rollbacks (and send a reasuring message). This guy also is the only one in the office aware of the network connectivity of the coffee machine. As far as I am concerned, this guy is the gold-standard of admins. via