Friday, January 19, 2007

This is written in reaction to the links Digg.com: The Evolution of a Web Developer/Designer, The Evolution of a Web Developer/Designer, 10 CSS Tips from a Professional CSS Front-End Architect and The Evolution of a Programmer.

I was 14 years old 40 years and three days ago and IBM had a "markup language" called RUNOFF that looked remarkably like HTML. I was surprised that I got use out of one of its grandchildren "RNF" on the CDC 6000 "Cyber"-series 720, piping the 128-character ASCII out of its `scientific' 64-character set over its network operating system to an i8086 IBM PC as late as 1982.

I enjoyed the articles: The dugg one was funny and the one that inspired it was informative within the context of time, place and environment. We've been struggling with this portability problem since we tried to figure out whether to put ioports in high or low core, which pins on a plug should be grounded and how to synchronize our clocks. Completely portable solutions ain't gonna happen: As soon as two people agree, a third will rewrite the code and a fourth will reconfigure the hardware. Portability is one of those lofty goals to which we aspire but at which we should never really expect to arrive. I think it was in the 60s that the ACM published an article on whether we should hold machine architecture constant so that all languages could aim at producing code for the same target or rather have different kinds of machines that use standardized languages. I think we finally decided on varying everything and learning to deal with it.

There are so many aspects to this issue that I'm all over the road on it. I think "Hello World!" should be rewritten because as it stands, it's an insult to the student. If you can't get assimilate more than "shift a character string into the standard output stream" in your first C++ lesson, then maybe you shouldn't be studying programming. When I tutored/monitored/consulted in school, the program that I saw entirely too much was:

10 FOR I=1 TO 100



40 END

I think that nonsense was something that we started in my generation to alleviate "computer fear" -- a disease that seems to have been eradicated entirely. You have to remember that, in those days, Joe Public hadn't seen any real computers, only Hollywood mockups that inevitably encountered a logic error and burst into flames. You put that together with the fact that any computer that would run a program that your average Joe could actually write had an owner who stood over his/seldom-her million-dollar machine with a shotgun, and nerd armies guarded the doors day and night intimidating everyone with technospeak, and it translates to people fleeing in fear at the mere mention of a computer.

I may seem ancient to most readers, but I was the second computer generation, a working-class servant to the privileged grant-winners, and it fell upon us to help the third computer generation recover from the terrorism of million-dollar computer owners and the propaganda of mass-media sheep who feared that smart machines would soon enslave the human race and use them for batteries (cf. Matrix).

Predicting the future is a tricky business. Scripting may indeed replace the lion's share of commercial coding, but the winning language won't ressemble the gobbledygook that you have to write in order to get these primitive machines and amateur software (aka browsers) to behave. In order to use the expanded capabilities of our current processor-hardware complexes, we'll first have to cut the fluff and toys out of the operating systems and purge web-content of superflous gadgetry. Then you'll have enough processing power and memory left to parse a comprehensive scripting language that will still run in your lifetime.

I have a geeky side that still says, "Nifty!" when I see a cute bit of code or script, but my long-term perspective tells me that when you recount your software victories to your children, they'll look at you with a blank stare and ask, "Why in the name of Gates-Torvald would you want to do _that_?"

In the interim, we do have to keep the customer satisfied because it pays the bills until we write that perfect scripting language, but hopefully not in a scripting language, or any other form of interpreted code. If you are independently wealthy, you might still want to consider making yourself useful: While you're breathing the air, drinking the water and polluting the planet, you might want to provide some service so you'll be spared after the revolution.

Grammar does matter: As long as human communication is only at the most superficial layer of the lowest intellectual level, no designs will ever translate into implementations because no designer/developer will ever be able to relate a concept to any programmer/scripter, at least no concept that is complex enough to be interesting. I tire of engineers who come to me saying, "You go module he do include in that places important part when function him library no you no." Some of the foreign ones are almost as bad.

On my last major assignment near Washington, DC, the only literate engineer was from Iran and she ran rings around the rest of the staff. It was required of her because the rest of the staff understood little else. I tolerate improvised pidgin when I order a pizza, but if any designer/developer/programmer has expectations of earning more than minimum wage, it is not too much to ask for him/her to read and implement a design document or write one that can be understood without convening the security council to get a translation. Thick accents and variant pronunciations can be understood with effort, but ignorance and/or neglect of grammar renders a billion-dollar idea into cheap babbling.

Occupational titles are names that describe with what pursuits one is occupied: A job title could be a little more specific, but it should still tell what you do; it is the short form of the long position description, and as such, being shorter makes it necessarily more generic. Some people like to make up important-sounding titles and others like cute-sounding names, but I'm probably guilty of just telling you what my boss calls me; well, at least what he calls my job. To me, a "web architect" sounds like a cute name for a spider (the insect, not the crawler bot). "Web monkey" sounds funny, probably a derivation of "grease monkey" for automobile mechanic, but neither is really very descriptive, but probably quite clear to those in their respective positions. I once had a mechanic who was quite hairy, spent most of his time hunched over, lurching about and either swinging from here to there or perched awkwardly on the edge of bumpers and fenders, who was always covered in shiny black grease and flung handfuls of unidentifiable materials all about his garage. I can't say that I've seen web-browser routine writers behave in a similar way, but maybe they act differently when other-worlders are present.

I don't think it's actually possible to have a conclusion to this topic, maybe because I made the mistake of including all the mixed issues from the blogs, jokes and other types of link-sharing sites when a few of them were just meant to be simple ad-hominem attacks on people with differing positions on how to solve problems. Still, I've a right to my own fun, and it might help to look at the whole of the issue, with the disagreements piled in for good measure.

Post a Comment