Master class - in Java

Master class - in Java

 

I’ve been a programmer for the last 15 years or so. I remember my early days of programming, the long hours of reading articles and looking at code snippets from various places. I think of these days with mixed emotions. I remember the pleasure and excitement of discovering new design realms and patterns on the one hand, and on the other hand the confusion and frustration of a young programmer attempting to understand which is the correct path to follow.

I’m also a violinist. I’ve been practicing violin for more than 25 years - as a hobby. I remember the long hours of practicing scales and etudes and the endless attempts to get the correct tempo and the difficult virtuous techniques I had to repeat for hours until perfection (or mostly until I wanted to take a break to play some PC games)

I tried to remember my violin studies … did I have any of the issues I had later as a young programmer - deciding which path to follow - which books to read, which technique to learn…

To the best of my recollection there was no such dilemma: I had a teacher - an instructor that told me the correct way to become a better violinist, how to master the violin instrument.

The idea for this post came during a concert of a famous artist which had a younger artist accompany him on the stage. The older artist nurtured the younger and helped him become an artist by his own. He was a mentor. When I started looking into some of my favorite musician albums it turned out that many of the albums were produced and directed by the “spiritual music mentor” - a most respected and popular artist who took the younger musician under their wings and instructed them to become better .

Now my next thought was - how can this mentorship culture be adopted into software engineering. Is there a great difference between music and software that made this mentorship so uncommon ( in software ) ?  What is the difference between a good piece of code and a good piece of music ? now the later question is a subject for a whole new post ...

Software profession, much like any other profession must have an instructor to guide the beginner into discovering the correct path of mastering the domain.

The great uncle bob came to my aid with his excellent blog and articles. In his famous blog  https://blog.8thlight.com uncle bob describes in a clean way some of the concepts that make this “Apprenticeship” process of becoming a student to a mentor (senior) professional engineer. The mentor guides and helps his apprentice study the “right stuff” to become better.

 

After I started reading more on the subject it seems there are a very good books on the subject:

 

  • The Software Craftsman: Professionalism, Pragmatism, Pride

  • Software Craftsmanship: The New Imperative

 

And more…

Still the question remains: why isn't everyone practicing these Apprenticeship concepts and techniques ? isn’t it obvious that once these methods take place, the programmers will not only become better and more productive but they will also be able to teach and preach to the next generation of new programmers and make them better in return ?!

I think that the cause of this lack of mentorship begins in the academy. Students gather in dozens in huge rooms to listen to a professor talking about the science of computer programming. When he talks about software design without coding and sitting one on one with a student - there is no way the student can understand and improve in practice. The “instructors to students” ration is just overwhelming and has no chance of becoming a true mentorship plan.

How can we make this work ?

In order for this concepts to succeed we need to literally copy the ways and patterns of the music teaching  - which was successfully implemented hundreds of years . When a student is studying to play an instrument he has a dedicated teacher session (one on one) in which he/she practice 90% of the time and get lectured the rest 10 %. The academic part of the music studies is dedicated to learning the concepts of western music scales and harmonics but not the actual coding … I mean playing…

We can & must achieve the same goals as the music academy has done for hundreds of years by producing excellent teachers and mentors that will lead each generation in the techniques and details of instrumental playing.

A Master class is a very successful way in which many students watch a open public study session between a mentor and a student. The session purpose is showing the audience the various  techniques and methods the mentor choose to practice with his student to achieve the most important goal of mastering the musical instrument.

The same manner the violinist wishes to master his violin and play the most elaborated and difficult paganini variations - we as programmers wish to master the techniques and methods of the language & code.

 

So let’s advocate the need for a mentorship plan both in the academy and in our place of work.

To view or add a comment, sign in

More articles by Lior Perry

  • 💻 LinkedIn Graph Visualization — Experiment

    This is not my usual OpenSearch / OTEL / Spark / Query feature post. This time my curiosity dragged me into a…

    1 Comment
  • An Efficient (In-Mem) Graph Storage

    (8 minutes) In short: I will describe our need to efficiently store (in memory) a large graph and be able to flush it…

    3 Comments
  • The case for Elasticsearch Join API

    Elasticsearch is the leading search engine as of this day - it has become the number one selection for thousands of…

    3 Comments
  • YangDb Data Fusion

    Data today is the main resource of many modern companies and organizations.Many of these companies utilize data to…

  • The Making of a DB

    Check out the new site www.yangdb.

  • From Graph To Elasticsearch

    From Graph to Elastic Introduction This is the second post in the series of Graph DB over Elastic Search. The First…

    3 Comments
  • Maintaining Document History inside ElasticSearch

    News: During the last year or so I've been doing some interesting things with elasticsearch - implementing Graph DB…

    3 Comments
  • A new approach for (Software) talent recruiting...

    Every company wants to recruit the best technical people - that is a fact. The problem is how to identify the real…

  • Ask the Right Questions

    Interviewing is a difficult job..

    4 Comments

Explore content categories