Working in a group has worked very well for me this year. Being able to split up some of the work has made my life much easier. I have had a few problems as well, figuring out the logistics of actually working on the project has been somewhat complicated. Even though we have the ability to work separately (using subversion), we have found ourselves working together on a single computer (which is rather inefficient). So, as I have learned, working in groups has both its upsides and downsides.
Benefits:
Being able to split up some of the work in the development process has made life much easier. As with most projects, there's at least some amount of tedious work. In the case of Iteration 1 for our project, formatting all the regular expressions was slow but mostly easy work. Being able to evenly split that work up made the development process go by much faster.
As for dealing with the complex parts of the development, being able to brainstorm with my project partner is nearly invaluable. My partner thinks somewhat differently than I do, so being able to bombard each other with ideas normally leads to some good results. In the case of Iteration 1, we had a hard time making a regular expression to recognize line comments. Being able to bounce different ideas off of each other, made the trial and error process go much faster.
Having a group of people also allows for a wider range of resources. My partner has taken different Computer Science courses than I have, so he was able to reference different past projects than mine to find ideas for our current project. We were also able to network with more people, to discuss and ask general questions about the project with a wider range of people.
Challenges:
Along with all the benefits, there is also the inevitability of encountering challenges. I haven't had many problems this semester with group work. Other semesters, I haven't been quite as lucky. In the first Computer Science course I took, my lab partner wasn't much help. He would tell me every time I asked him to do something that he couldn't figure it out. Turns out, he wasn't even trying. He didn't even know how to run the programs we were writing. I ended up doing most, if not all, the work. However, since we were working as a group, he ended up getting the same grade as I did. So, accountability in a group isn't the easiest to ensure.
Also, in some cases, a group partner of mine would get most (if not all) of a project done before I had the time to look at it. Since I wasn't able to help in the development process, I didn't understand the program as much as I had hoped. This would then feel as if I didn't know enough to continue on to the next project.
So, to compensate for the challenges, I normally try to make sure my partner(s) are holding up their end. Using Subversion has helped me with that a lot. Checking the log and being able to see the differences between the versions makes it very easy to account for the work being done. I also try to be all around more proactive on the projects, so I don't get left behind.
In most cases, I enjoy working in groups. Being able to work in groups is a requirement for many computer science related careers. Knowing that I'll be able to enjoy working it in a career as much as I do here makes me very sure I chose the right career path for me.