to disagree with folks that are way smarter than me, but I do. This InfoWorld article does a good job recapping some comments from various Microsoft luminaries about development (see this article for a somewhat snarky review of the same comments by Randall Kennedy). I’m not going to say they are wrong, they are way smarter and many of them have been coding for far longer than I am. What I am is a bit disappointed, or maybe amused, depending on the particular comment. Not that they knock some Microsoft technologies – I do plenty of that myself – but just in how they view the overall idea of what it means to be a good programmer. I don’t mean awesome or expert or whatever. Just what it means to be a good programmer and what makes being a programmer fun. I’m not stating this the way I want to exactly, so if this still sounds a bit off it is because I decided to post this entry sooner rather than wait and noodle on how exactly I want to say something. I do that – I am a “get it done” type of person.
It may very well be that I am drawing some of my conclusions based on what I am inferring about the tone of the speaker. I was not at this particular panel, but I know some (not all) of the personalities involved. So let’s get to it and I will now begin to infer, put words into their mouth, and otherwise butcher the intent of what they may have actually been trying to say. ;-)
“I will fight you if you try to take away my text editor," said Don Box, a Microsoft distinguished engineer.
Don is certainly not the only person I have ever heard say this, but it always makes me roll my eyes. I know it is supposed to be some kind of “badge of honor” thing that you have been coding for so long you used to carry a hole punch in your back pocket so you could “hack code" on napkins. What I don’t like, and I am inferring here but it sure seems to be the case ANYTIME I have heard someone say this before, is that “you are not as good a coder as me because you use an IDE”. Really? In my case as compared to Don, that is certainly true, but I know some seriously kick ass coders who live in an IDE. Yes, yes – you may have a certain “Je ne sais quoi” when you fire up EMACS on stage, but come on. Does it really make all that much difference or is only because you have coded in that environment forever? Much the same comfort level as someone that cut their teeth on an IDE.
Graphical programming environments are usable when they are useless, but unusable when they would be useful," said Jeffrey Snover, another Microsoft distinguished engineer and creator of Microsoft's PowerShell scripting tool for Windows. "When there are five things on the screen, you can burp that out [in text]. But when there are 500 things, [graphical programming] is completely unusable. You zoom in and zoom out and you lose all context. I think it's just smokin' dope."
Hmmmmm, this one I think I have to disagree with for the most part. There is some element of truth, but I am not sure how having 500 pictures is any worse than having the corresponding 50,000 lines of code if I am approaching it for the first time? Yes, the interaction metaphor is very different and takes some getting used to, but it is unusable? I have seen some pretty complex Windows Workflow diagrams and besides wishing they had a bigger monitor, the developers that created them seemed to be able to understand and navigate the solution pretty darn well. Admittedly, they took great care to try and keep it from being a big pile of criss-crossing lines, but to totally discard it seems a bit over the top. Then again, Jeffrey is the creator of PowerShell so I am guessing his preferences lie strictly with black windows, Lucida Console fonts, and angle bracket prompts. Joke… for the most part. ;-)
While visual programming can be easier to learn and can help make developers more productive, it's also "easier to delude yourself," said Butler Lampson, a technical fellow at Microsoft. For instance, "no one can ever tell you what a UML diagram means."
I would really have liked to have heard/read more around “easier to delude yourself”. I think I know what Butler means and I would agree – visual programming can hide some things that can lead to a bad design. I totally agree with the UML diagram comment. I hate them. I have always hated them. To me, they have represented the secret handshake to the uber-nerd club. “Ohhhh, you don’t do UML, well you are not as cool as we are! Go away, you are but the buzzing of flies to me.” Whatever Poindexter… while you are busy drawing lines I will go get some real work done since after you are finished, your fancy diagrams will be looked at once and then officially labeled a “project artifact” and never looked at again. Ok, not that bad. But I still think 90% of the UML diagrams kicked out today are of no more value than some simple Visio diagrams that show the same thing much more clearly. Yes, yes... there is the whole idea of automated code generation based on UML. You keep thinking that if it helps you through your day.
Managed code runs inside a virtual machine. That makes it easier and faster to write and more secure, say proponents. Managed code also lets developers "perform above their level of competence," Snover said. "Managed code is like antilock brakes," he added. "You used to have to be a good driver on ice or you would die. Now you don't have to pump your brakes anymore."
Now this is the one that really chaps me. “Perform above their level of competence”???? What in the world does that mean? Again, I am assuming here, inferring potentially a great deal, but if the idea is that just because you don’t manipulate pointers in your code makes you some how less of a programmer, well, that is just boneheaded and elitist. I guess I am struggling to even understand the statement outside of it being a shot at developers that are some how deemed to be unworthy because they don’t manage memory and use a standard class library. If anything, managed code has opened the door to creativity and an explosion of useful applications because it does mask some of the pain and complexity of bare metal programming. Even the analogy is broken. No matter how you look at it, anti-lock brakes are a good thing. Sure, a super duper driver could handle the ice without them, but why would he/she want to since the chance of an error is still higher and the risk great? I could keep on beating on this one, but I’ll leave it at “I disagree” and move on.
Other programming gurus, such as Herb Sutter, lead designer of Microsoft's C++/CLI programming language, predict that writing code to run on bare metal may come back into fashion, as chipmakers find themselves unable to keep boosting processor speeds at current rates. "I think we have maybe five to 10 years left [with Moore's Law]," he said. "Optimizations will get very, very sexy again, when people realize how we pay for abstractions."
This is one I find very interesting and I can certainly follow the logic though I disagree that bare metal programming will become as mainstream as it used to be. The industry has never really “devolved”, at least as far as I can remember giving it 30 seconds of thought. It is hard to imagine programmers going back to bare metal and leaving behind what makes managed programming so attractive. For isolated cases, sure. I think parallel programming or some other kind of horizontal solution/architecture is the future once Moore’s law tails off. We’ll see I guess. Now, if Herb meant that we will see an incredible new set of tools that make writing native code as easier and as safe (or maybe almost as easy and almost as safe) as writing managed code, then I would be more apt to agree.