Because we did the same

Did you ever look at something that made you pause a moment and think “what the hell was that?” If your answer is no, please stop reading here. You do not belong in my target audience.

Something may elicit such a response in two cases. Either it is extremely good or extremely bad, good and bad being defined subjectively. Mediocrity doesn’t stand out from the crowd. It is the extremes that demand attention. It is thus extremes that I am interested in.

This is my personal rant. I was asked to do a shitty job, and I can not escape it because it is a part of a core course, which needs to be completed for me to obtain my degree, and I need my degree. Not really. People think I need a degree, and people think it reflects my competence, which I assure you it can not. Anyone who thinks GPA and certifications mean anything more than a belief in the system, is delusive. Back to the point. When I requested that I be allowed to do the same job in an alternate way, it was denied. I will now detail the incident and my thoughts on it. Feel free to abandon this post and move on if that doesn’t sound exciting.

What happened?

I am undertaking a course titled ‘Software Lab’, which requires me to work on one assignment per week. This week, the problem statement is to make a Ubuntu app that displays weather information. So far so good. I am required to learn Tcl/Tk, and no, GTK/QT are not allowed. I need to version control with cvs, and no, git/hg are not allowed. I need to use a database to store last 30 days’ weather information, and it needs to be mysql. It is actually laughable to require RDBMS for such trivial task, where a csv sheet does the job.

Why am I angry with this?

A new set of tools every week demands my time. I have to postpone a lot of my tasks to make space for learning them. (Actually until this week, I was teaching people, since I was already well versed with the tools.) When I invest time, I expect them to be of use.

  • I will not program ever in TCL/Tk after this assignment. Because I know GTK and QT, and they are far superior for creating a GUI. Also I am not a Tcl fan boy who loves the weakly typed dynamic language with everything being a string.
  • I will never use cvs again, because I work primarily with git, it does everything I need, and hg can handle those few exotic cases where git doesn’t quite fit in. Cvs sucks.

To most of my classmates, a 2 credit course demanding entire week, every week is unfair, and has severe effects on other courses. For me, having to work with outdated tools is the bigger problem. If you are a developer, you should probably be able to understand why.

I requested the teaching assistant (TA) and he refused any alternatives. The professor-in-charge says if the TA is familiar with something, it can be used. And the TAs draw a blank on hearing RDBMS, DVCS, git, mercurial, Gtk, QT, or pretty much anything under the sun. I will label them illiterate in programming. When one of my friends commented the alternatives are better, so why can’t they be used, I hear the beautiful reply that prompted this post.

We did this course this way. You have to do the same.

Wait, let’s back up. When was the last time you saw a developer choosing Tk or cvs out of his/her own will, given the alternatives? Probably a decade has passed since such an event happened. And so, atleast since a decade, while the real technology has progressed much, the academic machinery has preserved its notion of what is to be taught, unscathed, to the point where it diverged from what is usable in reality to a horrible extent.

Thanks for reading this far.

This entire article can be distilled into this. Classrooms and labs must do a reality check of what is relevant, and must incorporate those changes into the curriculum, and this must be a continuous process. Teaching assistants must be trained well. And get some literate folks in there, please!

You may suggest that I explain the situation to the professor. I was hoping I could do that, but today evening while I was in a meeting with some other professor, the entire situation worsened, and I do not think I would be able to convey my message now. I am still unaware of the discussion that happened between my friends and the professor, but it must have hinged on the course demanding too much of their time, as it was decided that the relevant links will be provided a week early, and the actual coding has to be done in the four hours allotted to the lab. It definitely wasn’t the right approach.

Screw everyone, because that means the lab starts at 1 and I can not have lunch that day. The problem remains unsolved. And screw everyone again, because the information is being as abstract as it can get. “The next week’s work will require Object Oriented Programming in C++/Java.” Along with links to C++/Java tutorials probably grabbed off the first page on Google. Essentially I see zero profit and a net loss.

Last week required us to do a multi threaded implementation of matching two strings. In shell and C. If the aim is to frustrate people like me, job well done. But if it is something that was designed to teach multi threading, give a problem statement that makes sense. Multi threaded search does not make any sense when the input sizes are small, as in less than 10 characters. It may make sense in the case of a short string being searched inside a very long one. Evaluation plays an important role. If I see evaluation that does not reward work, that doesn’t even make sense because essentially the TAs are illiterate, I feel justified in losing interest in any learning opportunity that the course may provide. I am a normal human being ape, and I am affected by these.

There is a reason I am beginning to consider any parent who wants to send their kid to school, mentally retarded. More on that later. If you are offended by any of the above statements, you are welcome. I don’t give a shit.