On 15-05-06 06:45 AM, Robert P. J. Day wrote: > yet another process-oriented question about git ... not long ago, i > was teaching a 1-day intro git course and, early on, one of the > students mentioned that one problem they were having with their > current VCS was too many people trying to check in changes and > stepping on each others' toes and causing conflicts, and how did git > solve that? > > i briefly mentioned git's merging ability and so on and so on but, > in the end, i said that no tool was going to solve that; what she was > talking about was a workflow issue that could only be solved by their > developers *communicating* with each other; that is, *talking* about > what parts of the code base they were working on so they didn't keep > bumping into one another. and i emphasized that no level of > sophistication of a VCS could replace developers talking to each > other. > > i didn't think that was such a controversial position, but she did > *not* take kindly to that. we were only about a half hour into the > course, and she was already preparing to dislike git because of what > she understood as its first major failing. i stuck to my guns, though, > and by the end of the day, once she had a better understanding of git, > she seemed a lot happier so, crisis averted. > > but, was i wrong? the position i took was that, regardless of the > sophistication of your VCS, if you are *constantly* fighting with > merge conflicts, then the problem is not with the VCS but with your > team's workflow. and since git was a distributed VCS, that actually > had the potential for making things worse since there was (typically) > no concept of an exclusive check out that prevented others from > working in the same area. > > i did suggest that there were alternatives. one i proposed was that > all changes to the code had to relate to an existing ticket in a > ticket system, and that developers should be required to (exclusively) > check out the ticket to work on it. > > but, in the end, what are others' thoughts on this? > > rday > Robert: You appear to have hit the nail on the head in regards to development projects that suffer from fragmentation and loss of focus. Communication IS key, and tools are only as good as the team using them. I've run companies and development teams during my career and I quickly learned that adding people and reducing communication effectiveness is the quickest way to fail to get projects completed on time and on budget. I've been surprised recently by my 16 year old son (of all people) - he's involved in gaming development - and I've been shocked at how well they use Teamspeak and team communications across time zones and geography. His initial exposure to Teamspeak was as an enhancement to the gaming experience - players could trashtalk and make fundamentally solitary remote games into a vibrant social communication arena (and learn new ways to "express" themselves in other languages). This is a change from my mentality in that development communication has always been face to face, structured and somewhat formal and scheduled. I've listened to his team meetings and they are far better at communicating and using the social aspect of team dynamics to keep things focused and control/eliminate work outside the group project goals. They use the social pressure of group meetings on Teamspeak to handle the role of who does what, what changes are important and priority maintenance. There does not seem to be the need for top down hierarchical manager-driven control - the society of the group handles things quite well and effectively. Getting things back in focus, git is one tool that needs to be implement in concert with other necessary project tools to be effective. Although a VCS is an important element, it is perhaps less important than using other tools to help manage today's complex, distributed development environments that may span time zones, cultures and languages. It seems making team communication a positive rewarding social meeting place has more of an effect on things than I ever thought it would. -- Bill