It has been a while since a regular post series, so inspired by TheRegister's on call - and re-reading my own older "Rackmount Mistakes" stories I thought I'd share three true stories of embarrassment from my career; we're going to start with academic and go into my employment, we'll talk about times I was embarrassed, embarrassed myself or someone else embarrassed themselves.
And why am I doing this? Well, in the move from immaturity to now I believe a true part of blossoming as a software engineer has been to embrace ones own failures and not repeat them, and identify them in others and work around them, encouraging them to improve.
Unfortunately my first story can't say it improved me or the person whom embarrassed me... We spool the clock back to 1997. I was in the middle of my degree and I received a very worrying letter between two semesters, my exam results were on hold... Because of plagiarism.
This is presenting someone else's work as your own, I think I was and am a pretty decent software engineer, so I was a bit perplexed. What was the topic, Data Structures?
This was a (looking back on it) rather inane module in my degree's second year and revolved around our implementing out own versions of the classic data structures, so yes list, linked list, map, doubly linked list and so on. These were all really annoying things to write and 99% of sane people would today reach for the standard implementation of their chosen programming language than waste time writing their own. I was very much of that opinion and well aware that C++ was receiving the STL at the time I had zero interest in implementing these things.
Luckily in 1994 when I began programming in Pascal there were no such data structures in Pascal, indeed I had written my own TPU in Borland Turbo Pascal with several of them in; and with a little fandangling I had them ready to hand in for this rather insane idea of a C++ based module. Did doing this improve my programming? No, did it teach me much? No, it was all very old concepts and solved with code which was nearing four years old.
As you might image I didn't invest much in this project or module, I thought it would be an easy win. Little did I know it would derail my belief in my whole degree course.
None of this is my embarrassment, no the embarrassment comes from the lecturer who reviewed the code.
For we were always encouraged to talk, swap ideas, swap concepts, and heck swapping four year old code solving for a very publicly already solved problem seems no issue, so long as folks understand where to source or have sourced a solution to the project I see no issue here.
This is after all the ethos of open software and open discussion in academia.
Unfortunately the lecturers, well they were solving for closed source, they were comparing like for like solutions and coming up with plagiarism accusations.
And this is embarrassing. I look back at it and those lecturers, and they should have been embarrassed at the time and doubly so now. They systematically stopped the whole cohort wanting to walk and exchange ideas, stunting our peer-review and inter-group working methods. They picked on one of the strongest and most unique things about software and that was the concept of sharing it; and they should be ashamed.
How did they ascribe plagiarism? Well, in the midst of my code was a very strange function... Here's the pseudo code:
boolean IsEven (value)
begin
remove the 10,000's
remove the 1,000's
remove the 100's
remove the 10's
if ( equal 2 or 4 or 6 or 8 ) return true;
return false
end
This is clearly weird and very odd and very much the thinking of a 16 year old who has no idea how else to do what he's doing because the "%" operator crashed his then only machine a 486 SX2 as it had no floating point co processor and the compiler he was using had no controls to stop the instructions being issued and he had no idea.
Fast forward those years and they present this code to me, and my first words are "Where did you get that from?" And I told them exactly what this code did.
And you know what's more embarrassing? The lecturer just said "why not modulo by 2" instead of asking WHY.
This is my overwhelming memory of my degree, lecturers who didn't ask why you had come to a solution, they had their concept of what their solution was and woe betide you if yours differed because you were marked down. It was too much effort for them to think outside the box, too much effort to actually understand there was rhyme or reason in your solution. No you were the student, they the lecturer, you learned from them very much not the other way around.
Its embarrassing to think how much that course was worth and how wrong it was in a lot of places; the few very good lecturers were often marginalized, or they were young and yet to be broken in.