This is the 44th episode of the StackOverflow podcast, where Joel and Jeff discuss the enduring influence of C, the questionable value of the title "Software Architect", and the evolution of Java.
Joel brings the YouTube video Write it in C to our attention. "Pascal won't quite cut it, write in C." Did you know that there's a new version of C++ on the horizon, C++0x? It even has its own tag on Stack Overflow.
Speaking of C, Joel had lunch (and just guest-taught a class at Princeton for) Brian Kernighan. Brian is of course the co-author of the classic K&R book, and the creator of the Awk language. And his second favorite language is Visual Basic, surprisingly.
One C design decision I agree with: using carriage return as your programming line terminator is not a good idea. Having an explicit line ending character like semicolon gives you so much more flexibility, and is far less awkward than weird line continuation characters.
Extension methods in C# are a poor man's way of extending the underlying language.
One new feature in C# 4.0 is named parameter arguments. Joel notes that Excel's VBA implementation went through this same evolution, and it can potentially mask problems, like "why the heck do we have a function with 7 parameters in the first place?"
We implemented the fantastic open-source Cacti tool to graph how much bandwidth and CPU time we're using on our servers. Our ISP does burstable billing at the 95th percentile, and this graph is built into Cacti. Right now we're doing about 750 KB/sec or 6 megabits/sec under those terms, which is (unfortunately) more than we agreed on with our ISP. This throughput number is 99% GZIP compressed text.
Remember Alexa? They're still around. It is sort of a mystery how sites like Alexa, Compete, etcetera can infer web traffic for any random website without access to the webserver's logfiles. It's essentially client sampling, but the accuracy of this approach is anyone's guess.
Joel's classic article on unnecessary choice in software reminds us how customization is a double-edged sword. We've resisted a lot of per-user customization options on Stack Overflow for similar reasons.
Joel and I both are unsure that the title "Software Architect" is a good one. We're leaning towards it being almost.. a net negative. "It's almost disrespectful of the actual architects who work in construction, to use that word to refer to some kind of high-falutin' big-picture UML-drawing code monkey."
To the extent that the architect is not in the trenches with you doing the work, they don't have enough context, and will inevitably make the wrong decisions.
If we had the power, we'd do away with the title "Architect". But if you're stuck with it -- and the architecture astronomy that it frequently engenders -- what is the proper role for a so-called Architect? They could work to connect disparate groups at large organizations, to provide context and reduce duplication for disparate groups that are working in isolation. It can be hard for groups working locally to see the context of the larger organization. But I traditionally think of this role as an evangelist and educator, not an architect.
The catch-22 of rekindling a nascent programming career is that.. good programmers can't stop programming. So if you can give up programming, it sort of almost means that you shouldn't be doing it anyway. This is Joel's tough love answer. Bottom line: if you want to be a programmer, get out there and start writing code.. yesterday.
Joel thinks that Java on the desktop is essentially dead. I don't necessarily disagree, but I think Java is still a fine choice on the server. In the context of history, it is an excellent replacement for C++ if you don't need to-the-metal performance. Joel has called Java "the new VB", or "the new COBOL".
The enterprisey and extra-verbose culture around Java is a bit problematic. Steve Yegge's pieces on this are quite famous and apt. Bear in mind, Steve is a guy who has written hundreds of thousands of lines of Java code, and he essentially concluded that size is the enemy.
We answered the following listener questions on this podcast:
Brad from Denver: "How do you get rid of incompetent architects?"
Ben Younkins: "I graduated with a CS degree, but I haven't been working as a programmer for 10 years. I'd like to get back into it. How should I do this?"
Our favorite Stack Overflow qustions this week are:
How accurate are the technical arguments in JWZ's ten-year-old "java sucks" article with today's Java? Jamie Zawinski is a fairly notorious programmer, and these are valid concerns. How do languages evolve, and how has Java evolved in the last 10 years? Is it better? Worse? The same?
If you'd like to submit a question to be answered in our next episode, record an audio file (90 seconds or less) and mail it to firstname.lastname@example.org. You can record a question using nothing but a telephone and a web browser. We also have a dedicated phone number you can call to leave audio questions at 646-826-3879.
The transcript wiki for this episode is available for public editing.