In the context of the Teaching Teachers Open Source, I had a friend with the dream to author a children’s book on IT. Below are the thoughts I contributed to her:
Currently I am reading Kevin Kelly’s “What technology wants”, and while it is true all technology and science is “building on the shoulders of giants” it becomes devastatingly clear to be the case with code. Increasingly, the features, the size of your lego blocks so to say, grow. Especially since the rise of Github, Pastebin and Stackoverflow (each of these merit their own essays you may read if you want to, but here’s a tweet), open collaboration is always too big to ignore. Incidentally, intense communication through various tools is also essential. Unless you’re one of the best coders in the world, writing any substantial amount of code yourself is usually the wrong solution.
Anyway, I’ve thought about technology development a lot, combined with the nature of work. Most colleagues study outside of work hours to be able to do the work. I have some productivity addiction, which gets weird when it’s any sort of knowledge you’re producing, not chairs or other physical items. If I could just replicate work I’ve done over and over, or even teach it, it would be so efficient. But I’m forced to learn new things to keep up with development, reaching higher and higher levels of abstraction. Because of this discrepancy - doing dishes will always take effort, teaching a team Git gets easier but learning new things always take mental effort - I’ve sketched a way of thinking about effort using different currencies such as time, monetary cost, experience required and mental effort (mana). So I’m a pretty high level IT wizard who can do a lot of things even at no cost, but it will cost time and mana. Also I get a specialization penalty for low mana tasks (find reference on how Richard Stallman describe hackers as the wizards of the future?).
One concept important to systems and software development is the ability to assemble (and to take apart again). Many systems are like dolls, ready assembled and you won’t open or change them. Open software however mostly comes partially assembled (legs, hands, whatever, parts always being reused for other models) but you will have the source code available and there are distributions that are made to be automatically assembled right on your laptop. Back around year 2000 getting a Linux system to work could take several days or weeks, but now I spawn new computers several times per day. It has led to the expression “treat your servers like cattle, not pets”, because if one misbehave you should be able to put it down and reproduce it from source code. This beautiful process of bootstrapping never seize to amaze me and tools like autoconf, automake, gcc and yum make it happen.
Finally, I feel like I have studied too much. The accreditation of a masters degree (imagine a lengthy list of impressive courses and grades) is a terribly inefficient way to weed out who is fit for the job, especially since there now are MOOC trainings for most thinkable subjects, not rarely for free. I believe that while excellent in parts, for many jobs, the significance of university education will diminish in favor of more efficient qualifiers. However, while I have all this knowledge and experience, I have a passion to make the best use of it and enable others. Any way you can think of to take part in that would be pretty awesome.
PS. Below are some notes which didn’t fit anywhere else: