views:

212

answers:

8

Hi, I am working on an Asp.net website with 4 other people. The problem we have is what kind of hardware setup do we need in order to enable team development? We have four individual desktop computers what other hardware would we need? What other development software would be ideal for such development?

+2  A: 

You'll need some form of source control that can either be stored on one of those desktops (not ideal) or another server.

Apart from that typically such development will have each developer replicate the environment on their own machines.

At some point it would be ideal to be able to put that code onto a server and build it for test and validation purposes. This could be one of the desktops if you lack the hardware.

cletus
so will be alright if I connect all the computers on lan and make one of the desktop act as a server and then load up source control on the server?
Mayur
It's fine to put services like source control on one of the dev machines. The thing you have to watch out for is if the machine isn't on, it fails or it gets trashed and their goes your repository. That's why you try and separate such things and treat dev machines as expensdable. Another option is to get a hosted service (VPS, hosted subversion, etc) for extra security.
cletus
+1  A: 

What you describe doesn't sound like a problem that is solved by hardware, but rather by communication, and defined procedure (Agile software development is one methodology). Source Code Management software such as bazaar, git, mercurial, or subversion might be useful.

vezult
+1  A: 

Are you using Visual Studio Team System?

I would recommend some sort of source code repository and most likely a build server (features provided by VSTS).

Of course there are other options beyond VSTS including free, open source solutions.

JonnyBoats
Don't forget to give all your developers access to Stack Overflow!
JonnyBoats
Sure wont forget that!
Mayur
A: 

If someone has an extra box laying around I would recommend SubVersion...Should make things easy to do your commits , check-ins , etc etc

PSU_Kardi
cool. Yea I have another box lying around so I was thinking of loading up Server 2003, SQL 2005 and Team Foundation.
Mayur
+1  A: 

For teams under five people, if you have an MSDN license, you can freely avail of Team Foundation Server Workgroup edition :-)

IrishChieftain
+1  A: 

I just finished a substantial (6 month project) ASP.NET web application that was developed with 4 other people using Visual Studio 2008, Team Foundation Server and SQL Server 2008 and I was very pleased with the combo.

Prior to Team Foundation Server, we were using Visual Source Safe for source control. I can't tell you what an improvement TFS was over VSS.

Some of my favorite features are:

  • Seamless integration with Visual Studio
  • Document control
  • Project management solutions like the "work items" feature
  • Ability to "shelve" what you're working on to experiment with different ideas

Aside from the three, we didn't need any other software. We set up a couple instance of the database, one for developing and one for production testing. Our database was developed as a database project in Visual Studio, which made it really easy to deploy once we were ready for a production test. It also made it easy to do schema comparisons and updates between the two test databases.

As far as hardware is concerned, we had a server for TFS and a server for application testing. I'm sure you could combine the two.

hypoxide
thanks alot! your answer was really helpful.
Mayur
+2  A: 

I do primarily ASP.NET development with a team located in New Zealand, Canada, United States of America, and Israel, so I have a lot of experience with working effectively in a team environment. Based on this experience, here is my list of must haves for team development:

  • A Version Control System allowing you to store and manage multiple revisions of source code. For this we use Subversion, but any decent VCS should suffice. In addition to source code, we also use it for shared documentation and tools and libraries used by our applications.
  • An effective way to communicate with your team. Due to our wide geographical distribution, we rely heavily on Skype for this, using both group chats and conference calls.
  • A build process allowing all shared libraries and applications to be easily built. Ideally this should be automated with scheduled build runs verifying the integrity of the source in your VCS. There are many tools out there to assist with this (e.g MSBuild, NAnt). As our projects span many different development environments and languages (including Visual Studio, Delphi, Java, PHP), we find that using a batch file to control this process suits our needs nicely. If you use a test driven development approach (either following TDD to the letter, or employing a variant of it that suits your development style), running your unit tests during this scheduled build process is also recommended.
  • A project management, task and issue tracking system. We are currently using Jira for this.
  • A easily updatable repository for sharing information, such as an internal wiki. We use an in-house written content management system for this (the same one that drives Embarcadero Developer Network actually :-)).

As for hardware requirements, that would depend a lot on your actual development requirements and budget. I would probably recommend at a bare minimum having a dedicated server for your VCS. You could also probably double this as your build machine, although you may want a dedicated one for that too.

It may also be desirable to have a dedicated test machine or six, and database server(s), but depending on budget these functions can be shared as appropriate. Virtualization may also be an effective way to minimize hardware expenditure while maintaining good separation of functionality.

Cleggy
+3  A: 

For the Embarcadero Developer Network (http://edn.embarcadero.com), which is built on an extremely low budget, we use our own PCs for the development environment. There are currently 3 primary developers, including myself.

Because my team members are remote, we also have VMs for developing and debugging on that are in the same data center as our live servers. Communication is critical, and we rely heavily on Skype (http://www.skype.com/) for that.

For source code management, we use the free, Open Source http://subversion.tigris.org/. A good general-purpose Windows client for SVN is TortoiseSVN (http://tortoisesvn.net/). An excellent Visual Studio plug-in for SVN is http://ankhsvn.open.collab.net/.

For unit testing, we use NUnit (http://nunit.com) for our .NET testing. We use DUnit (http://dunit.sourceforge.net/) for our Delphi code testing.

Before you deploy, it's very important to have a staging/test server that is NOT a development machine to deploy what you intend to make live before deploying it live. This is the only reliable way to ensure you have everything you need deployed to the live server.

For deployment in a load-balanced environment, Robocopy (see http://en.wikipedia.org/wiki/Robocopy for more info) is a very useful tool to ensure your live servers mirror your "staging" server. We have a "do it all" batch file that 1) pulls the latest release from Subversion, 2) merges and minimizes our CSS and JavaScript (with a tool I wrote I'll get around to published some day, and a JS packing tool from the fckeditor folks), 3) deploys the latest version of our templates, css, images, scripts, and so on, to the live servers.

As for our servers, we are using Windows Server 2003. The Standard edition may suffice for your needs. Most of our web servers run fine in 2GB of RAM, although we have millions of users. Our heavier-used servers have 4GB of RAM. Nearly every web application is load balanced onto at least 2 identical servers. Our web application servers are mostly VMs, but our database servers are always dedicated boxes with varying RAM requirements. VMs don't give you the performance you need for the databases.

We also primarily use InterBase (http://www.embarcadero.com/products/interbase/) and Blackfish SQL (http://www.embarcadero.com/products/blackfish_sql/) as our databases, but most MS-centric shops would prefer some flavor of MS SQL.

We wrote our own monitoring solution to monitor the databases, web responses, and web services that make up EDN, but you may find something like Nagios (http://www.nagios.org/) handy for monitoring your live servers.

Then, you also need an issue tracking system like Jira (http://www.atlassian.com/software/jira/) FogBugz (http://www.fogcreek.com/FogBUGZ/), BugZilla (http://www.bugzilla.org/), Trac (http://trac.edgewall.org/), which can be used with Subversion, or something else. The EDN team uses QualityCentral (http://qc.embarcadero.com), but that's a home-grown solution not available to others.

HTH

John Kaster