Front-loading acquisition of knowledge and aptitude through formal learning is still the norm across higher education pedagogies. While this is a fine approach for some fields of work, software development is not one of them.
Some post-secondary programs have attempted to overcome this by integrating work experience into the learning process - for example, in co-op programs which provide industry experience to supplement the academic learning. This approach does nothing to shorten the program duration, however, and fails to address the larger problem that front-loading knowledge is generally not how software developers learn and grow in this industry.
My co-op experience was fantastic and really gave meaning to my four-year Bachelors in Computing degree, but my education was still "front-loaded" and I wasn't able to really enter the workforce before year five. When I did, I realised I had learned a lot of things which I didn't need for the job, and a lot had changed in the industry in that time. Almost everything I learned was valuable. It just wasn't needed when I started working.
Instead, I believe a better approach to learning software development (and other crafts) is through Just In Time (JIT) Learning.
What is Just In Time Learning?
JIT Learning is about learning incrementally for the purposes of maximizing personal growth and productivity. When applying JIT learning, we are laser-focused on what we need to learn in order to solve the immediate problem in front of us. Sometimes this involves building a limited or partial mental-model versus a deeper understanding, prioritizing the gaps in our understanding to be tackled later.
Performed in isolation or as a one-off occurrence, JIT can seem problematic. It can feel shortsighted if we're just looking at a single problem in front of us in that moment, at the expense of the big picture. As we've seen, however, when applied deliberately as part of a larger, structured learning journey, that laser-focus can work wonders.
Benefits of Just In Time Learning
While JIT Learning makes a lot of sense for software development and various other crafts, it doesn't work as well for every profession. There are cases where you have to front-load knowledge.
"I don't know how to solve that right now but I know I can figure it out." Words you really don't want to hear your pilot say when a warning light comes on.
"I've never seen that before. Let me google it." Hopefully no ER surgeon on duty, ever.
A software developer, however, needs to feel comfortable saying both of these things on a regular basis.
Programmers are constantly faced with new problems on the fly. JIT learning is one way - and in my opinion, one of the best ways - to adapt and grow while also producing results.
Just In Time Learning is problem-centric. A problem drives the learning, and this is effective because it gives learners a tangible outcome, a better defined sense of direction, and an anchor to attach to their learning.
Universities and colleges aren’t necessarily striving for productivity or industry relevance. Their focus is on the abstract side of critical thinking and problem-solving. That isn’t a negative thing, but four years is a long time to spend on that. Shouldn’t skills like critical thinking, problem solving, and even learning to learn be acquired over time?
For programmers, there is a lot to learn and many directions to take. There's rarely one right answer or approach. Our field is constantly changing and we need to enjoy the challenge to keep up. But we can't learn everything at once; we learn on the go, while being productive on the job.
Just In Time at Lighthouse Labs
At Lighthouse Labs, we use the JIT learning model extensively. We prepare students for the reality that their education will continue into the workplace, and a JIT learning approach will help them take real-world challenges in their stride.
Every single assignment at Lighthouse is tied to a core learning outcome, and we make a deliberate effort to remove dependencies to other concepts that are not needed for solving the problem at hand.
For instance, one doesn't need to learn Mocha and Chai (or other testing frameworks) in order to learn about and practice unit tests. Full comfort with asynchronous programming is not required before building a simple web application with Express and EJS. This low-dependency methodology helps learners to maximize their focus on key outcomes and reduce the overwhelm of unnecessary cognitive load.
JIT Learning aligns with the developer ethos, and being comfortable with not having immediate solutions to a problem is par for the course. We believe this to be a core strength of our program: by teaching students how to be productive as they continue learning, we're setting them up for better success with the continuous learning habits that are integral to the job.
This is the first in a series of posts discussing the Lighthouse Labs approach to education which has informed our shift to a 12-week program.