The sixth guy interviewed in Coders at Work: Reflections on the Craft of Programming is Joe Armstrong the inventor of Erlang. Here is a small reflection on this chapter.
Armstrong says that in his time it was easier to be a junior programmer. All one had to do was just get out there and do it. There was not much choice if any. Today we have to choose from dozens of languages, frameworks, not to mention different opearing systems. That choice can be paralyzing. Some people even get stuck at that level and never really start.
Another difference he talks about is the ability of understand your system from top to bottom. Systems grew humongous and you cannot hold them in your head, you cannot even understand them all. Personally I’d add one thing here. There is the interview question about what happens when you type google.com and hit enter. You can check out this GitHub repository about it. Embarrassingly lot of things go on, when you type google.com and hit enter.
Armstrong claims that the thing that really hasn’t worked in the last couple of decades it’s software reuse. This is true especially for object-oriented languages. To re-use his example, while you wanted to have a banana, usually you end with a gorilla holding the banana plus the entire jungle around. It’s because of bad design not taking into account all the environment. So software reuse is much easier in functional language. Same input, same output. Always. If you have a function, you can reuse it everywhere no matter what.
He is not the first programmer in this book who speaks about the wonderful thing of programming in flow. When I read this, I always think about Uncle Bob who says in his book Clean coder that you must avoid programming in flow because it leads to unconscious programming and to nasty bugs. Still, I tend to agree with those who prefer program in flow.
He is also not the first stating his dislike on C++. He prefers small and simple languages. C++ is definitely not anything like that, it’s just too complicated.
About pair programming he says that it’s really good in two siuations:
- when the gap in knowledge is huge, then it’s really useful.
- or when the abilities are rather similar and then it’s fun.
He didn’t specificall talked about the length or structure of an ideal workday, but at point he mentioned that if you can spend four hours a day really thinking hard, that’s already a good day’s work. Sounds really interesting in the nine ot five environment, while we are constantly talking about unmet deadlines and on the other hand the necessity of shorter work days.
I’d like to finish with what he said about the importance of continuos learning. Hamming said, “I always spend a day a week learning new stuff. That means I spend 20 percent more of my time than my colleagues learning new stuff. Now 20 percent at compound interest means that after four and a half years I will know twice as much as them. And because of compound interest, this 20 percent extra, one day a week, after five years I will know three times as much,” or whatever the figures are. As armstrong does reseach, he spends more like 40 percent of his time on learning, think about new things and he’s done that for decades. He really feels that knows that more when is invited to a problem. We should all do the same, invest in ourselves and learn to be on top of our field.