Nerseus
Danner
First, congratulations to me - my company has been bought by 3M!
As we moved from a small company to a large company (from 8 to about 80) we experienced a number of issues - which we've overcome (not without a lot of work and growing pains).
Now we're expected to double in size in the next year (up to about 150 people). Besides the issues of just finding the right people, we're finding ourselves with new kinds of problems, such as keeping our codebase consistently high quality.
The main question is (I hope):
How do you share knowledge among many developers? Our company has a product that is sold from state to state (and soon to be international). Each area is overseen by one architect. Each implementation (each state) has a technical lead that knows that one area pretty well and can assign work and think of issues as new features are added.
The goal is to get that knowledge that is currently only known to 1 or 2 people into the hands of many. For example, if I leave the project we need others to be able to come in and take over. Also, if I leave the project for a year and come back, how am I to remind myself of all the "gotchas" that are currently just in my head?
I can think of 3 main options, but maybe there are more:
1. Paper documentation. This would involve writing "Tech specs" (as we've internally called them) that document the code at a medium level (down to class and method names, stored procedure names, etc.). These are organized around some subject area (generally some UI). They are meant to be kept up to date with code changes.
2. Test Driven Development (TDD). This would mean the code documents itself through unit tests. To understand how a system works, you look at the tests. I've never done this before, but seems like it may only be 1 piece of a puzzle.
3. Funnelling knowledge and review. This is what we have now - a few high level people know all about the system. They hand off work and then review the code to make sure there are no bugs (those that a non-informed dev wouldn't know about).
-nerseus
As we moved from a small company to a large company (from 8 to about 80) we experienced a number of issues - which we've overcome (not without a lot of work and growing pains).
Now we're expected to double in size in the next year (up to about 150 people). Besides the issues of just finding the right people, we're finding ourselves with new kinds of problems, such as keeping our codebase consistently high quality.
The main question is (I hope):
How do you share knowledge among many developers? Our company has a product that is sold from state to state (and soon to be international). Each area is overseen by one architect. Each implementation (each state) has a technical lead that knows that one area pretty well and can assign work and think of issues as new features are added.
The goal is to get that knowledge that is currently only known to 1 or 2 people into the hands of many. For example, if I leave the project we need others to be able to come in and take over. Also, if I leave the project for a year and come back, how am I to remind myself of all the "gotchas" that are currently just in my head?
I can think of 3 main options, but maybe there are more:
1. Paper documentation. This would involve writing "Tech specs" (as we've internally called them) that document the code at a medium level (down to class and method names, stored procedure names, etc.). These are organized around some subject area (generally some UI). They are meant to be kept up to date with code changes.
2. Test Driven Development (TDD). This would mean the code documents itself through unit tests. To understand how a system works, you look at the tests. I've never done this before, but seems like it may only be 1 piece of a puzzle.
3. Funnelling knowledge and review. This is what we have now - a few high level people know all about the system. They hand off work and then review the code to make sure there are no bugs (those that a non-informed dev wouldn't know about).
-nerseus