I am smiling a great smile. The smile of a man who f..ked with his car and didn’t break it. (Andy Weir, The Martian)
There’s supposedly a Russian saying that goes like “The morning is wiser than the evening”. Smart guys, these Russians. (Even though I’m posting this in the evening, I actually solved yesterday’s problem before 7:15 am today.)
I now have an (almost) working thing (this doesn’t mean complete by any means!) on my phone, and I tell you, this rocks. It turns out that Android is both easier and harder than I thought. Easier, since it turns out that with relatively few lines of code I can achieve quite nice results, and what’s more, these few lines of code are pretty comprehensible. Harder, since I make a lot of stupid mistakes along the way. And by “a lot” I mean a lot.
Why is that so? I have two theories. One is simple: I’m just too stupid to be an Android programmer. Needless to say, I don’t like this theory, but I have to consider it. I consider myself pretty experienced Emacs Lisp programmer. When I was at high school, I was quite fluent in Turbo Pascal. (I even made my own hypertext “browser” in Turbo Vision. Well, it wasn’t real hypertext, since the links were not associated with a particular place in the text, but with the article as a whole. But it worked like a charm. In case you never heard about Turbo Vision, well… you really lose something.)
But maybe Android is just more complicated than Emacs or Turbo Pascal? (Hint: I guess it is.) Still, I don’t think it’s too complicated for me. This conviction of mine is actually backed by some hard data. Certain facts assure me that I’m most probably above the median of the society with respect to math/computer skills. Also, after a few years of teaching CS students, I’m also pretty sure that I’m above the median of computer scientists.
Why it is then so that I make so many so idiotic mistakes (examples will follow shortly)? Here I also have some theory. I’m learning at least three things at once: Java, Android and Android Studio. My theory is that it’s not the difficulty of the subjects that kills my brain, but the cognitive load of a lot of new things at once that does. AFAIR, in one of the older segments of the Ludology podcast by Geoff Engelstein and Ryan Sturm, Geoff claimed that if a boardgame is too innovative (i.e., it introduces more than one novel concept), it will be too hard for the gamers. My situation seems similar to me.
On the plus side, this means that not only I err a lot, but also that I learn a lot. Each time I get something right, I ingrain some useful habit (like initializing my objects – arrrgh!). Each time I get something wrong, I have an experience to build upon (“hm, last time something like that happened was when I forgot do do this”).
Being a teacher, this naturally makes me wonder how I could pull something similar off in my classroom. If my students could learn at this pace and intensity, they would probably be able to pass the course I’m teaching this semester after one or two weeks, and not just “pass”, but pass with deep understanding and appreciation of the methods they have learned. This is definitely something I’d like to explore.
This post is already becoming quite long, so I realize that I’ll leave the technical side of things until tomorrow. (And I have something interesting to say in this department this time, at least if you’re a relative beginner like me!) For now, I’d like to finish with a few more thoughts on learning.
As I browse the blogs of the contestants, many people decided to embark on some technology they didn’t know earlier. This is understandable, a contest like this is a relatively safe opportunity to learn something you always wanted to learn but never had time. (I briefly considered choosing another project, like an app to automate work for a journal I work – basically something like a front-end to a VCS with some unique features which don’t make sense when you’re coding, but make a lot of sense when you are typesetting, copyediting and proofreading papers. But then I’d miss the chance to learn something really new!)
Of course, I can only follow a small minority of the blogs, but I noticed a certain pattern. A few of these beginners whose posts I read are mostly writing about setup, tools they’re going to use etc. I haven’t seen a single post about problems they run into. (Of course, I’m not saying there’s no such thing – just that I didn’t see it. But if there were a lot of them, I would probably notice!) Come on, guys (and gals). You really are smart enough not to make any mistakes? Everything works the first time? Seriously? And if not, why not write about the pitfalls, if only to warn others?
Let me make an important announcement now. If even one beginning adept of technology (Android or anything else), making silly mistakes one after another (as beginning adepts of almost anything almost inevitably do), stumbles upon my blog and reads it, and thinks something along the lines of: “hey, this guy doesn’t seem to be a complete moron, and yet he also did all these stupid things. Maybe there’s still a chance for me, too?”, I declare that I won the contest. Period.