Looking to do something meaningful this summer? How about helping a few young people take their first steps in an IT career? Such an opportunity fell into my lap a few years ago, and I don't see why it can't be reproduced on a much larger scale.
My professional work keeps me very familiar with the kinds of skills that the IT employment market is after right now and the state-of-the-art tools used to deliver those skills. Also of significance: I'm a Linux system administrator with reliable wireless connectivity and lots of spare bits and pieces of networking and other hardware lying around the house.
The accidental learning lab
Feeling a bit ambitious, one of my sons and a friend (both around 20 years old) decided to try to solve an IT problem for a local nonprofit organization. My son had taken one or two Java programming courses, and his friend had decent general knowledge but less experience. Both were enthusiastic. Putting together their knowledge and backgrounds, neither could have realistically expected to succeed.
I provided the two with access to plenty of open source software, guidance for finding solutions to their problems on the internet (e.g., Stack Overflow, LinuxAnswers, DuckDuckGo, etc.), some practical mentoring, and my dining room table. They got to work. Within a few weeks, they had put together a multi-tiered server that provided a fully functional mobile app solution. Along the way, they picked up some significant development methodology and project management and IT system skills. More importantly, because of the strong research skills they'd learned, they were comfortable working with new and unfamiliar technologies.
That's the story. Here's what I learned from it:
- The internet is more than mature enough to provide all the IT skills training we'll need—very often without commercial training content.
- Motivated young adults will learn much faster using those tools than they will in classrooms; teachers using static curricula just hold them back. Or, in other words, "flipping the classroom" works incredibly well in this particular context—so well, that the classroom becomes largely redundant.
- Some basic mentoring is needed to push participants past significant hurdles, but it needn't be excessive.
- The value of peer programming is enormous.
- Motivated individuals can build significant projects with very minimal infrastructure overhead. You can build a credible development environment with nothing more than a couple of cheap laptops and a router.
Part of its beauty—and its strength—is that "students" can become involved in real projects almost from the first day. They don't have to wait for some formal program to begin, nor for a critical mass of participants. And, because the ideal mentor is someone actively involved in real-world IT work, there is very little risk of investing months or years in a program that turns out to be pushing unused and unwanted skills.
Mentoring at scale
By all means, try this yourself with your own kids or just some strays you find wandering around the neighborhood. But I believe this could be scaled up to work for much larger "neighborhoods."
Do you manage a room full of developers or IT professionals? Could you see yourself freeing up a spare corner and some of your wisdom and experience for a couple of eager apprentices? Or how about long-distance mentoring? There's nothing stopping you from working with remote candidates.
Have you ever complained that you can't find enough talent with the right skills and commitment? Why not build them yourself? It can be simple and cheap: no classrooms, teachers, or administration. Just access some watchful guidance and access to shared resources.
Mentoring methodology
How might this work? Here are some thoughts.
Screening and preparing participants
Not every applicant will necessarily be an effective participant. Success will probably require a high level of motivation, some basic degree of comfort with technology, and the ability to navigate around a modern operating system and, via search engines, the internet. They will also need to be able to take responsibility for their progress.
Pair programming and collaboration
Participants could be divided into small, two or three-person workgroups. Each workgroup would get a specific task—either an entire project or a clearly defined module of a larger project. Ideally, workgroups would focus on different skill sets (e.g., coding, database management, system administration, networking, cloud deployments, etc.). Interaction, collaboration, and skills exchanges between workgroups (or even between groups in different cities) would be strongly encouraged. The more multi-disciplined projects become, the more they'll resemble real-world development.
Educational resources
I don't believe that a formal curriculum would be helpful for this project. Besides the fact that the pace of change in the IT world renders most curricula obsolete before they're even written, a curriculum would, in this case, unnecessarily restrict the ability of participants to direct themselves according to their own strengths and interests.
Instead, participants could be directed to the online tools that best match their project and technical needs.
The ability to formulate proper search engine queries—often based on information provided by error logs and system messages—is probably more important than any single resource. Real growth will come from struggling with real problems associated with real projects.
1 Comment