Saturday, April 04, 2009

Applied Programming: Reuse

Information Technology / Programmer wannabes invariably have the word 'Reuse' drummed into them almost from the first day as a student. This is one probable reason we Indians are usually good programmers. We reuse everything, even our Soul ( see: reincarnation )

Jokes apart, the reuse that is drummed into an IT student is usually in the context of OOP, or programming where we talk of reusing the code written once to be used elsewhere. The term reuse, though, goes much further. We reuse a great many things without even realizing it. For instance, software development contracts will often have similar, even almost identical clauses. The reason is that similar problems are expected to arise, and therefore are dealt with in a similar manner. Whilst these rudimentary applications of reuse are valuable, reuse itself can be far more valuable by way of mentoring (something that only came to mind after I read this)

The reason I choose to link mentoring to the concept of reuse is because mentoring provides an apprentice with the opportunity to capitalize upon the experience of the mentor. Organizations such as IBM, Microsoft, InfoSys have mentor programmes to help their employees growth.

What should I look for in a mentor?
The thoughts that come to my mind are -
  1. Trust & Communication (the two must go together)
  2. Better than average understanding of the domain (Finance, Software...) under which the mentoring occurs
  3. Better than average Time Management skills, and as a corollary - not a workaholic
  4. Compatibility
I put in the third point - Time Management - with some diffidence because -
  • It simply doesn't make sense to assign someone as a mentor, only to find they're not able to justice to either their primary role or their mentor role.
  • The apprentice might pick up the bad-skills too
  • Poor time-management might also mean a stressed work-style; in the long run this could be detrimental to health, and to teamwork.
In winding up, reusing knowledge gained by others is something we do all the time - right from the first 'A' at school, this continues throughout life. The broader form of reuse of experience by Mentoring provides a means to build a relationship between the mentor and an apprentice that could potentially be capitalized upon by the organization.

1 comment:

Sylvain St-Germain said...

So true. Mentoring is likely the most powerful reuse one can do. This is about teaching someone to fish comparing to giving them a fish. Code reuse is closer to "giving a fish" than showing how to fish - of course.

Furthermore the first form of reuse you are referring to can also be problematic in services organization like ours where transitioning assets from one project to another can be viewed as intellectual property breach.

Interestingly enough and my next post (still in the works) is about this same topic!

Stay tuned!
http://itispi.blogspot.com