Doesn’t Play Well With Others

Well, back from hibernation.  Seems like every once in a while I need to take a few months off.  And I have a need to break in the new keyboard I have.  That’s one little new thing in my life.  A month or so ago, my keyboard finally died.  I had spilled some liquid on it and it put up a brave fight for a few months, then one of the traces went out and some keys stopped responding

And normally, this would be a case of, just go get another, but I have been using the same keyboard model for, I don’t know, maybe 30 years?  And the problem is they don’t make them anymore.  I spent a little time researching a new brand and model to use, but broke down and searched harder for my life-long model.  Believe it or not, some charity shop had a few unopened packages of them.  I bought two and now I’m back in business.  Well, sort of.  These keys are really stiff and need broken in.  So, blog on.

So anyway, the thing that made me want to write a new post was about a side project.  I have a few side projects going right now.  One involves archiving older magazines with a new, fancy book scanner.  That’s a post for another day.  But another of the projects involved coding.  And it has turned into a once-and-done project, simply because I have to work with other people.  I didn’t think I’d have to, but that’s how it turned out, and that’s where I bow out.

The heart of the project was a conversion of some of the earliest published BASIC software programs to modern languages.  I feel that I am a pretty well-prepared person to do the conversion because I grew up with those programs, back when you needed line numbers and you didn’t have subroutines, only GOTO.  In addition, I enjoy teaching and helping new coders on their way.

So over a few hours, I converted a program from the old BASIC version to the new VB.NET version.  I felt I had done a good job.  I retained the procedural structure of the program, with only one subroutine for efficiency’s sake.  I documented the code for a beginner, to explain the why and the how of each element.  I checked in the code and it was approved.

A couple weeks later, I decided I’d convert another program, so I went back to the public repository to see what was left available.  In the process, I checked on the application I had converted.  To my surprise, it had recent edits by another user.  Ok, that’s fine, that’s what open source code is all about.  So I looked at the new code.  It wasn’t mine anymore.

The next developer restructured the entire application, putting everything into subroutines, renaming all my variables, even reversing the IF statements I used.  I was aghast.  And I was done. 

Later that night, I tried to come to terms with what happened and why I was so furious and what if anything I could do about it.

It boiled down to two things.  First, all my time was wasted.  There was little to none of my original code remaining, so I can’t say the next dev improved my code, they flat out replaced it.  If I had not done anything at all, the result would have been the same.  The same thing could happen with anything other conversion I may choose to add to that project, so why even bother?

Second, the code was written at maybe a 201 level, instead of my 101 level.  It was no longer a beginners program to learn from.  It was an end-of-course demonstration of everything you should have learned.  And this is the part that annoyed the hell out of me.  The new code had everything included except OOD (object-oriented design, which I would say is 301 level).  That’s way too much stuff for a first-timer to absorb.  It’s what would be termed "tone-deaf", or not understanding your audience.  For example, I had two variables.  The next dev changed that to an array with two elements, then used LINQ expressions .First() and .Last() to access the values.  Absolutely pointless except for illustrative purposes, and much too complex for a first-timer to grasp.

And that whole experience brought back a painful old memory when I tried to defend a particular coding style in a public forum and got viciously torn to shreds by all the other members for even considering anything but one single, approved method of doing it.  It literally drove me from the forum and I have never been back since.  Ironically, I just saw that forum mentioned by the same blogger that was running this conversion project.  Go figure.

So this is my position.  I am pissed off at people who think that everything must be constructed to the standards of some architect’s wet dream.  I’ve been in the professional world for decades and I can tell you, it’s not like that.  There’s some bright spots and there’s some rust.  And the people that I am pointing my middle finger to are the exact ones that are going to say, "It’s like that because of people like you!"  MAGA programmers, essentially.

But don’t get me wrong, I know code.  I know shit code, I know beginner code, I know unnecessarily over-engineered code.  I know which of these those people write.  And I can certainly appreciate well-written code, which I am sure they are capable of writing as well.  It’s the gatekeeping and exclusivity that are uncalled for.  Can I separate the art from the artist?  Nope.  People need to be more inclusive and welcoming instead of insulting, dismissive, and abusive.  And that’s not for just programmers.  That applies to everyone, everywhere.

Comments are closed.