I’m a project manager. Don’t hold it against me. Until I joined the rails community I had no idea the disdain programmers had for project managers. Most of this was coming from jaded java programmers who were over managed with an iron fist. Rails gave them the ability to reduce project complexity and thus remove the need for excessive management.

What do I think makes a good project manager? A project manager should reduce communication overhead, keep everyone on schedule, provide resources and tools to make programmers work smarter, make the hard decisions and settle arguments, and be a cheerleader for the project. My philosophy is that my programmers work with me, not for me, its a collaberative effort. I don’t just hire them because they know how to program, I want their creative ideas too. I’ve found this makes them more productive if they are implementing their own ideas and not just following orders. They are people, not tools to be used.

As the title of my blog clearly states, I have no idea how to code. I think this makes me a better project manager. I can step outside the scope of the problem at hand and provide a clear picture of whats going on. Sometimes a programmer just needs someone to tell their ideas or problems to. There have been many times where I sat and listened to a programmer describe a problem and without me saying anything they come to a solution.

Its those “light bulb” moments that I live for and make my work worth doing.

I love webservers. There I said it. Webservers are the reason the internet exists and is so popular today. You wouldn’t be able to read this post if it wasn’t for a webserver. I don’t think I can summarize my tawdry love affair in one post so I’ll be splitting this up into multiple posts.

My history with webservers goes back to the year 2000 A.D and the grumpy grandfather of webservers, Apache. I got my start administering a Cpanel server which had Apache 1.3 installed. One look at Apache’s httpd.conf config file and I started wondering if being a systems administrator was for me. The monolith was 2000 lines long, consisting mostly of comments and tons of repeated logic. The comments were needed to explain Apache’s configuration options, it has tons. It was a nightmare but I continued to use Apache for the next few years, all the while hoping for something better.

Through my travels I had to do a bit of work with Microsoft’s IIS5. It wasn’t a whole lot better, replacing the 2000 line httpd.conf with a windows based GUI. The GUI made it difficult to get a global view of the configuration and debugging problems was unnecessarily complex. The guys over at Port 80 Software did have some plugins for IIS which made it run a little smoother and have more features but overall there wasn’t a lot of progress going from Apache on Linux to IIS5 on Windows.

After IIS it was back to Apache for some high performance applications including banner and image serving. This is when I saw another one of Apache’s weaknesses, its poor scalability and performance when dealing with large numbers of connections. I was using Apache to serve banners through PHPadsnew while also serving static images. I had 3 dedicated apache servers and 1 database server to do this and it couldn’t cut it. The load average on the Apache servers was 100. All the memory was used up, it was a mess. Thanks to Freebsd 4 I was still able to login via SSH to see if I could do anything.

After hearing that Gamespot used Thttpd to do its static file serving I thought I would give it a try. It helped but Apache was still having an issue serving the ads. I tried to get Thttpd to run PHP but it wasn’t designed to do that at the time. I really enjoyed working with Thttpd thanks in part to its small config file and simple setup. I looked at its source code, it was small and well designed. I worked with one of my programmers to create a module for Thttpd that would replicate what we wanted from PHPadsnew but without the need for Apache. After a couple of months we had something that we could swap in for Apache.

Our modified Thttpd server was installed so I checked the load averages and they went from 100 down to 0.00. I thought there was something wrong but after looking at some traffic logs I was assured we were serving ads. We ended up replacing the 4 server configuration with 1 server and now we could actually handle 10 times more traffic than we were able to with Apache!

Tune in next time to find out how this was possible.