views:

953

answers:

17

What would you generally recommend for software developement? Which combination do you use or would you recommend? I assume that tools are needed for Version control, issues/bugs/task, Release management, Requirement management. Tools for Test management and Project management should be accounted for as well, I guess. Did I forget anything? Maybe tools for Continous Integration.

I'm not interested in a halfway combination of one ore two tools like a Subversion + Bugzilla (I know they are good but for a company they might not be sufficient). And also tools like make/ant shouldn't be taken into account. I'd like to know a combination that covers all what is important for professional software development. However, it could be a single tool of course if it covers all the management issues.

What do you think would be a good combination? I assume a combination should be regardes as good if the tools itself are good but also if they have good integrations.

Udate: Something like Ant is just a script not a management tool. Okay: we do already have Perforce. But this is somehow generic. We have different projects that uses C-, VS/.NET-, Python-, PHP and we will be starting new projects in Java. Plenty of languages and frameworks, though some are going to be legacy. So the tools should be generic. Obviously we don't want to use Bugzilla for one project and Jira for another. The management tools have to be generic.

Further thoughts: Think of sourceforge: For each project they offer a version control system, an issue tracker, a wiki, ... totally independent of what the project is about. Those are some management tools that a project usually needs. I would say that most companies need such a set of tools. But I could imagine, if a company has several projects, they need further tools too: for Project management, Quality management, ... And I could imagine there are some recommendable combinations of tools. A not really apropiate comparison to this could be LAMP (Linux, Apache, MySQL, PHP). A combination of software that has evolved since they work very well together, and are pretty useful for a lot of applications (or rather web sites). So maybe there are some recommendable management tool combinations that also fit toghether like LAMP. The integration is important.

Thank you for the incredibly fast and helpful responses!!!

+4  A: 

Not sure why you are "not interested in a halfway combination of tools". Most software development tools do one thing and one thing well, and you must assemble them to suit your development process.

It's also going to be hard to recommend something without any requirements on your environment or setup. For example, if you are doing .Net development, you probably shouldn't use Ant, but if you are doing Java development you should absolutely use it.

davetron5000
Ant works fine for .NET development, but their is nAnt (a .NET port of Ant) that might be even better. I have used both.
Rob Williams
+1  A: 
  • Subversion Version Control
  • Atlassian Jira for issue tracking
  • TeamCity for automated builds (CI)
Otávio Décio
+1  A: 

To echo the first answer, knowing more about your environment may be rather crucial here since elements like an IDE, development methodology, and database software can make this vary dramatically.

Microsoft Team Foundation Server may work for a lot of what you want if you are OK with MS technologies which isn't necessarily going to be most places. OTOH, lots of places will combine tools so that the best is used in various areas like bug tracking, automated deployment, and testing.

JB King
+2  A: 

It depends of what you need. It could be Ant, Nant, Make, Cruise Control, Hudson, Trac and other. There is a wast diversity of tools for each step of the process out there. What combination works best is your choice.

We use the following combinations for Java development:

  • subversion
  • ant with JUnit and CheckStyle
  • hudson (build and deployment)
  • trac (issue tracking and WiKi)
Drejc
+1  A: 

IRC for team communication.

Yes, I'm serious. It's a lot faster than emails, any kind of wiki, IM clients or whatever else the corporate guys seem to recommend. Just type in some words, hit enter and everyone sees it.

Esko
Isn't this hard to archive, since the communication is in chat form?
mparaz
All IRC clients log the chats, which is controlled usually by a simple on/off switch. There's also lots of little apps which generate all kinds of data from IRC chats already or outputs data to IRC (Hudson and CVS bots already exist) and other not-so-relevant stuff, google for PieSpy as an example.
Esko
+2  A: 

You'll probably get a lot of brand names or products from others. I tend to be vendor agnostic and the most important tools are a huge whiteboard, a pinboard, index cards and, most important, common sense. (it's astonishing how uncommon common sense is)

This is, because management is rather about getting the job done than producing artifacts.

Of course we are using tools for keeping an eye on budget, issues, documentation. Mostly these are dual-use tools, sometimes used for blaming and fingerpointing, sometimes even for management. I tend to not name them. I've learned that tools strengthen whatever structure is there (e.g. chaos + tools = enhanced chaos, well run projects + the right tools = very well run projects).

More reasoning? For each tool you need the right mindset in the project: Whatever issuetracker you use, it gets spooky when management dictates that there have to be less bugs, measured in tickets per timespan. Either qa will resolve to mails instead of tickets or just use more "and" constructs and make bigger tickets. Whatever test coverage tool you use, it gets spooky when a certain coverage percentage is demanded. It's very easy to get 100% coverage - just trigger all lines and leave away the assertions.

Therefor: Before you decide on tools - see what structure/quality/pattern/antipattern they are strengthening. Decide if they are a problem for you. I personally would rather go for the best tool in each area instead of one that somehow insists to be all over the place, just the opposite of the intention stated in your question.

Olaf
+8  A: 

Wow, that's a big question -- :)

We're a small shop -- we all wear all the hats so this analysis may not hold true for those shops where they have 5 UI guys who specialize in only text boxes --

We started with version control as this is, in my opinion, the single most important aspect of application life cycle management and personally, we use Source Gear Vault -- it has it's good points and it's bad points. We've used it since its early days...

Secondly we use FogBugz for our issue tracking and chose it for the very reason they wrote it, practical simplicity -- It's good to have 4000 details about a bug, but in the end, I need to know what the bug is and when I fixed it. Most importantly, I need it recorded. FogBugz also has a very simple (and thereby actually gets used) feature tracking -- Heck, I even have the sales department trained now to send feature requests by email directly to "Betty" -- (our name for the bug track system: Betty Bug)

Scheduling has proven to be a bit more elusive. FogBugz does have a "best guess" based on what it knows about and I've started to rely more on this tool than my other "project tracking" apps. Did the MS Project thing for years -- and the issue always remains, you have to feed the beast; Tools have to be usable and ultimately, practical. It's back to the small shop issue where there just isn't a lot of time to update the multiple charts that upper management finds pleasing and reassuring. FogBugz has a very usable assortment. (I find I sound like a salesman for Fog Creek -- Joel, send me some free licenses -- lol, but this is really a great product.)

Release (Build) management has just recently left the home-grown arena and I've moved to AutomatedQA's Build Studio -- another amazing product for the price -- (lol, another apparent shameless plug for FogBugs, but it does the paperwork tracking of the releases quite well)

Well, that pretty much wraps up the management side of things --

On the dev side of things, an automated way to get a consistent, reliable, repeatable build is paramount as we know; Automated Build Studio now makes this task pretty straight forward for me -- I had a solution that was a kludge, um I mean well crafted series, of scripts, batch files and utilities that I knew well, but just became to much effort to maintain as the apps evolved. The price too, is reasonable.

For unit testing I use NUnit, which does a good job and the price is very right. :)

I suppose this entire dialog could be summed up into this statement; The tools you use are only as good as your diligence to feed them. If you're not the paper jockey, you should seek tools that integrate seamless into your work style.

just my 2 cents and nothing more ...

Borzio
Wow that's a huge answer ;)
Drejc
guess that makes it my 4 cents instead of 2, eh? lol ...
Borzio
+1  A: 

I desire to accomplish a similar goal of developing, building, testing, and releasing numerous projects on multiple platforms with a single, integrated tool set. My primary targets are Python, Java, .NET (C#), C, Windows, Unix (Linux), Oracle, SQL Server, SQLite, CherryPy, Apache, Jetty, and IIS.

Some viable tools include Ant, nAnt, Subversion, jUnit, CheckStyle, JIRA, Confluence, Bamboo, Cruise Control, Cruise Control .NET, Draco; all of which I have used. Confluence is expensive and too heavy. Bamboo is great, but also expensive. Jira is okay, but it costs money and it does not integrate as well as Trac. Some of the others are focused on a particular language/platform, which makes them less usable.

I plan a Python-based build/release system, because it is the only one that can span this spectrum. There is buildbot and SCons, which look viable. I am switching to Bazaar, but intend to also support Subversion. I plan to use Trac on Bazaar, and expect to deploy that shortly. Buildbot may be sufficient for continuous integration, but I may need to find something else to go beyond it if I find limitations--perhaps even using platform-specific CI tools like Cruise Control and Cruise Control .NET.

The most important aspects are automating EVERYTHING, and easy communication. A wiki should be so lightweight that you don't even think twice about adding to it, which Confluence and SharePoint and other tools completely fail at doing. I like the IRC recommendation--I will be exploring that one soon.

Don't spend money on tools: the free stuff is better and the money is better spent on hardware.

I will not use Maven--been there, done that, it ain't worth it.

Rob Williams
+1  A: 

A big wall and a lot of note cards/3M Memos in different colors, and some pens in different colors.

That works for a single-team single-location, test-driven development.

Stephan Eggermont
+2  A: 

I'll add my usual plug for Redmine, a forge-like software that does have bug-tracking, time-tracking, forums and support all major free VCS. I think someone want to implement Perforce support as well. See also this question on SO.

Keltia
+1  A: 

Depends on what your language and framework will be. If you want an agnostic approach a combination of Subversion and Trac with the needed plugins (Agile, etc...) can do the trick.

But more important than the tools is defining the various processes: versioning policies (building the habit of defining version roadmaps, etc), how to use source control strategies (when and how to branch etc.), which methodologies will be used and how be used (Agile or not, etc). Getting and installing tools is easy, but tools should be used within a process; defining and applying a process is the important part where people usually don't spend that much time.

The bottom line is: with a defined and stable process tools should come easy

t3mujin
+1  A: 

No one has addressed the datbase arena yet. First and formost you need a product to compare two differnt databases and script the differences. A product that does the same for data is useful if you have a lot of lookup tables. I personally prefer Red-Gate's tools (SQLCompare, SQLDataCompare) if you are using SQL Server, I'm sure such tools exist for other databses as well.

HLGEM
A: 

For my very small C#/ASP.NET team it is:

Subversion for source code control (Tortoise SVN on the client) FogBugz for bug/issue management NUnit for Unit Testing

Subversion and FogBugz work together via our SVN provider: BeanStalk. When source is committed to the SVN server, we can include text tags that tell Beanstalk what to share with FogBugz. This works well for us.

Hope this helps!

Mark Brittingham
A: 

Check out Intervals. We built and use it to manage software development projects at our web design & development agency.

jjriv
A: 

We're a small start-up so it might not be what you're looking for, but here goes:

Source Control: Source Safe
Bugtracker: Gemini (by Counter Soft)
Test Case Management: Test Link
Project Management: Basecamp
Build System/Continuous Integration: Cruise Control
Team communication: Google Talk (easy since the entire company is on Google Apps)

roy100
A: 

You might want to check our Parabuild for Continuous Integration and Release Management. Parabuild is free for small teams and it is reasonably priced if you've got a bigger build infrastructure.

HTH

Slava Imeshev
A: 

We use VisionProject since it helps us with every part of the application lifecycle. We use it for Project Management, bug tracking, test reporting, document management and support management. The reason why we chose VisionProject was because it was the only system that we could find that has so much functionality and yet is so easy to use.

MattPro