Like Athletes, Developers Need Practice Before Performing
Developers always learn new things. They read books and blogs. They attend conferences and workshops. They are expected to apply this newfound knowledge in their projects to increase software performance, security and quality. But projects are all about delivery. Where and when can a developer practice theory? This is an often overlooked element.
Think of a developer as an athlete. He or she is aiming for a medal in a competition. A figure skater can’t just perform a triple axel in the Olympics after seeing it done on television. This requires a lot of practice, so that when the time comes, the performance is flawless.
Of course, programming doesn’t have to be flawless. One must remain pragmatic, yet it still requires practice before a concept can be safely implemented without breaking the project or missing deadlines. Who will pay for that practice?
Let’s go back to our athletes. In case of a team, it’s the manager’s job to secure funding. So a team is basically an employer, that allocates much time for practice between the matches. There’s no point in sending a team with a play if they only saw it once on paper.
Now let’s translate that into IT. Work is divided into projects and then further into iterations, depending on your methodology. Say you have a two-week iteration at the end of which you must deliver a fixed number of features. How many days can a developer afford to try various solutions before settling on the one? Two or three days don’t sound like much. Let developers poke around, see if the newly acquired concepts are applicable and then focus on delivering the features for the remaining duration. If a concept works, great. If not, better luck next time.
I also recommend to use any idle time between projects to practice some more. Perhaps try out new languages, frameworks or even implement a prototype for something that has nothing to do with any project. This is also known as R&D and many countries have credits for that. The thing about R&D is that failure should always be an option. You can’t afford to fail during a project. Therefore, you must allocate time for it in a way that won’t hurt the project.
Developers need a sandbox. If you don’t give it to them, you can end up with one of the following issues. Your entire project could become a sandbox, making it unstable. Developers will be forced to practice at home, making them unhappy at work and eventually quit. Worse, innovation in your company could stall once developers become tired of fighting the management.
If you want your developers to get better, allow time for practice, not just learning. It’s necessary, easy to do when planned and provides countless benefits to your company. Let me know how that advice worked out for you.
Great article. I wish more employers and more developers understood this topic. One key element, as you mentioned, is being able to practice just for the sake of practicing, not in the context of trying to get something done. Whether it’s a work project, a hobby project, an open source contribution or whatever, if you have a real thing you’re trying to build, it removes the “freedom to fail” and several studies show this inhibits your ability to effectively learn.
Young children are so effective at learning because everything is “play” to them. They mimic, they fall down, they do things in bizarre and odd ways, but it’s all learning. As developers, we would do better if we could drop the ego and just “play” with programming (new language, new framework, new concept) with no fear of being judged or of failing. Learning can not only be great for your career, but it can be great fun if approached with this mindset. Thanks for the article.
Good words in the right moments. I just taking a long break in my career and I’m doing exactly what you said. I have already the base of PHP knowledge, but I would like to do more. Can you suggest me some good PHP books, sources, etc. so I can learn more?
Thank you.
Nonn There are so many topics in PHP programming that I can’t point you to any single book. You should first discover topics at a user group or conference and then read related books to acquire deeper knowledge about them.
Simply search online for a user group in your area. These usually give free presentations and workshops. Conferences are also great for discovery. Tell me in which area you reside and I could point you in the right direction. Also, do you have a twitter account?
I am recently moved in Montreal, QC. I just missed the ConFoo Conference, bad luck.
The PHP Quebec community has free presentations: http://phpquebec.org
Javascript: http://js-montreal.org
HTML5: http://www.meetup.com/HTML5mtl
Security: https://www.owasp.org/index.php/Montréal
All these have talks in both English and French, as far as I know.
Thanks … I really appreciate your time.