Tom Archer is an author, Visual C++/C# consultant and was the site administrator
for CodeGuru for 18 months. Tom worked with Zafir Anjum and I for many months
before the sale of CodeGuru to EarthWeb, so has been in the unique position to
witness CodeGuru evolve from a volunteer run community site to EarthWeb's flagship C++
site, and then be passed down to Internet.com along with many other of EarthWeb's former
Tom has worked with companies such as IBM, AT&T,
Equifax and Peachtree Software and lists one of his proudest accomplishments as being the
lead programmer on two award winning applications (at IBM and Peachtree). He has lived all
over the world, and is currently based in Atlanta, Georgia.
Tom has recently left CodeGuru to pursue his writing, training and consulting interests,
so I figured it was a great time to have a chat with him about the past, present and future.
If you ever wonder just how geeky a couple of web admins can get, this entire interview was
conducted using XML over email. Each iteration of the interview saw us try and out-do the other
in terms of XML style and presentation and it was only when I found myself spending an hour debugging
an XSL/T page did I come to realise that once a geek, always a geek.
CodeGuru has been through some amazing changes since we first worked on it
all those years ago. Can you describe how the various changes affected the
overall atmosphere and goals for the site.
When Zafir first started CodeGuru, it was one of the first developer
sites on the Web. It's aim was clearly stated. It was a site run
by developers who freely donated their time in order to help other
developers. However, it didn't take long for corporations and
entrepreneurial types to figure out that with the traffic these sites
were getting, there was money to be made. Many of us incorrectly
thought that the influx of corporate money would lead to better
sites. Unfortunately, it didn't work out that way. Most corporations
that purchased the more popular sites came in with their bureaucracy and
attempted to run the sites as they did their previous interests.
Therefore, the focus changed from one of "let's create this really
cool code repository" to "how can we make more
money from this". It's a subtle distinction since you would think that one would
help the other. However, anyone that has any business experience knows that
once you go from a product (or service)-centric approach to one that is more
focused on advertisers and the bottom-line, it's the consumers that lose out
in the end.
Can you give some examples of where you saw this happening on CodeGuru?
I'll give just one or we could talk all day on this. Shortly after
EarthWeb purchased CodeGuru and many other sites, they decided to do a
massive redesign of all the sites so that they would integrate more
seamlessly. Certainly a decent idea. However, the problem was in the
day-to-day running of the sites. People (all non-programmers) who never
used any of the sites couldn't understand why people such as myself
didn't want to completely stop posting content and updating the site to
spend 3-6 months updating spreadsheets and Word documents and attending
meetings. They just didn't get the concept that if we stopped posting
content there wouldn't be any customers for this new redesigned site!
I can't tell you how many times I came close to being fired because I was
trying (as best I could) to keep the site fresh. That's why it irks
me when people say thinks like "Oh. CodeGuru is really stale". Hell, there
wouldn't have been *any* content without me fighting management and
posting it. This is what I mean when I say that most of these corporation put
their own bureaucracy and rules ahead of the actual product and customers. And
by the way, I'm not just picking on EarthWeb. My very favourite site used
to be Experts-Exchange - really cool knowledgebase-like site run by a family.
However, they finally sold a large part of the site to a big company that
now runs the site. Needless to say, the site is having the same problems
that CodeGuru ran into with regards to the hardware and software problems and
bad customer service.
Many people think that running a community site for developers is the best
job in the world. Is it?
Running a developer site certainly has its advantages such as working from
home and not being tied to "office hours". However, its definitely a labour of love.
In other words, those of us that run sites certainly don't do it because there's
any money in it. We do it because we enjoy helping others. Best job? No, not really.
Too much maintenance and not enough programming. I think the best gig is a
combination of writing books and consulting. That way, I'm still working my
own schedule, I continue to help others and yet I'm programming most of the time.
Even so, you started a new site as soon as you left CodeGuru.
Yeah, but TheCodeChannel.com doesn't belong to any corporation. It's certainly
not meant to be a competitor to any site. As I've said from the beginning, this is
going to be a site that is mainly a hobby of mine and a few friends. We're not
looking to become millionaires off it. It's basically returning to the roots
of CodeGuru where we are simply helping others through the site without the
need or desire for banners ads or corporate funding.
With hindsight, would you do it all again?
Absolutely. I've met many talented programmers and just really great people
running CodeGuru. I wouldn't change a thing if I could go back and do it all
Do you see the online developer community maturing as a whole with people
more willing to help each other, or do you feel in general that people on
the net are becoming more demanding?
While trying not to sound negative, I would definitely say it's
the latter. The simple fact is that a couple of years ago, we all
lived this Utopian-like existence where sites like CodeGuru were
created with the single goal of helping each other out. However,
at this point, people have seen how much a Zafir sold the site for
and that has lead to a very competitive (and sometimes very ugly)
environment. However, I'm not just talking about other Web sit owners.
While at CodeGuru, we had people volunteering to help all the time.
That never happens any more. Everyone wants to be paid. In addition,
many (not all) people have stopped being appreciative and have come to
expect perfection from Web sites and the people that run them. I guess
what I'm saying is that over the past couple of years, I've seen a
increase in the lack of appreciation to those that freely donate their
time to help others.
What do you see as the future of developer Web sites?
I think that the people that make use of sites need to be very careful. There is so much meanness
going around between the users of the various sites that many people who simply do this to help others are
being turned off and dumping their sites. That in combination with the free-fall in advertising revenue
is leading us directly down a path where free sites will one day be a thing of the past. Just look at
sites like DevX and ASPToday. They started out free and are now subscription-based. It's a simple formula.
Many individuals are tired of dealing with unappreciative people when they stay up to 3am every night just
to help others out. Therefore, we're getting to a point where only companies are running the sites with
a decent amount of content. If users are going to expect a professional site with tons of content and
other niceties (discussion board, chats, interviews, etc.), then these companies are going to have to hire
more and more people to run the sites. Therefore, with ad revenue down and costs up, the only way for
companies to make these sites profitable is to recoup that money is via subscriptions, products and services.
NET is front and centre at the moment, but how do you see .NET affecting the average developer, and will .NET cause developer sites to change the way they operate?
Honestly, I truly don't think that most developers know or care about .NET. Microsoft has changed directions so many times in the past few years that most developers are going to take a "wait and see" attitude. It's going to be Microsoft's responsibility to illustrate exactly why developers should care about .NET and I don't believe they've done a good job of doing that so far.
Are there any significant positives or negatives of .NET that stand out for you?
Having been involved in several large, distributed applications, the positives that I personally applaud are language interoperability, a single class library and easier versioning and deployment.
What about for C++ developers in particular?
As mentioned before, I think that many C++ developers are going to hold out until they see some tangible reasons for switching. Let's face it. How many people would even consider using C today instead of C++? However, I remember when C++ first came out and most people were like "So what? I can do the same thing with structs!" or "I have gotten this far without it. I don't need it." For some reason, there's always that initial rejection of anything new. However, .NET is simply too good not to catch on sooner or later.
What about you personally? How do you feel about .NET?
I'm infatuated with it and its promise for the future. As you know (probably better than me), you simply can't beat what they've done with ASP.NET. I absolutely love the CLR and the interfaces it provides. It's definitely going to be fun the next few years.
How do you feel about C#? It's stregnths? Its weaknesses?
According to Larry Tesler's law of Conservation of Complexity, you can not reduce the complexity of a given task beyond a certain point. Once you've reached that point, you can only shift the burden around. This rule holds especially true for programming languages. Programming languages are about as simple as they're going to
get and still be usable in terms of creating professional applications that meet
the needs of today's users.
However, what the designers of C# did was to move much of the complexity of writing code from the client (class consumers) to the server (classes). Examples of this are operator overloading, interfaces, delegates, indexers, properties and user-defined conversions. The common thread that ties all these features together is that they all make client code easier and more intuitive to write. However, they also put more of a burden on the class writer. In my humble opinion this is a great design since, if you're writing your object-oriented code "correctly", the client code will constitute the majority of your code. Therefore, my answers are that Yes, I truly enjoy the design of C# and yes it will make you a more productive programmer overall.
What is your pet peeve about .NET?
My pet peeve is with the compiler teams. There's an on-going debate as to what languages will implement what parts of the CLR. I'm with the CLR team in terms of letting each language have access to the same things. After all, that was the promise of the CLR to begin with. Don't get me wrong. Each language is still going to have access to the majority of the same functionality. However, check out the dotnet mailing list and you'll see that the VB guys definitely believe they're getting the shaft.
And your pet love?
The BCL, no doubt. As one microcosmic example, take a look at IEnumerable
and how it enables you to provide enumeration capabilities for any class!
I love that! You can tell that the CLR guys have put a lot of thought
into how this thing is going to be used. Additionally, I still can't get
over how cool Reflection is. I'm not just talking run-time identification
stuff. I'm talking about the ability to dynamically generate code that can
then be executed and even saved! I definitely could have used that a few years
ago for a system I wrote at AT&T.
Now that you are no longer at CodeGuru what does the future hold in store for you? We have seen mention of your new book for Microsoft Press - but are there bigger and better things in store for you, or will you be taking a much needed break?
I'm going to go back to mainly consulting full-time and running TheCodeChannel
Web site as a hobby. In addition, I've just signed on to do a Visual C++.NET book. So,
in other words, these bags under my eyes don't figure to get any smaller
anytime soon :)
Thanks Tom for taking the time to speak to us.
Actually, thanks goes to you Chris. You're one of the first people to
start the whole concept of developer sites and we all owe you a tremendous
amount in making our programming lives a bit easier and much more fun.