I'm currently in the planning stages of starting out on my own* (with a business partner...) and am trying to come up with a list of minimum requirements that I'll need for the early stages of this venture.

Leaving out the business craft side of things (sales marketing etc.) at this point - there are plenty of articles here on SO covering that - and focusing on the technical side of things only, I have the following list:

  • development box (obviously! PC or MAC depending on target platform)

  • dev software (VStudio/eclipse/xcode/notepad)

  • test box (could be virtual machine)

  • Source control (anything except VSS!)

  • onsite backup (external HDD, separate backup box, CD/DVD ROM)

  • offsite backup(looking for suggestions here amazon S3?)

  • teleconferencing software (for discussion with Biz partner who may not be local. Skype?)

  • bug tracking/management (fogbugz?)

Have i missed anything and/or included too much? I realize that every venture is different, and technically, the bare minimum is just a dev box and a chair... however assuming serious work with disaster recovery is in order, is this list reasonable?

[EDIT] I've created a wiki summary of the answers. I've put the skeleton framework in and intend to fatten it up with links and details etc. Once I can, it will be the accepted answer, in the meantime please vote up the other answers and/or edit the wiki page if you think it's appropriate. BTW, I'm away for a few days so the fattening up will take place after that.

33 accepted

I'd add a whiteboard (or two) -- it could serve as your bug tracker early on, too.


Maintain as little hardware as possible, as it's a time sink. I'd recommend getting VMWare straight away, and use features like snapshots - it's more flexible than switching between multiple machines. Similarly, I'd get one VPS immediately, and add services/capacity to it as necessary. If a service takes up too much of your time, consider switching to a service provider.

Email systems are always a time sink - use a business IMAP provider like FastMail for that.


Summary of answers so far: (please vote on individual items and edit this wiki as appropriate)

Level 0: before even thinking about doing anything...

  • whiteboard (infinitely useful, brainstorming, todo's, bugs etc.)
  • an idea of direction so that the level 1 minimum can be more finely defined

Level 1: general minimum for any development from a SOHO

  • Development machine
  • good chair
  • internet connection
  • clean (from distractions) environment
  • source control
  • backup regime (something, just keep a separate physical copy)
  • printer (somewhat optional at this level, but useful, especially for billing)
  • IM or teleconference software
  • hosted domain and email
  • SO account
  • as many monitors as you can afford
  • appropriate licenses for dev environment (MS Bizspark as a cheap way of getting M$ products)

Level 2: You have some paying gigs, not just side projects

  • offsite backup
  • separate clean test box (VM)
  • backup functional development box
  • VM's for as many hardware platforms as you can get away with
  • test server (web apps)
  • hosted server (web apps)
  • remote access software
  • better chair
  • more monitors than L1
  • Clients!

Level 3: lots of serious/high value work to be done

  • upgrade your chair again
  • improve or add a few more/better/bigger monitors
  • in house production server
  • exact duplicate dev box
  • take regular images of all physical machines
  • specifics more and more dictated by the type of work from here on

If you are going into business you'll want to be friendly with:

  • a lawyer
  • an accountant.

A backup box (identical to your development box). Take a disc image from your fresh development box, so that if it breaks, you don't need to spend the whole day installing your development environment.

Re-installing everything takes a surprisingly long time - been there...


Internet connectivity (router configuration, time alloted to get the line installed from the service)
Email server inhouse or remote

Printer can be useful


We have a small two person company here, in the machine building/machine vision field, with only one software devel (me, the other is doing the electrical and mechanical parts).

  • A workstation each, a server, and one or two test boxes.
  • A Delphi 2006 license for me, our main development suite. Licenses is per devel (Borland/Codegear non-nonsense license), so it is also on my laptop and homesystem
  • Server runs Fedora with subversion and samba, as well as openvpn (latter mostly used for remote access to SVN)
  • Mantis bugtracker at a shared hosting account. (Eur 5/month magnitude).
  • Company website and email is at that same account
  • We use Mozilla sunbird over webdav to that same account for calendering.
  • Backup manually using ESATA hds, weekly. (much faster than USB, worth the few tenners more).
  • SVN repo is hotbackuped and SCPed daily. Easy since if you don't commit binaries it grows very slowly (15 MB .tar.bz2 after 2 1/2 years)
  • For our microchip microcontrollers we use the free gcc based MPLAB IDE from microchip. We do have a full compiler license, but in practice we don't use it (*)

(*) we expected to need more code speed, but in the end most of it was solved using the hardware periphery of the uc.

We have some more stuff (like scopes etc), but that is more related to the microcontroller print development side than the straight software development.

Note that the Linux decision was a pragmatic one. We simply didn't have a clue what we would need, and didn't want to invest much upfront without clear requirements, and I had better knowledge to install it than properly configuring MS stuff. Whenever we get another sysadmin, I'll happy let him do whatever he wants to the setup, as long as he preserves my SVN.

The hosted account is a great way to avoid mailserver and webserver maintenance.


If you need M$ software they have a program for small firms to have a subscription for lots of software for a few hundred money per year. Don't know exactly the name of the program but just be aware of it.


Amazon S3 is probably overkill for offsite backups. I use a combination of Mozy (free) and ProjectLocker (not free).

Also, if you're going to be working from home (and don't live alone), you should seriously consider setting aside a room where you can work without interruptions and noise.


For teleconferencing I'd recommend giving dimdim a try. It's similar to webex, except it's a whole lot cheaper and it's flash based so it doesn't require you to install any software unless you want to share your screen. The screen sharing component is available for Windows and Mac and (I think) Linux.

They have several different plans, ranging from free to $19 a month.


Get a reasonably priced webhost. Not only can they host your website + email, they can also host your subversion repository, bugzilla, internal wiki, etc. It also acts as an offsite backup (but don't neglect an on-site backup).


What about Microsoft's Mesh for offsite backup. Check out http://www.mesh.com/

Basically create a folder on your machine where you store all your work. Sync this folder onto your mesh and from then on, anything you do in this folder is coppied to your mesh. All of the content can then also be access from anywhere on the Net.

Now you have automatic offsite backups. Granted, I think you only have one or two gig, but that should be enough for most of the code for even enterprise level solutions.

PS. It's free ;-)

Updated Mesh URL since it's no longer in Beta: http://explore.live.com/windows-live-mesh?os=other


A client!

Seriously, put your effort into finding your first gig. The gig may dictate what you need.


Source Code Control should be a high priority after getting your machine and communication facilities situated.

Start your source control on a hosted solution. This way, you have your local copy, plus the backups the hosting provider has. Rebuilding Linux, Windows, or Mac OS is a long process... but won't cost you anywhere near as much as lost source code.

Personally, I use GitHub, but there are several discussions of SVN providers on StackOverflow that you should review.


As much as possible I would go for managed solutions. If it's not your core business then outsource it.

This means that the only servers you should be managing are servers that host test or production systems that you have written. You should be paying someone else to manage your email, bug tracking, source control, etc.

This also means that as soon as hardware becomes an issue you need to consider paying for external support. It all seems expensive for a new business but its important that you keep working at your business rather than working as support, or network engineer, or secretary, or anything else that doesn't make you money.

So, to add to your list:

  • phone numbers of people who you can pay to sort out your non development problems.

Coffee, a large steaming pot of coffee :)


It all depends on what you are planing to do. Maybe your business will soon turn out to be mostly on-site contracting, in which case the client will probably provide all the infrastructure for your work and all you need is a PC and a printer to print the invoices. If you plan to write a new piece of software and market it yourself, the single most important piece of inventory you need is a large stack of cash to feed you through the hard time to come.


The minimum requirements for software development are never a one-size-fits-all because it really depends on what you aim to develop, how you wish to work, how to make the most of your resources (and wing it when needed), and as always a fairly high degree of personal preference because different developers -even if they work on something similar- will use the exact same resources.

But one thing to add would be a second broadband line for redundancy. If you depend on communication and having a functional internet hookup then having a second for redundancy can be a real life saver.


Remote access software of some sort for remote client support. Go2MyPC, LogMeIn, etc.


All the things listed sound essential, although for the time being I would lean toward virtualizing all of the non dev machines. That way you can stay smaller and easily scale up when needed.

If you are a web startup, you'll need either a production server or hosting from someone. This would be the only exception to what should be virtualized.

Also, since you're the developer and the CEO, there is no reason to not have two monitors


Off-site backup can be as simple as rsyncing onto external hard drives at your home addresses.


If you're going to have multiple clients at the same time (which is definitely a possibility) you should consider running your dev environment from a virtual machine. I personally use Virtual PC or VM Ware (depends on the client).

A couple benefits of running virtual:

  • If I have to join the domain I can have a Virtual Machine join, not my host (this will be the case at a lot of clients). Having to join, un-join the host machine is a real pain. Having the virtual machine joined is great.
  • I can have a pre-setup config for each client.
  • I can reload my entire host machine with a new OS and start working immediately (this saves you a lot of down time)

Tips: Learn about differencing disks and snapshots for VM's.

I ran virtual during the most recent MarketWatch.com rebuild and I upgraded my host from Xp, to Vista, to Win7 Beta to RC and never spent any extra time updating software in order to start working again. The only thing I had to do was install Virtual PC after each OS refresh and I was back to working at the client as soon as I started my virtual machine.

To do this you'll want a beefy laptop though so it can handle the laod. So be sure to get a nice lappy. :)


Use "Google Apps" to host your email with GMail. It's an excellent service and easy to setup. Plus, you can access it easily from anywhere.


Virtual PC (or VMware ) for testing.

I am actually going to try developing in Virtual PC with my next computer. I've had too many problems with Visual Studio fouling up things on my computer.

Beware of anything that distracts you from a delivering the first useful version to a couple of customers.

There is never enough time to do everything the right way. You have finite attention and resources. The sooner you get "useful Alpha" out the door, the sooner you get to a version you can charge for (or the sooner you find that you need to change direction).

As mentioned above, based on my 15 years of experience running a Micro ISV I'd recommend you "put all your wood behind your arrowhead" and focus on getting an alpha version out the door to alpha tester/customers. Until produce something valuable the customer wants, everything else is window dressing. (E.g., Why worry about off site backup if the code you develop turns out to be unsellable? or if it takes you 12 months to become profitable and you could have shaved 3 months off by running a bit leaner.)

And don't dismiss the business side of things. Talk to any successful software company owner and they'll tell you that the business side of things is what makes or breaks the company.


For offsite backup lots of good free options..
Two for your consideration.
1. Mesh
2. Dropbox

Spend at least $500 on a chair. Upgrade your dev machine to an i7 or similiar AMD quad core with min 4Gb or RAM and setup dual boot of 32 and 64 bit versions of your OS. Install VMWare or similiar and create vanilla SOE's for each OS you need to support.

Buy an onsite backup solution (such as a removable HDD) there is plenty of free software to control backups.

Build a small inexpensive server setup network share for dev tool packages so you have all your software in the one spot ready to go. Use server to host source control provider, database server and other collaboration tools (i.e. sharepoint/TFS) if you have/need them.