Hi all,
I know many here have been working on big project and can help me on this. We will be having a project to do and we are more than 3 people. We will be working at different times and places(We are not employed developers per se Just hobbyists). My friends are Java addicts and hence we will be doing it in Java as web app. I have two questions that i need your help:
1. What is the best way to manage such project so that we won't collide?

2. What are advice(s) you will like to give someone like me working with team for first time? (All the time I have been working on personal projects alone)

Your friends should already know about

  • Maven 2 or Ant for various tasks (fetch repositories, run procedures like compile, test, execute or package - often included in IDE)
  • revision control system - Subversion or GitHub
  • issue tracker - Bugzilla, Jira (commercial product), Trac
  • wiki - like these
  • blog - to tell others about your project and progress of it

I'm sure other guys can add some other products, but you can consider this basic setup

1. What is the best way to manage such project so that we won't collide?

Use a version control system. Having your code placed at a central repository which would then be used by collaborating developers is probably the best way to track of changes made to files and share code in a clean way without mailing each other 'zip' files. That being said, how you implement this in your project depends on a couple of things. Do you have problems with your code being publicly exposed/published?

If not, then head over to Google code which is basically a free project hosting solution provided by Google. You can to choose between two version control systems (VCS); SVN which is a centralized VCS and Mercurial which is a distributed VCS. Though the concept and adoption of the latter is gaining pace among the developer community I'd still recommend going with SVN since it seems to be version control of choice used all the "enterprisy" organizations out there. Learning SVN would would probably give you an upperhand over the other beginner programmers when it comes to trying out professional programming since it looks good on resume. Assuming you would be developing using Eclipse, there are plugins available for both the VCS's so it would definitely provide a pleasant experience when it comes to developing and committing your code.

If this *isn't* an open source project, you might have to shell out a bit and buy a code hosting solution which enables you to have private repositories i.e. repository wherein your code isn't publicly exposed. If you are OK with learning Mercurial, you might want to look into the plans offered by Bitbucket wherein they claim to provide one private repo even for free users. Since I haven't used the service, you might want to check it out yourself.

The good thing about using Google code is that it comes with an issue tracker which you can use to track bugs, enhancements, improvisation requests and a lot many things.

What are advice(s) you will like to give someone like me working with team for first time?

Be modest and start small. Have small and achievable goals. Be prepared to re-write parts of your application given changing requirements. Fail fast, fail often. It's no fun to come up with a design change after you have written swaths of code. Decompose, decompose and decompose. Test often and develop incrementally.

Write unit test cases, if you are using Java, I'd recommend JUnit as a testing framework with Mochito as the mocking library. Thinking in terms of unit testable code forces you to modularize your components. Stay away from formal UML diagrams which would only end up bogging you down, at least at this stage. Whiteboard drawings when discussing things and a pen & paper when developing works wonders. With all that being said, experience is your best friend. Learning to walk looks much more of an achievement only after you have fallen on your face a couple of times to achieve it. Good luck.

commented: Nicelly writen +13
commented: awesome! +9

Your friends should already know about

  • Maven 2 or Ant for various tasks (fetch repositories, run procedures like compile, test, execute or package - often included in IDE)
  • revision control system - Subversion or GitHub
  • issue tracker - Bugzilla, Jira (commercial product), Trac
  • wiki - like these
  • blog - to tell others about your project and progress of it

I'm sure other guys can add some other products, but you can consider this basic setup

Ok, I'm new to Java in terms of Tools so would you please explain little on Maven/Ant? What do you prefer? For other Bugs tracker, Wiki, etc I'm comfortable with learning them.

Use a version control system. Having your code placed at a central repository which would then be used by collaborating developers is probably the best way to track of changes made to files and share code in a clean way without mailing each other 'zip' files. That being said, how you implement this in your project depends on a couple of things. Do you have problems with your code being publicly exposed/published?

If not, then head over to Google code which is basically a free project hosting solution provided by Google. You can to choose between two version control systems (VCS); SVN which is a centralized VCS and Mercurial which is a distributed VCS. Though the concept and adoption of the latter is gaining pace among the developer community I'd still recommend going with SVN since it seems to be version control of choice used all the "enterprisy" organizations out there. Learning SVN would would probably give you an upperhand over the other beginner programmers when it comes to trying out professional programming since it looks good on resume. Assuming you would be developing using Eclipse, there are plugins available for both the VCS's so it would definitely provide a pleasant experience when it comes to developing and committing your code.

If this *isn't* an open source project, you might have to shell out a bit and buy a code hosting solution which enables you to have private repositories i.e. repository wherein your code isn't publicly exposed. If you are OK with learning Mercurial, you might want to look into the plans offered by Bitbucket wherein they claim to provide one private repo even for free users. Since I haven't used the service, you might want to check it out yourself.

The good thing about using Google code is that it comes with an issue tracker which you can use to track bugs, enhancements, improvisation requests and a lot many things.


Be modest and start small. Have small and achievable goals. Be prepared to re-write parts of your application given changing requirements. Fail fast, fail often. It's no fun to come up with a design change after you have written swaths of code. Decompose, decompose and decompose. Test often and develop incrementally.

Write unit test cases, if you are using Java, I'd recommend JUnit as a testing framework with Mochito as the mocking library. Thinking in terms of unit testable code forces you to modularize your components. Stay away from formal UML diagrams which would only end up bogging you down, at least at this stage. Whiteboard drawings when discussing things and a pen & paper when developing works wonders. With all that being said, experience is your best friend. Learning to walk looks much more of an achievement only after you have fallen on your face a couple of times to achieve it. Good luck.

Ok I will go for SVN and I will be using Netbeans. But the problem with SVN is getting a concise tutorial to start with. I have found loong books but time is really short to learn for now. What do you suggest for me to start SVN? Also would you expound a little on Unit test/Junit? I haven't done unit test in any language yet.

Thanks all for you invaluable suggestions/Ideas. You cannot know how much they have helped me.
Thanks friends :)

You can search around for SVN tutorial which gives results like this and this. Gaining a full understanding of things would be difficult at this point in time, concentrate of getting things up and running and learn as your move on.

Also would you expound a little on Unit test/Junit

Again, explaining the concept of unit testing and the usage of JUnit in a single post would be pretty much impractical. My recommendation would be to search around for JUnit 4.X tutorials (there are a *lot* of them) and ask specific questions as and when you come across them.

Thanks,
Let me start implementing what you have said, then I will be back
Thanks a lot

For anyone wondering how, this blog answered it simply. I will let this thread on for a while

You should said that blog is about how-to setup some of above mentioned tools/applications instead of explanation why ;)

You should said that blog is about how-to setup some of above mentioned tools/applications instead of explanation why ;)

Where did my another post go :-O
Before I posted that link I had asked about how to setup SVN server to play with Tomcat. May be I forgot to click submit? That blog answered that Question and few other like you said.

That post, amazing is not there :-O

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.