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:
ComputerCraft EDU v2 (Minecraft, version 2 has the simplified GUI) is very cute. Combining programming with Minecraft is a pretty promising environment to learn programming.
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 tools 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 some 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 this discrepancy - doing dishes will always take effort, teaching a team Git gets easier but learning new always take great mental effort, I’ve sketched a way of thinking of effort using different currencies, like time, money cost, experience required and mental effort (mana). So I’m a pretty high level IT wizard who can do a lot at even 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 at most 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 only on your computer. Back around 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. 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 are now 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.