Monday, April 21, 2014

Training programs for developers in FLOSS companies: a need

My Experience

When I started with Free Software, there was a need for training people in the new tools that were emerging, not just to users, but also to professional that came from the proprietary world. There, the formal learning culture, through certification, is well established. Due to the business models around the delivery of technical information from soft companies to its channel and customers, investing significant amount of resources in these certifications programs was justified. For professionals, it is a way to improve their curriculum and skills.

Before embracing Free Software, I developed my career in the training sector so I made a living trying to solve this problem for companies that were in the process of discovering Free Software.

In the FLOSS world, these investments is not seen as a "requirement". Although the Free Software commercial space is getting more mature and more and more companies provide these kind of trainings, the general mindset is that you learn by doing, that the code and resources are out there that the formal training is not worth it due to its high cost, that Free Software is a learning environment by itself and that, by simply providing "learning time" to your employees they will develop the skills and learn the concepts they need. It is the typical "engineering innovation" kind of culture.

At a management level, the culture of getting training is solid, but many Free Software companies fail in spreading that culture to the technical level. In my 15+ years as professional I have seen very few companies that takes seriously the improvement of employees skills through training, specially in the engineering area.

Training program

Like when leaning a new language, in order to improve your technical skills, formal training is needed, specially at two points in time:
  1. At the very beginning of your learning process, when you are facing something "new".
  2. When you reach certain level where improving is not a matter of practicing any longer. It is the case when you make yourself understandable but need to express properly.

In the same way professionals put effort in being efficient in their everyday tasks, it is smart to be efficient in learning new concepts, developing new skills. Formal training in the first case is about that.

In the second case, in my opinion, there is no substitute for formal training. There is a point in which your investment in "studying" is less and less effective, reaching a point in which investing effort in "improving" is not perceived as worth it anymore. Internal training should cover this second case.

Despite its cost, investing in having junior developers formally trained by senior ones is worth it.  Since nobody is senior in everything, seniors become juniors at some point and the other way around. So having regular training sessions covering the first case (introduction to topics) given by employees have interesting secondary benefits.

For the second case, I always recommend going for external trainers. Even in the case you have the experts at home, bringing external people always adds value, a different vision. It is important also that that person is not just a good professional, but a good trainer. It is not so common to find both skills in the same person....at home. If you have one of those.... send him/her to train your customers, not your employees. You will get a higher return.

Do not forget to evaluate and reward your internal trainers. Provide them training also, so they become better trainers. This actions should be part of a more general designed path to increase the number of engineers within your organization that can be successful facing customers and promoting the use of your products and technologies in events. It is what I like to call Engineering Marketing.

One of those secondary benefits you might have not think about is the technical documentation generated for these sessions. In some cases, specially when you are training in technologies or products your company develops, these material are a perfect base for the technical documentation you provide to customers. You can eat you own food also in this area or, at least, design it to give it an early try.

Technical support engineers and presales ones are used to "making themselves understandable". When thinking about creating or improving such a program, think about them as potential trainers. If you have technical writers in the company, involve them too in the material generation. Yes, it increases the cost of the program, but it increases the outcome too. So instead of focusing only in the cost, try to find ways to translate part of the output to your customers too, so the investment is also worth it from the "sales" perspective in the short/mid term.

Some tips about the training sessions.

In my experience, if your company is young, these sessions should take place on Friday, after lunch. It creates a good atmosphere during the less productive time of the week. It is the "fun time". If your company is a more senior one, it is harder to have a significant number of attendees on Friday afternoon so Thursdays afternoons, at the end of the day, would be the best option.

It always come a question when designing these sessions. Should they be part of the workday schedule or should they take place after work as optional?

In my opinion, these sessions should not be mandatory but they should become part of the working hours. They need follow up though, so evaluation is needed. There are many techniques to make these evaluation processes part of the learning process itself so they are not perceived as "boring". You also have to module the consequences of "failing" in these actions so you incentive participation. Having extra sessions for those who do not accomplish the goals can be a good compromise.

Who can you talk to you about this?

There are two people that I recommend you to contact if you want to know about a successful experience in having seniors training juniors as part of the organization culture. They are Miki Vazquez and Gonzalo Aller.

If you do not have a well established training program within your engineering dept. these two people might help you from different points of view: Paul Brown and Roberto Brenlla. They might help you to design and follow up a technical training program, in collaboration with your HR dept. and your technical managers.

Do you know other professionals or companies who are driving successful internal training programs for engineers (employees)? If so, please let me know. I would appreciate it, and some readers too.
Post a Comment