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.

+5  A: 

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

Printer can be useful

LOL! I pretty much took that as a given :) especially as some of the things in my list rely on the net connection
Yeah,figured but depending on what type of Internet connectivity you are planning on, domains may need to be reserved and configured, physical building wiring, etc all needs to be planned on and scheduled.

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

+7  A: 

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...

Joonas Pulakka
I think as long as you have backups and source control, you don't really need a backup dev box. For a startup, that seems like a wasted expense.
Jacob Adams
was there not so long ago... re-building the dev box tooka working day++
i think to begin with a backup dev box is not totally necessary, but it certainly won't take long to get there... a non identical one with a working dev environment wold probably suffice while the main box is replaced. good thought tho :)

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

Jacob Adams
heh absolutely on the 2 mons front!
+5  A: 

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.

Marco van de Voort
thankfully, I already have mail and web hosting sorted.
+5  A: 

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.

it's bizspark....
I don't know if it's available to UK devs... something i will look into
Here it was called "Developer value pack". But that is two years ago
Marco van de Voort
Ah! Dev value pack... I remember someone telling me about that around 2005. the name in the US chaed from something to Bizspark, so persumably same here too
I think that program is called Locking You in Early Before You Know Any Better So That You Can Get Screwed Later With Huge Licensing Costs
Agreed... call it what you will, there are enough people that make thier money off the back of M$ products and still be profitable, if that's the technology stack you've chosen. as many have said, if after 3 years or whatever if your startup is not successful enough for the licensing costs to be noise, then you're probably on to a loser anyway. If M$ is what you know, the time cost of learning the alternatives may be too great. if you already know them backwards then fantastic. Go for it
having joined BizSpark -its also more than just get the licensing - they have managed to create an eco system to help startups with raising money - and they have managed to get this local to country. And wider than just MS based seed venture capital too.
Unknown: that doesn't matter for you as devel, since the customers have to do the purchases not you. If you can live with being an MS agent, that is fine. And in some markets you do, in some you don't.
Marco van de Voort

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

Dave Hinton
but for a lone developer, it's likely the the office and home address will be one and the same...
There are two of them, and if they live at different addresses, they can backup each address's stuff to the other address. Even if they live together, they can probably backup to an external hard drive at a friend's house.
Dave Hinton
I tried this, but most standard remote HDs have zero or no ways to safely expose them to open internet. So you probably need some VPN server inside the home network (doable with a medium priced router, but not just any one)
Marco van de Voort
+31  A: 

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

+1 for whiteboards. very handy devices :)
I love that this is the top answer!
accepted, as this TRULY is the bare minimum :)
There's a cool option for white boards: Idea Paint. It's whiteboard paint. Turns any flat surface into a white board. I"ve not tried it yet, but plan to.
Clay Nichols
+1  A: 

What about Microsoft's Mesh for offsite backup. Check out

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 ;-)

not heard of that before. nice one! I'm sue one or two gig would be plenty in the early stages. if the backups are taking more than that then I think something more heavyweight would be in order anyway.
free's always good ;)
+2  A: 

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.

yes, uncontaminated ;) workspace is a priority... hopefully the cats will heed this....DOH!
Thanks for the recommendation for ProjectLocker, and thanks for being a customer! We do have a free plan at ProjectLocker as well with 500 MB and up to 5 users. However, if you need more space or users, you would need a paid plan.
+3  A: 

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.

that looks quite nice
+16  A: 

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.

Stuart Ellis
Or even Google for Domains
Use the cloud.... Google mail. And everything else. Zero servers is the easiest office to run.
Warren P

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 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. :)

Donn Felker
+2  A: 

A client!

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

Marc Hughes
absolutely! however there are some things which are common to all situations and that's what i'm trying to nail down.
+12  A: 

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
+2  A: 

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.

Jeff Fritz
+2  A: 

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.
Jack Ryan
Just looking at on of SO's sponsors, Beanstalk, has reasonable looking subversion hosting with fogbugs integration
I would disagree. If you are not competent enough to manage your own email, bugtracking, and source control you have no business trying to write or sell software. Paying other people to do these things is a waste of money, which you cannot afford since you have no product and no customers yet. Paying for FogBugz is also a horrible idea- maybe you can afford this down the line, but for now make do with open source such as Bugzilla, RT, etc
I don't know if it's a competence issue. I have a small development shop that's grown to 15 people. I initially did all of my own hosting. But I found that anything that took me away from my clients (I'm talking to YOU, Exchange), cost me far more than it would cost me to outsource. I bill $140/hr., so even just a few hours/year of server management costs more than moving the whole thing to a service provider.On the other hand, I host all of my own web and database servers because I want fine control of those very client-centric environments.
+1  A: 

Coffee, a large steaming pot of coffee :)

That's required on *ALL* dev jobs, lone or not ;) but at least you have more control of the quality!
+2  A: 

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).

+1  A: 

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.

+9  A: 

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

  • a lawyer
  • an accountant.
It's vitally important that you do not overlook this aspect.
+1  A: 

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.

Stefan Didak

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.

Chris Pietschmann

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.

Clay Nichols

related questions