Mastering Context Sensitive Domains
by Lidor Wyssocky

In a recent article James Shore describes Software Design as context sensitive. He rightfully claims that every practice and guideline should be questioned and adapted to the specific context we are currently working in.

This is more than true. Design is context sensitive. Context sensitivity, however, is not unique to the design domain. Many other software development activities (if not all of them) are context sensitive. Trying to describe testing, coding practices, unit testing, documentation, project management, etc. as a list of rules and guidelines cannot capture their real essence. It will not help a developer, a tester or a project manager to come up with the optimal solution for their project.

So, the question is: how can someone master these context sensitive domains? Learning practices from books, courses and presentations will never teach you how to correctly consider the different tradeoffs, forces and constraints in a given context. In order to master these domains and become a professional, you have to develop intuition. You have to have the experience to enable you to correctly apply knowledge in context.

How do you gain this experience and develop such intuition?

Ongoing Mentoring

The key is ongoing mentoring. Systematic professional mentoring, which is well-integrated in the development process. Ongoing mentoring means working with a developer (or a tester, or a project manager) in the context of her project throughout the project and helping her build her experience in a guided manner.

A mentor works with the mentee in the context of her day-to-day work. Together they deal with real-world challenges and real-world constraints. Together they find the optimal solution for each case. The experience of the mentee grows, so in time she will be able to practice it in a new context – a context she has never worked in before. This is what being a professional is about.

Just like learning to drive, software development professions should be taught in the real world – during real projects. It should be taught through systematic professional mentoring – mentoring which is part of the development process.

Part of the trick is elevating activities which are already part of the development process and turn them into mentoring activities. Reviews are probably the best platform for ongoing mentoring. Using professional reviews you can mentor developers and improve their skills while perfecting your software products at the same time.

Mentoring is the only way to systematically nurture your human assets for your benefit and theirs.

***

See also this sample chapter draft from The Quality Within, and at an overview of The Lucid Quality Approach.

Share this post:These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • BlinkList
  • Reddit
  • digg
  • NewsVine
  • blogmarks
  • Furl
  • Netvouz
  • Spurl
  • YahooMyWeb

Optimize Your Software Development

See how I can help you develop software more effectively

3 Responses to “Mastering Context Sensitive Domains”

  1. Jürgen Ahting Says:

    Have you looked at this: “From Apprentice to Journeyman guidance for the aspiring software craftsman“?

  2. Lidor Wyssocky Says:

    Hi Jurgen,

    The link you provided seems like a great resource. It portraits the learning process from the developer’s perspective: what a developer should do to become a professional.

    What I am trying to describe is: what the organization should do in order to turn its developers into professionals for their benefit as well as the organization’s benefit.

    These are two complementary approaches for the same problem.

  3. Continuous integration « Arnoud on Software Development Says:

    […] My experience is that getting the benefits of continuous integration is a bottom up process where each layer builds upon the one below it. There are a lot of best practices out there but no clear cut recipes. What is the best way to do it? It depends. […]

Leave a Reply