How to learn software development tools faster

The rapid pace of innovation in app development tools means developers have a much richer toolbox for writing better code. It also demands a much faster pace of learning. We caught up with Ken Goetz, vice president of Global Training Services at Red Hat, to find out how developers can code at the top of their game.

What is state of the art for teaching developers and employees how to use software or execute particular tasks or workflows?
Ken Goetz: There are lots of industry words to describe modern learning trends, including microlearning, peer-to-peer, blended and on-demand. In today’s age of digital learning, I favor learning that is heavier on experiences vs. lecture, immersive with high production value (e.g. involving students in a compelling story that invokes real-life experiences), and training that is equal to one’s skill level. On this last point, the focus is on building training that is not too easy, which results in boredom, and not too hard, which results in frustration. When it comes to training, failure is actually a good thing.  

What are the best practices, tools, and strategies for learning new programming languages, APIs, or principles?

Goetz: We are finding a growing importance in peer-to-peer learning. If you buy into the 70:20:10 model of learning, then 20% of how we learn is based on socializing the material with others. As training becomes increasingly self-paced, we have gone in the exact opposite direction. So, building avenues for IT professionals to socialize what they’re learning is a growing need.  

What are some of the techniques and useful metrics for assessing the impact of particular learning approaches?

Goetz: Most training programs are stuck in the middle ages of using end of class surveys to measure effectiveness. But this method is flawed, because students haven’t had the chance to evaluate the learning to see how their new skills are helping them back at work. The only way to observe impact from training is to observe it some time after the training was completed. In this way, it’s possible to measure organizational impact. Are the employees more efficient, more effective and has this translated into benefits for the enterprise (e.g. lower turnover, faster app development and less downtime)? We conducted such a survey here at Red Hat in collaboration with the IDC, which demonstrated that Red Hat Training has nearly a 4x ROI over a three year period. It’s thrilling to see how big the return can be from modest investments in training.

Learning how to use a software tool has traditionally been done using a manual, screen recording, or help menu, and the user has to go back and forth between these and the app. Can better guidance be integrated directly into the application experience itself, like interactive macros or screencasts?

Goetz: We are certainly seeing more and more of this as software inevitably gets smarter and better. The exact nature depends on the software and how it works. Offering screencasts from a command line doesn’t create a very seamless integration, but there are all sorts of help functions built into command line applications that have been around for a long time. I have worked on building custom learning that can be accessed directly from within SaaS applications, creating a truly on-demand, moment-of-need learning function. I think these advancements are exciting but largely constrained by the type of software in question.

DevOps and continuous deployment have done a lot on the technical side around making it easier to push out software quickly, but what are enterprises doing to bring similar agility to documentation? How do you keep the screenshots up to date, or automatically incorporate new features or updates into manuals? How can a software company also make this easily available to enterprise customers

Goetz: There are several tools that can help with this process. Keeping screenshots up to date in a DevOps world, where companies like Amazon are deploying new features on a near constant basis, may never be a winning battle. As soon as you publish the screenshot, the screen has changed.

What are some of the different approaches for learning how to code better from within the software itself or for coaching developers a better approach to solving a coding problem after the fact?

Goetz: The major paradigm shift occurring in software development is the use of DevOps principles and processes that allow for continuous check-in of code, automated regression testing and incremental publishing that provide a real-time performance loop for the developer.

What are some of the best practices for measuring the performance of a particular training approach?

Goetz: From its inception, Red Hat has had a strong performance-driven approach to validate training effectiveness. Red Hat’s certification exams are hands-on tests of an individual’s ability to execute critical, real-world tasks. Candidates earning a Red Hat credential have demonstrated not only comprehension but the ability to apply that knowledge in practice. In recent years, these concepts have been extended into the training as well. At the end of each chapter, the hands-on lab presents the learner a practical application and challenges the individual to complete with limited prompting. The student then is able to run a grading script that goes beyond pass/fail to offer sub-task specific feedback of success. This is without question an industry best practice and not something found in most technical training.

Could companies gamify the process of learning to use software, do enterprise processes, or perform creative tasks more efficiently?

Goetz: First, we need to differentiate between gamification — where features of games are used to make learning more immersive — and game-based learning, in which the learning experience is actually a game itself. Both have merit and applicability because they invoke emotional experiences that can positively impact learning. Game designers are some of the best curriculum developers in the world.

App Architecture
Software Quality
Cloud Computing