Friday, December 7, 2012

Programmers have a right to be Grumpy!

Grumpy Werewolf coffee mug (Google Affiliate Ad)
Wouldn't you know it... I've had a blog on this domain since 2009 and now I find out that some guy, OK a pretty damn good programmer, has started writing books under that tag line of the "The Grumpy Programmer's Guide ...".

Oh well, you would think he and his publisher would try to be a bit more... polite. But on the other hand, there are a hell of a lot of grumpy, and even severely pissed off, programmers in the world. We have a right to be pissed off. The trouble is that we are too damn stubborn to fix the problems.

Of course, most of the problems stem from the sad fact that only programmers actually know what is involved in writing programs. One of my favorite examples of that occurred when I was working for Evans & Sutherland in the early 90s. They had been the premier computer graphics company in the world. But, they were on their way down...

The company decided to build a graphics workstation to compete with the machines made by SGI. Seemed like a good idea at the time. So we got the first motherboards and started testing them and they were very sloooow. There was of course a lot of discussion of the problem but no one seemed to understand what was going on.

We had truly great engineering management at the time. Our VP of engineering was Gary W. Hodgman of Sutherland-Hodgman clipping algorithm fame. Best damn engineering manager I ever had the pleasure to work for. We had weekly company wide meetings to discuss everything. At the weekly meeting the performance problem was a major topic. One of the god level EEs told us that the problem was with the software. The EEs had designed a memory interface optimized for Random Access to Memory.

"Everyone knows that programs access memory in a random pattern, that's why it is called Random Access Memory. But, when we trace the actual usage pattern, almost all memory accesses are sequential! This company has the weirdest programmers in the world. You guys have messed things up so badly that we get no value form the hard work we did to support RANDOM ACCESS!" 

(Note: OK, it was long time ago and the quotation is only approximate. You might notice I only give names of people I admire. Also, my use of the term "god level" hints at a cultural problem that the company had that is what really killed it. If you had the right adviser at the right graduate school you could do no wrong at E&S. You could waste money and time and destroy one project after another and be rewarded for it. You were at the "god level". The rest of us actually had to produce working products and working code. The rest of us weren't even second class citizens compared to the god level folks.)

Oh my...  The guy really was shouting at the end. There was an initial shocked silence. I broke the silence by asking the fellow if he was aware that instructions are normally fetched sequentially from RAM. The guy next to me asked if he was aware of the memory access pattern for pushing parameters on a stack. It went on like that for a few questions and then broke into general laughter. I remember one VP, the VP of whatever he wanted to be, nearly fell off his chair. That is when the poor godling EE's face really turned red. Gary cut off discussion and ordered a special meeting for immediately after the end of the big meeting to plan corrections to the design.

The next batch of motherboards worked just fine.

The key here is that even the ultra well educated and well paid engineers who were given the job of designing a computer did not actually know anything about software. They were making their decisions based on nonsense they had picked up off of the equivalent of the bathroom wall. They never bothered to walk to the other end of the building to ask if what they "knew" was correct. These were people with graduate degrees who had specialized in the electrical engineering of computers. The only purpose of a computer is to RUN SOFTWARE. But, in all their studies of computing hardware they had not bothered to learn anything about the actual purpose of the the machines they were learning to build.

The arrogance needed to back that level of willful ignorance is astonishing. These were guys who should have known better working for management who definitely should have known better. Trained by people who had to have known better.

But, what the heck, while I have several stories about absurdly arrogant EEs for every one I have about EEs I have at least 3 about software developers. We can be just as bad, if not worse.

Just a little? post script: A couple of weeks later I was walking down the hall carrying a phillips screw driver. I was stopped by one of the chip designers involved in the motherboard fiasco who said something like "Whoa, the scariest thing in the world, a software guy with a screw driver". I told him I knew how to use a screw driver. He said "Really, hows that?". I replied "Well it depends, but based on where you're standing right now I would just swing it up to about here" indicating the notch of his rib cage "then put my other hand behind it and drive straight on through the aorta". He laughed and said I was a funny guy as he stepped back.

The conversation progressed from there and at some point he said "Hey, I hear you're a pretty good programmer, how many lines of code can you write in a year?".

I looked at him and asked "How many square inches of silicon do you layout in a year?"

He started to explain to me that, of course, chip designers were not rated that way. He explained that if they were then they would design chips that were so large that they could not be fabricated.

It was like something out of a Sutra... He got this weird look on his face and then he was enlightened.

"Ohhh....." he said, "if the only thing that mattered about a programmer was how many lines of code you could write in a year then you would all write programs that are so large that no computer could run them. I smiled and started to walk down the hall. I felt I had made a real break through in Software guy Hardware guy relations.

I got about two steps when he caught up with me and said "No, seriously, what are you doing with that screw driver?"

The Pragmatic Programmer By Hunt, Andrew/ Thomas, David (Google Affiliate Ad)

2 comments:

  1. I remember that one.
    So what does a reliability engineer do. The shadow knows (and I sorta)

    ReplyDelete