Why you should pay developers to learn

A true story

We were having a meeting with a customer and he had just presented a project idea. He wanted us to give him a draft system architecture, supporting his project technical requirements. At one point, I was telling him that incremental development requires architecture evolution as well.

When I said that finding the right architecture is also a learning process, he cut me off short with the following sentence:

Do you expect me to pay you to learn?

To save the day, I told him I was referring to the business domain, we needed to fully understand in order to provide the right architecture.

Do you want your project be developed by an unskilled team?

Unless you hire a highly expensive consultant, chances are you need a software development team for more than a few months. If the project spans over a year or more, how would you feel about a team that never has time to level up?

Software development is one of the most knowledge-driven industry, yet many expect developers to be readily equipped with everything it takes to solve any given problem.

Languages keep on evolving. Relational databases keep on adding new features. There’s a plethora of NoSQL databases most have never ever worked with. Successful frameworks keep on releasing new versions. New techniques emerge (e.g. reactive programming or micro services), while others keep on getting more and more traction (e.g. functional programming).

To master all these technologies and techniques you need to spend a considerable amount of time.

When are developers supposed to level up?

There are extremely passionate developers dedicating their spare time to reading books or technical articles or studying new technologies, but they are an exception to a rule.

Most developers acquire all knowledge during their job and if you don’t invest in their skills they will never grow within your team.

The right place and time to learn software is during your job.

Unfortunately, not everybody in the software industry shares this vision of mine. Business owners don’t want to spend resources (time and money) on training developers.

I really believe it’s a matter of perspective. If you don’t manage to get any direct or indirect revenue, you might be tempted to think you’re wasting money. But if you plan it properly, you can easily turn it into a very profitable investment.

Learn for profit

High quality software demands solid knowledge and expertize, but accumulating skills requires more than just reading. You need to become an active learner to maximize knowledge acquiring.

I used to be a passive learner myself, only reading books and articles while constantly having the impression that I don’t actually make too much progress.

When I started writing this blog, I realized I was now learning through teaching.

When I became an active StackOverflow user, this feeling was reassured.

When I started an open-source project, I finally realized that learning is only a side effect of hard working.

All these examples are what active learning is all about.

From the business perspective, it’s not difficult to foresee where the return of investment might come from:

  • A more skilled development team can leverage more complex projects with a lower risk of failure.
  • You can master a certain technology and start offering professional training and consultancy services
  • You can write books and sell them through a self-publishing program. Ninja Squad’s AngularJS book (French) was a profitable investment after all.

All in all, expertize always sells.

Investing in developement skills can definitely payoff. Many developers enjoy a working environment where they can grow, so this move can actually be beneficial for employee retention as well.

Starting on this journey is not as difficult as one might think, and I’m going to present some of my favorites active learning activities:

Preparing a training material

Let’s say you want to acquire a certain key technology skill in your company. Some developers should be partially allocated for studying and preparing a training material on this subject.

A workshop is always a better choice than a simple presentation. When the training material is ready, you have accumulated both knowledge and a training base too. You can now start offering training or consultancy services on that particular technology.

A company blog

Every software company accumulates experience, yet few of them actually share it with the rest. A company technical blog can be a great marketing instrument. A high quality blog can prove your domain knowledge and expertize.

You can build strategic partnerships with DZone or JavaCodeGeeks and therefore help promoting your business as well.

Answering StackOverflow questions

Contributing to StackOverflow is totally underrated. If you really want to become an expert into a certain domain, you should start answering question on that particular tag. When you answer a question you are reiterating your knowledge.

Sometimes you only have a clue, so you start investigating that path, which not only provides you the right answer but it also allows you to strengthen your skills. It’s like constant rehearsing.

After all, repetition is the mother of learning.

Contributing to open source projects

If you want to boost your design and coding skills, you should probably start contributing to open source projects. Browsing code can unveil certain patterns you’ve never previously applied.

Most frameworks authors are incredibly craftsmen and their code review can teach you a lot about best programming practices. If your company makes heavy use of a certain open source technology, it’s a great idea to start contributing back. The best way to deal with an annoying framework issue is to actually fix it.

Nobody knows a framework better than its own maintainers.

Writing and selling books

You can summarize all your experience in a book. Writing a book is very intense learning process as well. By the time you are done with it, you can really say you’ve come to master the subject.

I chose Leanpub for my High-Performance Java Persistence book and it’s been a wonderful experience so far.

Amazon offers self publishing programs and selling books can become an alternative revenue source and an advertisement as well.

Conclusion

Embracing learning can be a competitive advantage for your company. Your products carry your company name, and a software product quality mirrors the development team professionalism.

In the end, you are not only investing in individuals, you are investing in your own company as well.

If you liked this article, you might want to subscribe to my newsletter too.

Advertisements

8 thoughts on “Why you should pay developers to learn

  1. It’s reasonable to expect a person to do “continual professional development” meaning some effort keeping skills up to date outside of their job. On the other hand in this chiselling world where companies want to be so tight as not spending any money they can avoid they have to expect to spend some time upgrading their production hardware (be it computers or developers) every year.

  2. >>There are extremely passionate developers dedicating their spare time to reading books or technical articles or studying new technologies, but they are an exception to a rule.<<
    Yes, you are right, extremely passionate developers are exceptions, nevertheless you need time even if this is your life passion. And nobody should sacrifice time that they should spend with the kids or family to improve for something that the company he works for will mainly benefit. Especially in service companies, that have different projects from different areas of business, it's very important to have the appropriate skill set in the company and they usually get good money for providing the right people. Hence, I think the companies should pay for improving their people, or at least part of it in some way. Either by paying courses, supporting people to attend conferences or given them a day now and then to concentrate on improvements. The story can go on…it's important that it reaches the ear of the decision makers 😛

  3. Well I am curious about integrating learning process on day to day basis. These tips mostly apply out of the work. Do you have any other ideas like:
    1. Informal code reviews.
    2. Sharing learned tips / articles related to work on twitter or some other feed which everybody reads.
    3. Paying part of learning activities outside of work.
    4. Having internal trainings.
    5. Providing company resources (like space) for work related meetings for people outside of company.

  4. I have a nuanced opinion on this. On the one hand, I agree that a company ought to plan and allow for its developers to acquire new skills and learn; in a field of such complete flux and evolution, learning is necessarily a part of the job. On the other hand, I see the merits of the arguments of people who say that learning is up to the individual and should be done on the individual’s time. My perspective is that I think it’s a good idea (for retention purposes and other reasons) for companies to promote learning time for developers, but that it’s ultimately up to the individual to manage his or her own learning, notwithstanding what any company does or does not offer.

    1. When it comes to learning, the most effective techniques imply taking an active approach. That’s why every individual is ultimately responsible for investing his own energy into learning. A company can only provide the right context for developers to level-up without burning-out or sacrificing all of their “spare” time.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s