From mboxrd@z Thu Jan 1 00:00:00 1970 From: jon@fourwinds.com (Jon Steinhart) Date: Sat, 16 Sep 2017 12:12:46 -0700 Subject: [TUHS] Maintainability, Guilds, RMS, etc. all lumped into one In-Reply-To: References: <201709151910.v8FJAIuv025809@elf.torek.net> Message-ID: <201709161912.v8GJCkbS013082@darkstar.fourwinds.com> Well, here I go trying to be the voice of reason. Not my natural state :-) Can't see any good coming out of RMS bashing. I'm one of those who thinks that GNU/Linux is absurd; RMS had nothing to do with Linux. I can imagine that, like many of our peers, he has ego issues may feel slighted that Linus gets more media attention than he does. Maybe he would be happy if anything built with GNU tools would append a tag line equivalent to the bandwidth- wasting "sent from my iPhone" stuff on emails. All that aside, he has had a huge and positive influence with the GPL and by making many of the tools that we all depend on available for free. I remember that when I switched from SunOS to Solaris that Sun started charging for the C compiler and I was very happy to have gcc available. I would claim that the issues of maintainability, guilds or other standards for programmers, etc. is really a management issue. And it's exacerbated by what I have observed about management which is that it's not about managing any more. Since managers are theoretically responsible for programmers sensible things don't happen when the managers are not competent. Nothing says it more than the Chief Security Officer at Equifax being a music major with no relevant skills. What could possibly go wrong? Managers don't care about maintainability today, and I'm not sure that it would matter if they did. When I started working there was an expectation that one would look after one's employer's interests and the employer would look after yours. That's pretty much gone for a number of reasons. Few programmers are going to worry about maintainability when they expect to change jobs frequently. As an aside, one of the reasons why I chose to work for myself is that I got spoiled by having awesome management on my first job. I remember Hank Macdonald who I think was co-director of whatever branch of area 10 in which I was working at BTL pulling up a chair next to me at 3AM one late night/early morning and asking me how it was going. I told him great except for some problems with display flicker at which I was staring. He thought about it for about 30 seconds and said "I'll bet your delay constants are too big." He was right. I realized that he was a director because he had mastered everything that everyone under him was doing, not because he couldn't. All other managers that I've had since were Peter Principled. Oh, and under Hank I had Joe Condon as a supervisor which was another amazing experience. When I went to work at Tektronix I had an expectation that I'd spend my entire career there. Of course, shortly after I started the technical founder was replaced by an uneducated bean counter who looted the company. But, I remember a day when someone who sat near me celebrated ER (engineering release), which meant that his product went to manufacturing. A day or two later someone from manufacturing was sitting in the chair by his desk asking questions. This happened for a week or so and then that engineer's desk got moved down into manufacturing. I observed this and told myself that I would never let that happen to me. Another thing from Tek was that we supported products for ten years after ship. That made maintainability and reliability important. When someone makes a web page component that's going to be around for a few months at best it's hard to justify spending dollars on maintainability. Final thing on this thread: get used to it. As with any field, programming is a commodity item now. It's not a field populated primarily by people with PhDs. Think about the number of baristas who were hired as programmers during the .com boom. And the "everybody must learn to code in high school" movement is not about making more programmers like the ones on this list. It's about calling people programmers who don't even have the prerequisite skill of knowing how to coffee drinks. It's still a management problem because these people are being hired to do jobs for which they really don't have the skill. It's part of the hollowing out of America; we still have great sounding names for a lot of things that no longer really exist. Fortunately for people like me, companies often get in serious trouble and need someone who knows about bits and cycles and interrupts and propagation delay and so on. Good for the toy budget. I'll illustrate this with an emergency job that I did a few years ago. I was hired to get something working with a hard 3 week deadline where the person who had done the original work claimed that everything worked but it only worked for him; nobody else could get it to work. One of the things that I noticed was that the absolute maximum electrical values on one of the parts was being exceeded. Mentioned it to the CTO who looked at it and told me that she had looked at the circuit diagrams of the chips and wasn't worried. I responded with "I guess you've never worked at a company where you were responsible for warranty repairs." Turns out that she hadn't. On the software side, I replaced around 8,000 lines of undocumented code with about 300 lines including comments and whitespace that did the job. Probably less than 100 lines of actual code. I see this over and over with the "we'll just import packages and make library calls and call it programming" mentality. BTW, it's not just software. On this same project there was a problem internal to the Atmel SOC. Turns out that Atmel had just purchased a bunch of IP and glued it together on the chip and even they didn't know the particular detail that I needed. Took several months of escalation to finally get it resolved. Jon