5

We've been having constant requirement changes of having to choose which graphic rendering library to use for our project.

In a team of about 10 members, two of us are exploring the new graphic library. The team lead expects that we learn what's necessary within 2 days and introduce it to the rest of the team (wants the two of us to give a value-add to the other teams by introducing it to them so they won't be lost). We've told him that 2 days is ridiculous, so he asked us to give him our plan. We've already lost a few months in exploring some other graphic libraries, so the project is behind schedule. The other team members are developing algorithms that will make calls to the graphic library. They'll have to write some code using the graphic library too.

In such a situation, what is a good way to share knowledge?

  • Have brainstorming sessions everyday for an hour where they tell us their algorithm interfaces and we tell them the graphic library interfaces which they can use?
  • Give them a short overview of the skeleton of how their interfaces would fit in with ours and let them figure out the graphic library code for themselves?
  • Any other ways?
gnat
  • 21,442
  • 29
  • 112
  • 288
Nav
  • 1,173
  • 1
  • 11
  • 23
  • 1
    Very [similar question](http://workplace.stackexchange.com/questions/471/how-do-your-busiest-people-transfer-their-knowledge) on The Workplace (our sister site for members of the workforce navigating the professional setting). You can't access the site right now, it's in private beta, but it will be public soon (probably sometime this week, or the next). – yannis Apr 17 '12 at 10:02
  • @jonathan Hm? Read my comment again: `You can't access the site right now, it's in private beta, but it will be public soon (probably sometime this week, or the next).` - I know it's in private beta... ;P – yannis Apr 17 '12 at 11:51

2 Answers2

6

Spend the two days working with the new graphic library. Then work with one or at most two of the senior team members to port their algorithms to the new graphic library. After two weeks present a formal seminar of what you have learned from the porting effort to the entire team. Make a wiki.

Here is the rationale:

You need at least two days to figure out what the library is all about and write "Hello World".

You need to start doing some "real" work after two days in order to satisfy your team lead that you are not wasting time. He probably needs to report this up the chain of command so be sympathetic.

You need to start the integration work with senior members of the team so that if you run into problems these credible people can explain to the team leader why you are stuck.

You need to at least two weeks with the senior engineers and their algorithms in order to complete some meaningful programming, but any more than two weeks will make management nervous.

After two days and two weeks you need to hold a seminar for the other team members so that they can get started and management will see that knowledge is being diffused to the entire team, and so that the team does not get too far down the road with code that might require a lot of changes to fit the new graphic API. The team can then use the examples on the wiki that you have developed with the two senior members to start their own work.

Do not start by doing brainstorming - things will just get out of control and it will generate a lot of noise. Do not leave the programmers to figure it out on their own after a short presentation - some will get stuck and then complain, and there will be a lot of duplicated learning going on.

Eli Rosencruft
  • 526
  • 2
  • 6
0

While the task is not at all reasonable - two days to learn a new library??? - the quickest way to transfer the knowledge is to create code templates and examples that the other programmers can use to cough copy-paste to their implementations.

Something like

// initialize graphic subsystem
MegaDraw.loadDriver(DriverManager.locateDriver(DRIVER_OPENGL2));
// create viewport
Viewport vp = MegaDraw.createViewport(1, null, FOOBAR_DEFAULT);

// draw a line
Point p1 = vp.createPoint(0,0);
Point p2 = vp.createPoint(10,10);
Line l = vp.drawLine(p1,p2);

Once a programmer knows which methods to call, it's relatively easy to look up the reference guide for the details.

user281377
  • 28,352
  • 5
  • 75
  • 130