How long does it take to learn a programming language? Obviously it depends, but estimates range from three to six months. How, then, do Area9 programmers become productive in as little as two to four weeks? The secret, as we’ve often said, is personalization.
Computer programming is inherently an iterative process: writing lines of code, testing the program, analyzing results, and then making the necessary changes. To do this well, programmers need to grasp the theory of what makes for readable and maintainable code, while also testing their knowledge and skills with real-world problems and scenarios.
Programmers—like learners everywhere—come from a variety of backgrounds and experiences. Some learners have mastered one or more computer languages, but now must learn another. Other learners are new to the field with minimal knowledge and skills. Clearly, for such a heterogeneous group, one-size-fits-all training would be insufficient. What’s needed is an approach that can meet each programmer where they are and provide skill-building and exercises to achieve competence.
This is particularly important at Area9 as we develop our platform Area9 Rhapsode™ in a functional programming language called Flow, created by our Chief Technology Officer, Asger Alstrup Palm. Although we have open sourced the Flow language, Area9’s new hires typically have no experience developing in it and must be brought up to speed quickly.
Our solution is to use our own adaptive learning tool, with its personalized approach that’s tailored to each learner, as has been described frequently in this blog. The uniqueness of adaptive learning for computer programmers is the ability to deliver an online “integrated” experience that allows learners to acquire knowledge and skills, then immediately put what they’ve learned into practice using Area9 Rhapsode™’s “programming probe.”
The Programming Probe
The probe (a combined teaching and assessment capability) engages the learner to solve a specific problem by writing a program. The exercise allows the programmer to write code, execute the program, analyze the results, and iterate. Throughout the process, the learner is given real-time feedback from the program (where the code works and where it fails) and encouraged to engage in self-reflection (how confident is the programmer in the solution). All of this happens automatically, with no human intervention from an instructor.
Programming probes can be used to teach:
- Basic syntax of computer languages
- How to fix compilation mistakes
- Semantics and types of systems
- Implementation and bug-fix algorithms
- How to write programs that solve real problems
Hints and Self-Review
The author of the probe (i.e., the designer of the programming course) can provide template programs, supply “hints” to point the programmer in the right direction, and offer self-review questions that help learners see their mistakes and make corrections. The hints and self-review are integral to the instructional experience, allowing learners to engage in the critical process of thinking about their solutions from multiple viewpoints.
When the learner completes the task, the program is run (using a secure backend, built into the Area9 platform) to check for correctness. If an output does not match, the program shows the error and asks the learner to fix their mistake and resubmit. This cycle continues until the code can pass all test cycle cases or the learner gives up. A final score is then given based on the number of attempts and results.
Rather than focus on getting the correct answer, the objective is achieving the correct results. Thus, throughout the learning experience, programmers-in-training are encouraged to think about their mistakes and how to fix them. Through the combination of theory and practice, learners demonstrate competence before completing the course, while taking into account such things as coding style, readability of the solution, and maintainability.
Demand for Programmers
With professions such as web developer and software developer expected to see strong demand in the years ahead, effective training in programming will be crucial. The “programming probe” shows how online learning can be deployed in a technical school setting or as part of training offered by an employer. The objective is not just to deliver the theory, but also the practice. Together, that makes all the difference in achieving competence, efficiently and effectively.