transfer of knowledge in a team
Members - Reputation: 621
Posted 16 August 2012 - 03:06 AM
How do you get your team to share their know-how between individual developers? Not just product-specific knowledge like an implemented concept or piece of code but also general knowledge like new programming techniques, a new API, usage of a tool etc.
While writing a (good) documentation for a piece of code or a concept is curcial, I found that in busy times it sometimes is not even looked at by the other team-members. Not because it would bore them, but because as often as not the comments are "Cool, I have a look at it, when I'm done with [whatever I'm doing]" and then it is promptly forgotten. I think here it helps if the documentation is stored at a central point so it can be found when in need of it, but still it would be better if the knowledge would be shared before the urgent need to understand this concept arises.
Moderators - Reputation: 7110
Posted 16 August 2012 - 07:24 AM
Making games fun and getting them done.
Please do not PM me. My email address is easy to find, but note that I do not give private advice.
Members - Reputation: 621
Posted 17 August 2012 - 01:34 AM
Knowledge gets shared in daily scrums. Knowledge is centrally available on the version control system.
I'm not sure if the daily scrum is the place to share the bigger chunks of information, as we tend to keep them short and crispy so the guys can get back to coding and get "the itching out of their fingers". Maybe we should reserve some time at the end of a sprint to catch up with stuff like this
Wiki, code review, peer "extreme" programming?
Pair-Programming might be a good idea. I just read something about "coding-dojos" ( a youtube-video explaining it) and it looks like a good way to get the team more experiecend in terms of coding. has anyone experience with this?
Crossbones+ - Reputation: 4205
Posted 17 August 2012 - 09:37 AM
One of the things that I consider key to sharing info is floorplans (where people are in relation to one another).
I've found that the best configuration I've personally used is something roughly like this:
P P P
Q P P
C C C
------- = a passable row
P = A developer (Programmer)
Q = QA
C = Creative (Design or Art)
M = Manager
The most important factor here is programmers, next to one another, able to face each other's SCREEN easily (this is why they are not face to face).
I've had a lot of success with teams where programmers were just able to iterate and troubleshoot easily. This led to informal code reviews where it wasn't necessarily the lead reviewing the code of a programmer, but another developer. It often came down to quick chats about why such an approach was chosen as opposed to another, and you could tell at least one of them always learned something (either because they used something crafty the other had not thought of, or because the reviewer came up with a more efficient way or tech to do this).
Another key element here is having the QA as part of the programmer rows. More often than not, it allows for programmers to get a "Live repro" of a bug instead of filing it was "cannot reproduce" or something similar. It reduces the back n forth on your bugbase. Be aware however to clearly instruct your QA not to bug the programmers every time they find something and to use the appropriate DB as this could reduce productivity.
Mixing professions is another key factor here. The above arrangement does not particularly reflect this, but I think that on most occasions, you need to have your artists and designers at an "ear's distance" of the programmers. Most of the time, they don't need to see what they are doing per se, but they need to be able to catch on problems/complaints when they arise and be able to react.
A lot of questions can then be formulated through words, and on some rarer cases, standing up works.
Now the positionning of the manager is important too. I've always considered the manager as a part of the team, yet, if you look closely, he is a lonely/stranded island and there is a specific reason for that. However, don't fool yourself into thinking that you can fortify yourself there. Despite what the disposition would suggest, you need to be as open as possible, and though it is much harder, you need to be part of the team, not leading it.
I won't deny that I've learned much more from being "inside the team" but I've grown to consider the following two elements:
- If you are "in the team" you, the manager, instantly become the go-to guy, even though you are NOT the go-to guy for most things.
By removing myself from the team, I've seen people ask each OTHER's opinions instead of coming straight to me. Most production-related concerns still came to me, and there was always the downside that a few production concerns that should've gone to me didn't, but all-in-all, there is a massive gain here in letting teams empower themselves. This is where most exchanges occur.
- Since people tend to come to you if you are too close, and that you generally deal with people "outside of the team" anyway, you become a disturbance to your team. I've had to deal with a manager that wanted to be "in" his team, but had other functions which had him call people all-day-long, fling in-and-out of meetings all the time, and hold meetings (believe it or not) at his own desk. Needless to see the impact on concentration and morale amongst the team members was terrible.
On a sidenote, and not particularly related to the topic, but still of general interest, having the tester on the team also lets you buildup the skillset of that tester. Not every studio I've worked for seemed aware of this, but there is a lot to gain by empowering the tester as he can become a focal point for the team, a source of reference that replaces the manager on certain levels, and I feel this is appropriate as they spend their time playing the game, while the manager hardly gets to play at all in most occurences.