Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I used to work alone on small to medium sized programming projects before and have no experience working in a team environment. Currently, there will be 3 of us in an in-house software development team that is tasked to develop a number of software for an academic institution. We have decided to use the web for the majority of the projects and are planning to choose Ruby on Rails for this and I would like to ask for your inputs, advices and approaches with regards to software development as a team using the RoR web framework.

One thing that has really confounded me is how you divide the programming tasks of a project if there are 3 of you that are really doing the coding. It’s obvious that we as developers approach a problem in a modular way and finish it one after another. If the project consists of 3 modules, should each one of us focus on each of those modules? Would it be faster that way? How about if the 3 of us would focus on one module first (that’s what I really prefer).

Is using a distributed version control system such as Git the answer to this type of problem? Please don’t forget to put your tips and experiences with regards to team software development.

Cheers!

share|improve this question

migrated from stackoverflow.com Jun 23 '11 at 18:09

This question came from our site for professional and enthusiast programmers.

    
Answer anyone? Maybe it would help if you can just give me starting points such as links and references to websites that can help solve my question. –  Panoy Jun 23 '11 at 8:37

4 Answers 4

up vote 2 down vote accepted

You need to adapt a process/workflow. There are many different solutions to this. Agile and Scrum are the most frequently used. There is no shortcut to learning what they mean. You should invest some time and read at least an article or a book about them.

Furthermore you will need the follwing tools/utilities (with examples)

  • Source Control Management: SVN, Git
  • Wiki: DokuWiki, MediaWiki
  • Bug tracking: RedMine
  • Continuous Integration: capistrano
  • Testing: RSpec
  • Projectmanagement: Basecamp

Usually the development consists of different UserStories / Features / Cards and everyone is responsible for one. The goal is to divide the responsibility, so everyone knows what to do.

But tools are cannot substitute a good development process/workflow. The best way got get going is to have at least one senior developer that can lead the way.

share|improve this answer

You are asking a lot of questions, but do have a basic problem that many a project manager has faced. How do you break down the tasks so that people can get the project done in the most efficient manner.

To draw on a few agile premises, I would recommend:

  1. Pair programming. At least part of the time work with another developer at the same workstation on the same problem. Change up who's typing if that's an issue. This is a real collaborative method and fosters trust and support on your team.

  2. Stories. Write out in short sentences on index cards each user story. This is a simple use case like "user logs in". These should be fairly granular, hence the index card to constrain space. Keep the cards on a wall and developers pick cards from the wall and work them. Then they move them to another wall for verification. Prioritize your stories so the most important features get done.

  3. Git. Definitely you should look at git and possibly at buying a github account so you can keep your code confidential. Read up a bit on .gitignore so you can keep specific rails files like the database.yml out of github.

  4. This is really secondary, but find your local Ruby users group and start going to meetings, you will network with others doing the same thing and will learn some great techniques.

Good luck

share|improve this answer

If the project consists of 3 modules, should each one of us focus on each of those modules? Would it be faster that way? How about if the 3 of us would focus on one module first (that’s what I really prefer).

What you're looking for is a Software Development Methodology. You need to develop your applications in an iterative way; each developer developing one small task at a time.

Is using a distributed version control system such as Git the answer to this type of problem?

Some version control system will be absolutely necessary, whether it's distributed or not is up to you.

Please don’t forget to put your tips and experiences with regards to team software development.

Whatever methodology you do choose, frequent communication between team members and stakeholders is key.

share|improve this answer
    
Yes, you are right on finding the right software methodology that would fit us. But I'm more interested on how we can solve the "3 devs in 1 module/feature", in a coding perspective. I mean with regards to code. How can we make sure that we understand what the other dev is doing? Or how can our code communicate with each other? Is there such a thing/tool/software for that? Or is it dependent on how we design our code/interfaces? –  Panoy Jun 24 '11 at 1:56

First about the version control, it's obvious that you need one. It's necessary to develop with a team at least for sharing the code, but after using it, you will figure out how it is usefull to be able to manage version with a tools like git.

I also suggest you to look on git-flow, it's a conventional and convenient way to organize you branch with git, see A successful Git branching model and git-flow command

Then you definitely have to learn about project management solution, see Scrum , XP

Choose carefully your tickets tracking tools, that will help you to keep organized the works to do in the team, I like to use pivotal tracker, codebase and redmine.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.