So I guess the follow-on question for this will be to jump into some of the specifics, but I have never worked on a software development team in a professional capacity and am building a web startup.
How do I structure my entire development environment on a bootstrapped/startup budget? What are the things I will need? There will be two coders and 1 designer (all cofounders including myself).
I know I will need a Version Control System, for us to manage the development, but from there what next?
Do I need a development, staging & production server. If so, how do I setup all of those on one server without having to rent/buy 3 different servers? Even better yet, how do I setup that sort of environment on a cheaper cloud offering like the grid hosting solution from www.mediatemple.net . Is that possible/desirable?
Do I have to worry about server monitoring with tools like Nagios from now, and where can I learn about architectures that will scale - because I keep reading about people making the wrong choices early and it being a huge headache when they need to scale. How do I avoid those types of mistakes?
Ideally, I would like to release early & release often - like the guys at www.getdropbox.com do so wonderfully.
Thanks.
[Edit]
Thanks guys for all the great feedback.
Try to host everything on the cloud. Avoid the hassle of doing admin.
You can find some great solutions that are free to start with, and will only cost you (a little) once your project grows.
Some tools:
Google apps for collaboration - email, calendar, docs etc. all for free (and everybody on your team probably uses gmail already anyway). Can't wait to put my hands on wave...
Skype is a great for free voice if you don't all work in the same space.
I highly recommend Pivotal Tracker (pivotaltracker.com) for agile project management, ticketing etc.
We use beanstalk (beanstalkapp.com) for version control (svn) and they're OK.
Hosting:
I'd like to join the other answers here - absolutely use Amazon (EC2, S3 etc.). Don't even think of spending money on buying or even leasing dedicated servers elsewhere.
AppEngine is also an option, but then you're pretty much stuck on their platform.
Regarding staging production etc., you don't need that if you use EC2 (or some other cloud provider). Check this out: http://hivetech.wordpress.com/tag/staging/ Finally, do not spend any time on serious monitoring solutions etc. - until you actually have some traffic... Getting traffic (=customers) in the first place is much more difficult then making sure you can service them later. Take Twitter as an example - if the product is compelling enough, you'd be able to fix your performance failures later.
Just to throw some real-world examples out there from a bootstrapped startup, here's what we use:
Hope this helps :)
It is usually best to delay moving onto the cloud until you have your tech down. Its not necessarily any less complicated. Since you're asking this, you know enough to get by but you probably need a proper CTO who knows this stuff in and out.
You can setup multiple servers on a single machine using virtual machines. If you do end up going cloud, I recommend either Rackspace or if you go to EC2 (pay for the reserved instances as they are over 50% cheaper).
For you, I suggest doing it in house at first, with a cheap <600$ linux box to test out your ideas. That's if you're at least serious enough to buy one of those (you could use someone else's computer but unless they have multiple hard drives, disk contention will ruin their day). If its not worth spending 600$, if you plan it, you could use say EC2 for a few hours and test without spending more than a few hundred.
Google things like Continuous Integration, version control hooks, and TDD (slow but may be worth it for you, it depends).
Try hosting your development code in-house on a cheap server and set-up a low-cost account online. Also, look at frameworks like Zend to get development right from the outset.