I'm looking for a way to easily share custom tooling, which was developed to facilitate analysis or development processes, to other teams. These tools were usually developed for a specific project, or by a specific developer, but may very well be useful in other projects. We don't really have a way to make other developers aware of the existence of developed tooling.
I am one of the developers, now in a position to advise the company how to correct the situation.
For a bit of background; we work in data migration, so a lot of SQL development. Our teams are on average 3/4 developers, 2/3 designers, 1 architect and 1 project leader. Projects usually last about 2 year, and most of the time the team is dedicated to the project until it is finished (though a team member can have multiple projects some of the time). There are about 20 developers in the company.
These developers have a "personal portfolio", so to speak, of tools to help in their work. There is a great variety in those tools; SQL queries (for performance analysis, result evaluations, resetting collations in all tables, dynamically restoring databases, database management etc.), C# solutions (equally very varied; Excel analysis, anonymous data generation, data tests, query analysis etc), even old-fashioned batch files to re-run specific tests or components.
The problem we have is two fold: Firstly, the old hands know who to turn to if they are looking for a specific tool, or a tool in a specific area. However, sometimes tooling exists which could help their work, but as they don't realise it exists, they aren't looking for it. So they spend time and effort doing the work by hand, miss out on available analyses, or develop their own tool. Also, new hires don't yet know who to turn to. So the first problem is making people aware of what is available, and who to ask for information. Since there is a large variation in tools, a list for people to read is probably not very useful. A list would also not help making people aware of what they are not actively looking for.
The second part of the problem is perhaps even tougher. The most productive tool developers (3 or 4 in particular) created these tools (partly or wholly) in their own spare time. Unprompted, of course; these are dedicated people who enjoy programming, and they are motivated to do this by the fact they are making something to make their work easier and/or better (and perhaps to proof it can be done, or just to learn how, in some cases). However, historically, they've felt their efforts didn't receive appropiate appreciation when they did share the result. The tools they created and shared didn't become public knowledge, because there was no process for it, it was viewed as at most proof of concept or the applicability was misunderstood. Naturally, this made them unwilling to proactively share the tools they made. When asked by a fellow developer they'll happily help where they can and share what they have, but they didn't see the point of spending effort trying to sell it. Efforts are being made, and have already been made, to change this; for a start, tools used to be approved by a single person; if they had any misgivings at all, the tool would be dead in the water. Now there is a multi-disciplinary board to discuss and evaluate, and developers are given more influence and have a place to propose changes knowing it'll be properly discussed. A process for tool development on-the-fly is still missing though, and it is hard to find a framework that will fit the many small and large tools that are floating around.
I can't imagine this is a unique situation, so I imagine other people have tackled this before. Does something exist to help here? Is there a way to spread awareness of what is available, and a way to make what exists actually available? How do I approach this?