A Rant on Coding and Quality
by Chris on Mar.27, 2007, under Rants
I am, as Char will no doubt agree, occasionally a bit on the negative side. This isn’t always a good thing; I need to learn to tone down my vitriol in situations in which it does not advance my needs, and in those in which it is not necessary or constructive.
There are times, however, that merit a vigorous negative response.
I’m taking two project courses in school this semester; Cmput 414, which is a graphics and multimedia course with a heavy algorithmic programming component, and Cmput 401, a software engineering course and the focus of this rant.
Software Engineering is, according to Wikipedia, “is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.” Among other things, it requires the application of good design practices to the development of code, and following beneficial design standards.
So, I have to ask, why is it that people taking this fucking course cannot do something as basic as grok that it is fundamentally bad practice to add public methods to hidden implementing classes instead of using the goddamned design?! I spent three days nailing down, and countless hours tuning up, the data model for our project application, only to have one of my fellow team members simply come along and, instead of reading the goddamned documentation, which I provided as a first step, add new hooks into the mechanism, just to get at the information in a way that is not only wrong, but disables some nice and (I thought) needed functionality.
I have spent the last hour looking over his code, marveling at the glorious unification of layers that, according to good design practices, should ever remain separate — the intermingling of UI code and logic that I’d already written elsewhere, better was a real high point for me.
Gods.
I cannot wait to get back to full time work with people who know more than I do, so that instead of raging at the pathetic efforts of people whose skills are not even up to the level of an academic programmer, I can instead find faults with my own approaches, be told that I’m doing it wrong, and learn how to do it better.
March 27th, 2007 on 3:16 pm
Software Engineering is taught by the department of Electrical and Computer Engineering, not Computing Science. Engineering is restricted to Engineers. You are taking a class on Computer Programming. Hope this helps.
March 27th, 2007 on 9:43 pm
Hahaha, the joys of mingling with mortals know no end.
Anyway, guess who’s getting paid money in exchange for programming services?
Go ahead, I dare ya…
And let it be known that the man continues to be damned, even though I’m forced to learn SQL all over again. But python’s turning out to be very pretty indeed. Glee!
March 28th, 2007 on 7:32 am
Oh, I feel for you, having to suffer the pains of lesser mortal’s work. Otherwise, I enjoyed your comments relating to how you did and looked at your own portion of the work. Keep it up.
March 28th, 2007 on 7:49 am
It’s not quite as primadonna-ish as it comes off, you know; I’ve had ample opportunity to see quality programming at work, to learn from it, and to adjust the way I do my own design and coding to live up to that standard. It’s frustrating to me not only that the people I work with don’t accomplish that, but also that the program does not teach it adequately. Code review is rarely a component of a course’s mark, which is a problem in and of itself, but it leads to this sort of long-term disability in peoples’ programming skills.
I’m less angry this morning than I was yesterday, which gives me a bit more perspective, but I still believe my fundamental assertion to be true; that the CS program is not adequately teaching development skill.
March 28th, 2007 on 9:40 pm
I suspect that it is because “development skill” is not the purpose of a CS education. At least, not in the CS education I underwent…
March 29th, 2007 on 7:05 am
You’re not completely wrong (
), I’ll grant, but as with so many types of research or scientific pursuits, what use is a computer scientist who cannot program? What use, an illiterate english professor? An innumerate maths prof?
You see where I’m going with this.
Programming is the expression of the science. In order to be able to properly explore the science, one must be able to express it. An inability to grasp the very concept of abstraction is an unacceptable failing in a computer scientist. An inability to use it is not far short of the same.
March 29th, 2007 on 12:34 pm
An inability to grasp the concept certainly is a failing, but this is not a function of the education. Rather, it is weakness in the individual concerned. You and I of all people understand that programming ability varies GREATLY across individuals, even ones that share our education.
There are good doctors and there are quacks with medical degrees. Programming is no different.