IT Infrastructure

One of the first things you'll need to do when you start up a small software company is build your infrastructure. If you're coming from a large environment, many things you took for granted will be missing. Here's a list of some of the choices I've made, and why.

Source Code Control
I'm using PerForce. As a one-person shop, I can take advantage of the free version that allows two client views. I use one view for OS X development and one for Windows. After working at Microsoft and using their version of PerForce, I'm sold on it's stability, scalability, and feature set. It's far more powerful than I'll need until I grow, and powerful enough to support hundreds of programmers if I need it to. You need SCC. If you ever lose code, either your own or your customer's, you're sunk. Even if you don't want to use PerForce, use something.

File Server
You'll need a place to host your SCC tree and to back up your files. I know I could do everything on one machine, but I like to be a bit more redundant. I've got the source code on my dev machine and the repository on the server. If one machine dies, at worst I've got the current source with no history or yesterday's sources with all the history. You also want to back up your files. I keep all my personal files on a server box and link to them. I can then backup the server at any time without interfering with development.

eMail and Web Hosting
I'm currently using HostingZoom to host my sites. I began by hosting them myself on a DSL connection with a static IP. I learned a lot about internet infrastructure, DNS, and machine configuration. I used Windows 2000/IIS/XMail, and found the system worked pretty well. I switched to Windows 2003 SBS/IIS/Exchange, and found that while Exchange worked, there are a lot of hidden costs. Try pricing anti-virus for a Windows Server running exchange. For 2 mail accounts, it's not worth it. In the end, I decided to let the ISP take over. I then got rid of the static IP, went cable, and in the end started saving money over the original structure. And that was before the server software. Plus, I am no longer my own IT department, which takes up it's own time. I recommend using a third party for this stuff.

As long as you're willing to do some simple due diligence in the face of disaster, it's not too hard to get yourself a robust network setup that can see you through the small startup phase of garage coding. Just make sure you apply professional principles, because if you lose everything, there isn't anybody to back you up.