Running the show: A day in the life

We all know most TV is pretty banal, but every now and then something comes along that provides insight, makes you think. So if you ever wondered what it’s really like to be the boss, you need to watch the latest episode of House. They’ve done an excellent job (based on my experience, anyway) capturing the reality of being in charge. Everyone looks to you to fix problems they can’t handle, and everything that goes wrong is ultimately your fault. It also gets really lonely at times. If you’re one of those people who think that the boss just sits at his/her desk and collects a big paycheck, this is a must-see.

The show’s writers and producers get extra bonus points from me for taking on the issue of healthcare, and having the stones to come right and say, “This is a business, and we need to make money.” They even couch the message in a scenario that most people should be able to appreciate from both sides. Very timely given all the discourse surrounding healthcare reform.

44 minutes, well worth it.


Jeff Atwood still wrong about PHP

Jeff Atwood’s latest post on Coding Horror provides great insight into the history and mindset of one of the Computer Science greats, Alan Kay. It’s a good read for any computer professional looking to delve further into the advances that Kay worked on.

Unfortunately, Jeff has a pretty strong distaste of PHP, and blindly jumps on a perceived opportunity to back up his case. He cites an ACM Queue article where Kay discusses why software development does not happen faster. Here’s the important section that Atwood quoted. Bolding is Atwood’s emphasis:

Let’s say the adoption of programming languages has very often been somewhat accidental, and the emphasis has very often been on how easy it is to implement the programming language rather than on its actual merits and features. For instance, Basic would never have surfaced because there was always a language better than Basic for that purpose. That language was Joss, which predated Basic and was beautiful. But Basic happened to be on a GE timesharing system that was done by Dartmouth, and when GE decided to franchise that, it started spreading Basic around just because it was there, not because it had any intrinsic merits whatsoever.

He follows his citation with this comment:

Any similarity between the above and PHP is, I’m sure, completely coincidental. That sound you’re hearing is just a little bit of history repeating.

His link here goes to an earlier post where he lambastes PHP for, well, existing really. I took issue with the post at the time, finding several glaring holes in his logic and generally disagreeing with the premise (obviously). I replied in the comments (look for my name), and expounded further in a rebuttal post on my own site. I didn’t let him get away with unfounded arguments then, and I’m not going to now.

In the ACM Queue article, Alan Kay discusses the evolution of programming languages. He and his colleagues expected the next big leap in programming language structure to occur somewhere around 1984, with the introduction of a new generation of programmers. It never happened — to Kay’s satisfaction, anyway — and he believes that commercial software development doomed this advancement, and has stagnated the evolution of programming theory. This leads to Jeff’s quote and PHP quip.

Two problems here. First, Kay was discussing evolutionary leaps, not the quality of the current crop. Kay doesn’t know how language theory will evolve, he’s waiting for someone to come along with the next bright idea (otherwise he would have done it, duh). Labeling any current language as subpar simply because someone theorizes “we can do better” is complete non-sequitor. I believe Kay knows this and his words in the article back it up.

To put it another way, using Atwood’s logic, wouldn’t VB.NET would fall into the same category of failure? Kay may not be worshiping at the altar of PHP, but I don’t see him anywhere near Microsoft’s temple either.

Second, PHP is successful because of its merits, not in spite of their lacking. Jeff needs to read the Wikipedia article on PHP. The very first paragraph on the page reads:

PHP originally stood for Personal Home Page. It began in 1994 as a set of Common Gateway Interface binaries written in the C programming language by the Danish/Greenlandic programmer Rasmus Lerdorf. Lerdorf initially created these Personal Home Page Tools to replace a small set of Perl scripts he had been using to maintain his personal homepage. The tools were used to perform tasks such as displaying his résumé and recording how much traffic his page was receiving. He combined these binaries with his Form Interpreter to create PHP/FI, which had more functionality. PHP/FI included a larger implementation for the C programming language and could communicate with databases, enabling the building of simple, dynamic web applications. Lerdorf released PHP publicly on June 8, 1995 to accelerate bug location and improve the code. This release was named PHP version 2 and already had the basic functionality that PHP has today. This included Perl-like variables, form handling, and the ability to embed HTML. The syntax was similar to Perl but was more limited, simpler, and less consistent.

PHP is 100% grass-roots success, starting out as one guy’s collection of useful tools for building websites. I refuse to believe that, in this age of abundant choice, all these programmers picked up PHP because it was “easy.” The numbers are just too big, features and power must enter into the equation at some point.

Nonetheless, Atwood’s application of Kay’s quote would lead you to believe that PHP exists because Zend Technologies pushed the language financially, just as GE backed BASIC. The truth is exactly the opposite: Zend Technologies exists because of PHP’s overwhelming success. Coming from a hard core VB.NET programmer, I find the insinuation here a little insulting; Zend Technologies is hardly MS Borg.

When it comes to having a discussion about programming philosophy, I wouldn’t even put myself in the room with Kay. I don’t know enough on programming language evolution to even join the discussion. Atwood, on the other hand, gets too close to the fire and gets burned. He erroneously applies Kay’s argument to his own beliefs which, when scrutinized, deflate much like the previous one.

This is the second time now Jeff has taken a unfounded shot at PHP. The complete lack of substance behind his claims make him look like nothing more than your average “my language is better than yours” fan boy. I could ignore it, but his audience is large enough to effect real influence. So like anyone else in a position of power, he must be called on the outlandish claims.

I read your blog all the time, Jeff, I know you can do better than this.


Learning vs getting it done

In an email conversation the other day about extending PHP at the core level, I added the following after providing some direction:

Learning more always improves your ability to learn, which is the secret key to being a great dev. Knowing how to learn and absorb new information quickly will keep you lightyears ahead of your colleagues.

However, assuming you ever have a specific goal in mind, be sure to ask yourself if it’s necessary to get so nitty-gritty to accomplish your task? You’ll often see younger programmers attempting the coding equivalent of an Olympic gymnastic floor routine instead of just walking to the other end of the mat.

Are you playing around with some new coding concept just to see if you can figure it out, while real work sits by the wayside? There’s a big difference between academic programming, done for the sake of better understanding, and code which is written to accomplish a real task in a real scenario.

Aside from the obvious potential for wasting time, academic programming often results in a far more complicated solution. A straight line is always the shortest distance between two points. Just get the job done; you’ll have less stress and look more efficient to your superiors.

Understanding the distinction between academic code, and practical coding solutions is key to being a great programmer.

Update: Found a quote that conveys a similar idea, and does so far more eloquently than I could.

Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defense against complexity.
—David Gelernter, Machine Beauty: Elegance and the Heart of Technology