I work in a medium sized team (20+ developers) where I believe communication amongst team members is not as good as it could be.
Like most teams, I suppose, we have several systems that we build and maintain. We also use dozens of varied tools in our work such as Visual Studio 2008, Subversion, Resharper, Tibco, TeamCity etc.
We also develop using an "Agile" methodology...and I put that in quotes since it seems more like "Rush to get this feature in asap...we'll have the spec for you in about a week...just start working on it now but be sure to unit test it and have it code reviewed by someone".
Because of this, we have systems that are poorly designed and thus become difficult to maintain....so we end up with a handful of people as "gurus" who are intimately familiar with the systems they created.
Additionally, because of the pace of the IT industry in general we are often required to use new technologies and the latest versions of the tools we develop in.
My point is not to complain and say "oh woe is me things are difficult"....rather my concern is that unless our team starts communicating better we're going to stay stuck in this rut.
Let me try to explain what I mean by communicating a little better....
Recently we just upgraded from VS2005 to VS2008...which is awesome in my eyes cause I like working with the latest technology. And we also moved from CruiseControl.Net to TeamCity...which is all well and good.
...but....we never really got any training on VS2008 or the new features of C# 3.0...and not even a memo about TeamCity... As IT people we seem to be expected to adapt and learn as we go.
Now obviously I can find that info out myself by reading blogs and following the latest news about the tools I use...which I do....but the practice of continuous learning isn't really practiced by everyone on the team so you end up with people using new features without really understanding them...
Additionally, our team has recently been instructed to start conducting code reviews...but without any guidance as to what that really means....at the moment it just means give your code to someone..anyone...on the team and have them look at your code...whether for two seconds or two hours its not really well established or uniform across the team....if they are even being done at all...
The same is true for writing Unit Tests...we've been encouraged to write them...but its not really been communicated team wide what the best way to write them is...so some developers try to write them, find it difficult, and either write poor unit tests or give up and decide unit testing is a bad idea...
The idea I've come up with to help improve the situation is to organize a series of meetings as a Developer's Forum...in these meetings a different topic would be presented by a team member with the remaining time being devoted to discussion amongst the developers.
One week the topic might be an advanced new feature of C# and the recommended best practices around it....and the next might be about Code Reviews and what to look for...while the next could be an introduction to an obscure legacy system.....the discussions could then be used by the developers to share their experiences and problems. Ultimately the aim would be to have a place where ideas and information can be freely shared amongst the developers.
I have got the buy-in from my managers and several of my fellow developers to get something going...but I have been told that such an idea has been tried before and eventually died out.
I want this idea to succeed and not be something that I'll push all by myself only to have it die when I eventually move on from this company.
How then can I encourage my team to communicate better? Does my idea of a developer's forum sound like a good idea? What can I do to prevent it from dieing out?
Is there something better that I can do instead that I'm not thinking about?
More than just starting a series of meetings....How do I encourage and influence my team to start performing as a team? I really enjoy my job and believe I'm working with an excellent group of developers...but I also really want to add value to the team in an area that I see is a bit lacking at the moment. How do I do this effectively?