Reflection on My Reflection
It’s been a year since I took CS3216 at NUS.
It’s quite a fun course, working on web app technologies. (For context of those
who aren’t aware, almost all the coursework involves teamwork, and entry to the
course is by-way-of application.).
– I want to reflect on one of the blogposts I wrote; but to say “hey, what I wrote was great” is awful. The blogpost was warts-and-all, though, so let me reflect on it a bit..
(NOTE 2015/08/22: enough people I showed the post to liked it; I was told by a labmate I was famous for my blog [which I sincerely doubt], which I figure to mean the blogpost I’m hand-wringing over here..)
CS3216 the Elite
– Complaints over the exclusive nature of entry into CS3216 made their way
onto NUSWhispers; these complaints were met with contempt or ridicule.
(The worst of the complaints being a notion of “CS3216 is for smart/great kids;
if I get in I’ll be able to be smart/great.”. – I mean, if you tell students
“this class is for smart students, but you’re not invited”, what the fuck d’you
expect students to feel?).
The justification given by Prof Ben
Leong
seems to be along the lines of “CS3216/7 lets top-tier students come together
and make cool stuff”. This would make sense if every student in 3216/7 were
top-tier, and 3216/7 evinced a nature of incubating quality projects (i.e.
projects which live on after semester’s end.). – The latter doesn’t happen;
and I’ve reason to doubt that everyone who gets into 3216/7 is “top tier”..
Anyway, Beng’s post is much better. (Beng
is, somewhat famously, the creator of NUSMods, which is used by pretty much
every NUS student to plan their timetables.). Beng’s post points out he wasn’t
born amazing, and worked hard to get to where he wanted. But what I like most
about it, – and where Prof Leong’s post also agrees with this – is the idea
of doing work outside of school to improve one’s skill.
What I would add/emphasise, though, is that.., like. While “getting work done”, and being industrious are fine virtues, I reckon when it comes to programming, this should be a matter of interest: play around with C++11, because building things “natively” is fun, and so then you can be the guy who knows C++ on the team. Play around with some non-Java JVM language, like Scala or Clojure, because these things are more fun to program than Java. Learn one of Haskell or Erlang, because their not-C/Java/Python nature makes them fascinating to a student who otherwise won’t encounter them in coursework. Learn your way around a terminal, because working in a full-screen terminal looks cool-as-shit and like leet-hacker-skills. etc. etc. – I mean, obviously not all of these things; obviously not all at once.
Git
I wish everyone knew git better.
During 3216, I had a teammate who “didn’t know git”, and in a reflection
blogpost I complained about
that.
The truth of the matter is more complicated than the guy “didn’t know git”; his
incompetencies were far broader than that. And there were worse things than
that post complains about. But, anyway. (Said guy was in his final year of a
CS degree at this time. Managed to graduate with “honours”, also. And is now
working at a bank prob’ly earning much more money than me. I’m not sure what
the moral of the story is there.).
I hadn’t read that blogpost since writing it.
I was quite surprised to see it wasn’t as whiney as I recalled. (There’s still
a lot of whining; just not as much as I recalled.).
It’s not all bad. Roughly, it goes over:
The “renaissance” programmer: not just good at coding, but also at living “the good life”; improving himself, e.g. also in areas of communicating with others, and health/wellbeing.
Code examples of a top-tier 3216/7 student; including merge conflicts pushed to master. (This is what the blogpost was written for.).
‘How am I supposed to feel about that?’.
Tone
I’m split about the tone.
There’s some self-chastisement; but it’s all in terms of “I’m being a jerk” and “I wish I were a better man”, and not in terms of “if my team sucked, it’s because I didn’t take more responsibility”. – The whole “sorry to be a dick” and then being a dick is the lamest part. (On further thought, the bitterness here takes the sarcasm to another level.).
But I also admire some of the anger; there’s at least anger at the “3216 is for talented kids” pitch. (It’s awful for someone to kiss their own ass, right; but, hey, if I’m criticising myself, only fair for me to like some things, too.).
– Where I’m most ambivalent is about the anger shown at incompetency.
At worst, being angry at someone’s incompetence potentially has the
childishness of incredulity at someone not knowing something obscure. It’s
unhelpful to be angry at people for something they needn’t have known, and
unwelcoming. People inherently deserve to be treated with respect, even if
they’re incompetent.
On the other hand, it’s outright surprising that a final year Computer Science
student wouldn’t know (or wouldn’t even learn basic) Git/VCS, let alone someone
taking an ‘elite’ course. (NUS’ degree required taking software engineering
courses, which teach that, so this isn’t the case of “well, computer science
doesn’t necessarily involve programming.”.). – Moreover, in a course which
by its nature demands quickly learning new skills/concepts (web app dev for
people who haven’t done web app dev before), it’s disappointing, perhaps
disrespectful, to not learn basics of what you’re working on.
Frustration is at least understandable, in any case.
(EDIT 2015/08/22: I think it’s rare, really rare, to find people who can mediate situations really well. And confronting people is hard. What I wish in general is that it’d be much easier to applaud and admire mediation than to admire posts where someone gets angry at someone who does stupid shit.).
Excellence
What I didn’t remember from the blogpost was the notion of “pursuing
excellence”.
Not sure the term “renaissance programmer” is widely used, but then as now I
like the idea of someone who pursues excellence in understanding the tools of
their craft; pursues excellence in how to otherwise be efficient at their craft
(e.g. good health, good communication skills).
I think this is where I link to that Bruce Lee video, ‘Be Water My
Friend’.
I’m inclined to say anyone who spends a blogpost complaining about the incompetencies of their teammates has further to go to reach such excellence..
Probably also one man’s “excellence” is another person’s “competent”, I’d
guess. – With Vim, say, it’s a process of continually
learning about commands you’ve
not heard of before, and noting how to improve on that.
Surely a healthy, helpful attitude to have. :-)