In a software development organization doing contracting work, where there are typically only a handful of developers working for any one customer and there is a fairly large number of customers, what are good ways of building a common culture and developing the skills of the individual developers?
Work practices within each project are typically largely set by the customer (though it might be possible to exert some influence) and the projects tend to be full time and long term. This means developers have more attachment to the customer than to their own organization and each learn idiosyncratic ways rather than a common culture. Many of them are rather junior and will therefore be easily influenced by what they see in a project.
An obvious idea would be to have team meetings where teams can exchange experiences and discuss best practice, but I'm not sure how to keep these productive. Team members will also tend to be reluctant to bring up problems in their projects at such meetings.
Any ideas or experiences?