Alarming News: I like Morgan Freeberg. A lot.
Anti-Idiotarian Rottweiler: We were following a trackback and thinking "hmmm... this is a bloody excellent post!", and then we realized that it was just part III of, well, three...Damn. I wish I'd written those.
Anti-Idiotarian Rottweiler: ...I just remembered that I found a new blog a short while ago, House of Eratosthenes, that I really like. I like his common sense approach and his curiosity when it comes to why people believe what they believe rather than just what they believe.
Brutally Honest: Morgan Freeberg is an intriguing guy...[he] asks great questions and answers others with style, flair, reason and wit. On the blogroll he goes. Make him a part of your regular blogospheric reading. I certainly will.
Brutally Honest: Morgan Freeberg is brilliant.
Common Sense Junction: Misha @ Anti-Idiotarian never ceases to amaze me. He keeps finding other good blogs. I went over to A.I. this morning for my daily Misha fix and he had found this guy named Morgan Freeberg in Fair Oaks, California, that has a blog, House of Eratosthenes. Freeberg says its "The Blog That Nobody Reads" but it may now become the blog that everybody reads.
Jaded Haven: Good God, Morgan, you cover a topic from front to back with a screwy thoroughness I find mind boggling. I'm in awe of your thought proccesses, my friend, you're an exceptional talent. You start by throwing in the kitchen sink, tie in someone's syphilitic uncle, bend around a rip tide of brilliance and bring it all home in a neat, diamond dripping package of an exceptionally readable moment of damn fine wordsmithing. I love reading you.
Mein Blogovault: Make "the Blog that No One Reads" one of your daily reads.
Philmon: When Morgan meanders, stick with him - he's got a point and it'll be worth it in the end. He's not a hit-and-run snarky quip kind of guy. The pieces all fall into place like tumblers in a lock and bang! He's opened a cognative door for you.
Rightlinx: Morgan at House of Eratosthenes is one of the best writers out there. I read him nearly every day because he manages to provide an interesting perspective, even though I don't always agree.
Poetic Justice: Cletus! Ah gots a laiv one fer yew...
I’ve been thinking about the very first job I ever had as a professional software developer. “Project management” was a distant dream, and it showed; there was a big room, with three desks, two salesmen with me sandwiched in between. That was unwise. But I learned a lot from seeing things from an unusual perspective. I remember one of the sales guys took to putting a sign on his desk that said “Nothing happens until the sale is made!” I’ve often wondered if that was some kind of turf-marking exercise. Certainly it is factual; there’s no arguing with it; on the other hand, could the techie guy not come back with something equally factual, like, “You haven’t got anything to sell until someone builds it”?
Here are the two viewpoints, duking it out quietly, under the surface. You have sales & marketing, which are essentially: Convincing people to do things they otherwise would not do. Yeah there’s a lot of stuff about pitches & relating to people & money changing hands, but that is essentially what it is. The other side of it is coding and engineering, designing tests, scientifically evaluating what the tests do & do not prove, managing the requirements and seeing to it that they are met. Making the miracles. Which all comes down to: Convincing not-people-things to do things they otherwise not do.
The subtle slugfest is nothing more complicated than — when you put it all together, what t’heck are we really doing here? Are we convincing the organics to do things they otherwise would not do, so we can get some funding together and use it to convince the non-organics to do things they otherwise would not do? Or, are we convincing the non-organics to do things, so we can put on what they called a “dog and pony show” and convince the organics to do something?
It is a cyclical mission, so both are valid. Since both are valid, that essentially resolves the conundrum…but not really…for we have to settle the matter of, who is the real catalyst. Which specialty, by its very existence, defines the reason everyone is bothering to show up. And which one is subordinate to the other, merely attending to it, bridging the final circuit so it can all go together and the cycles can continue.
It has been my observation that, since these two sides think in fundamentally different ways, once a practitioner becomes experienced in the one, he does not see himself as ever crossing the divide and making a personal success out of the other. And so, people become invested in the idea that their own domain is primary and the other is secondary. The hard evidence indicates only that both viewpoints are valid. It is quiet on which one emerges truly supreme over the other one.
Another observation I’ve been making: I recall in the early years there was a push on among desktop database developers to make their own scripting languages into dominant “real” computer languages, and “train” the software developers like me to use their tools. Their strategy was to get the market flooded with capable coders who were dedicated to their scripted languages, so that customers would feel a push to invest in such an environment so that it would be easier to hire the custom application developers. This, we were told, was to be to our financial advantage: We should envision ourselves as “The Boss,” and does the boss want to hire more or fewer sales people, does he want to hire more or fewer programmers. Well, obviously, the answer would be more to the first and fewer to the second — and if there’s one thing you want to avoid, you want to avoid being the guy that the boss wants whittled down. There’s a certain logic to it, but I’ve never put too much faith in that, and ultimately things didn’t pan out that way at all.
If there’s one thing you don’t want to be, it’s the guy that someone who is not the boss wants in greater abundance. Because if you can work on it for awhile and develop some real skills at it — you can come out on top, having a job the boss wants thinned down. But you cannot count on bringing such skills to the market if you’re crowded out. If you want to build up the kind of skill level that will net you success only if you’re leveraging it in an occupation that is momentarily exploding, but it would be inadequate to keep the paychecks coming in during the lean times, well, you’re not really bringing the kind of gusto you need to succeed anyhow.
I also remember, from that time, the push was toward libraries of reusable code. Stop paying these software developers to write the same code over and over again. Now, I’m not sure what happened to this. It’s given us a lot of technology that is still in active use, even heavy use, but it doesn’t seem to be leveraged toward that particular goal. I was being told by the database guys, over twenty years ago, that my whole livelihood was going to go away because nobody wanted to pay to have the same things built repeatedly. This has been about as successful a prediction as the paperless office. In fact, I would say even less so, given how tough it can be nowadays to find things like staplers, scotch tape, pens, erasers, et al.
This goal has always struck me as a sensible one, driven by an obvious and demonstrable business case. The engineers are not opposed to it at all, contrary to a belief that seems to have been prevalent on the sales side. Who wants to come up with five tests when you can prove the same thing with one? There’s a lot of human error factor involved in coordinating five tests you know. This is what “unit testing” is all about; and then when you make sure all these tested units fit together right, that leads to things like “system testing” and “integration testing.” This part of the effort has indeed matured and become more sophisticated and capable. But I see it isn’t commonplace for these development houses to do what I was told twenty years “The Boss” was going to do, which is, to look at all the first-time-coding projects necessary to make an entire new system really work, and really cut some huge swaths into it by means of leveraging recyclable code. People say “Is there a library we can get that will do something like that?” and they’re referring to something external. The vision, as I originally understood it, was to make the internals into libraries, to de-couple them from their maiden implementations.
You can do both, you know. You can make an internal module whose purpose in life is, “This is how XYZ company handles files” and another one whose purpose is “This is how XYZ company handles strings”. Then you take all these questions about “Doesn’t Boost do something like that?” and settle them within the internal libraries; use all these good things like DLLs and object-oriented design patterns to build breakwaters. Stop the rippling-through-the-entire-system. The ideal situation is, one design question comes up, by the time it is settled only one module has been changed. I say “ideal” because that’s a pretty tough vision to realize, but at the very least, the architectural effort should be going in that direction.
Just like an organizational chart, you know. Here’s a fuck-up…oh…well, that’s Tom’s territory. So here’s an action item for Tom, and Tom I guess has a headache he has to put right before the meeting next week. This is how software development should work. Someone takes on a bug, in order to resolve it has to change three or four things…same thing with the next bug, and the next bug, and the next, and the last one when it got fixed it broke a bunch of other things — that situation is a red flag that the architecture is not a good one. It isn’t sufficiently modular. Well, this is not exactly a thing of the past is it. Customers can pick up on it; they/we see it pretty much everywhere. We see it in our cable teevee subscriptions and our telephone service, and all kinds of other places. This suggests to me that values have changed. The vision is not being aggressively pursued.
I think the vision was thwarted when someone, somewhere, said something about there being no such thing as a bug-free program. In my estimation, this was not a helpful remark. We have “bug-free” equations, do we not? One and one make two; two and two make four. The bugs become an inevitability when the system achieves a certain level of complexity — and the system has become this complex because some module within, has become complex and therefore unmaintainable. Well, modules don’t have to be complex. Wasn’t Lotus 1-2-3 supposed to have been a bug-free, or nearly bug-free, “killer app”? Well, if it can be done one time it can be done anytime, right?
Here we get to a part that has always frustrated me. Software developers, these leaders of technological innovation, very often are pressured to engage in tribal thinking. No, nobody is going to make a case study out of 1-2-3 for good project management and coding practices; if it is a representative symbol of anything at all, it is of dead computer applications, and a whole bunch of user interface conventions that aren’t done that way anymore. So nobody is asking the question “Do I want my project’s pathway of success to look like where this case study went?” the answer to which would be emphatically yes in the case of the Lotus app. They tend to ask the question, “Do I want my project to end up where this case study is right now?” Which leads to everyone coding essentially the same thing.
That is the exact opposite of technology: Everyone laboring to do things more-or-less the same way that some other guy would do it.
President Obama says we can recapture our country’s technology stature by making sure we have more people graduating from college. In the era of American history over which He presides, we seem to be caught in an endless loop of confusing quantity for quality: Clear skies and fair seas are ahead for you, if you’re doing everything the same way the other guy is already doing it. That seems to be the mindset, and I predict it will fail more often than it succeeds.
Leave a Reply
You must be logged in to post a comment.