Recently I attended the first annual Code to Success celebration lunch, a Tech Community Luncheon event put on by Silicon Slopes. The luncheon recognized the efforts of over 400 junior high and high school students throughout northern Utah who spent a good portion of their summer (9 weeks, 4 days/week, 4 hours/day) learning to write Ruby on Rails applications as a means of introducing them to software development.
Aaron Skonnard, CEO of Pluralsight, one of Utah's most highly touted tech success stories, gave the keynote address after we'd had a chance to hear from two Code to Success students who stood out among their peers. One-thousand-dollar scholarships were handed out to over 30 students. Various tech businesses, schools, and other professional interests were represented at each table as a means of fostering interaction between aspiring students interested in creating software and those who could help them by sharing their experience in the tech industry.
At my table, I had the chance to ask some of the students around me about their experience with this Code to Success initiative and its obvious objective: to get youth involved in coding and to motivate them to consider making technology a big part of their careers. A young woman I chatted with told me she just needed to get a STEM-related credit for graduation, and this free (i.e. subsidized by grants and donations) Code to Success camp made it so that she could check off that requirement so that it didn't have to appear on her fall schedule.
I asked the teenage boy across the table what made him want to spend his summer learning to code an app. He told me he liked to play video games, and he wanted to see if he could learn to code a game during the camp. Fair enough.
But I wondered if there weren't some students in attendance who were more serious about writing software and contributing in bigger ways to the technology community. That curiosity led me to question, "What would it take to qualify teenage kids to be real coders?" I wondered how likely it might be for these teenagers to be legitimate contributors to companies who need development done, and who don't necessarily care how old their workforce is or whether you have a degree. The trend I've seen in the technology industry has been to hire whoever has proven in one way or another that they can get the job done.
One of the speakers at the conference mentioned a statistic with the intention of motivating those in attendance to do their part to fix a talent shortage problem. Apparently by 2020 there will be over 1 million software/tech related jobs left over after the available talent is all used up by other tech jobs.
During the time set aside for networking after the formal presentations, I had the chance to meet some kids who had a deeper understanding of the opportunities that come with being a developer, and who were looking for ways to move forward. One of them gave me his business card, complete with a link to his herokuapp.com-hosted website, and asked if Nanobox had any internships or other work opportunities available. I was impressed.
I mentioned to several of the students I talked to that I would have been much better off financially as a teenager had I developed a skill and picked up a job in some technical field instead of spending hours of my evenings and weekends developing my pepperoni pizza making skill set for $5/hour. They agreed, with demeanors that said clearly, "Yah, we know better than to go that route."
When I asked a group of four students what they are currently doing for employment, only one told me he's actually coding for a real company. He mentioned that it's a small startup, and that he doesn't make much money at the job. From his tone, it seemed like his code contribution tends to be a bit sandboxed by his employer. The discussion reminded me of my first programming job while I was in college in 1999. After two semesters of taking C++ classes, my biggest contribution to my employer was essentially to stay out of the way of the real programmers.
One of the challenges that faces young coders is the fact that being a productive developer requires some maturity, which usually comes with experience, which usually comes with someone trusting you enough to hand over responsibility, which doesn't normally happen for young people. After all, if you can't even drive a car until age 16, how can you be mature enough to think through the logic required to write or contribute as a team member to a non-trivial program until you're at least in your 20s?
Do They Have to Be Gamers or Geeks?
A condition I've seen that limits the number of kids interested in software development is the perception (usually based on reality) that you have to be nerdy to be a good programmer. This certainly deters some of the brightest kids from getting involved in the industry.
The stereotype of a typical programmer usually maps to a guy who stays up all night playing video games with random people whose handles he knows but whose names he doesn't, a fellow whose social skills and concern for hygiene are inversely proportional to his ability to code like a master.
Although there are legitimate reasons for that stereotype, and apparently a correlation between being socially awkward and programming, more can be done to make programming socially mainstream. If teachers, parents, and other mentors portrayed writing code candidly as a way to solve problems rather than responding with fear at the site of a command line interface, it's likely that more and younger kids would naturally use coding as a practical way to solve problems.
Are We Stifling Their Potential?
As I've become a parent of six children, I've learned a lot about kids' abilities to learn, to create, and to handle responsibility. Despite the standard frustrations, I've found that kids are often eager to consume whatever you're willing to feed them.
When it comes to using, applying, and even creating technology, maybe we are too afraid to push kids to achieve their potential. Forbes Magazine's recent article entitled "How America's Education Model Kills Creativity and Entrepreneurship" quotes from a Ted Talk given by Sir Ken Robinson, who said that society needs to "reconstitute our conception of the richness of human capacity." Creativity in the 21st Century very often translates into the use or construction of some sort of software to accomplish its maximum potential.
If we encourage kids to more fully explore their creativity, maybe we would end up with more functional and competent programmers who mature at younger ages than what is currently happening.
The most notorious culprit for killing creativity is the modern American education system, which has become progressively better at introduction enough standardization to shut down kids' creativity. When you think of what resources children need to excel to their greatest potential, public schools (where close to 90% of kids spend their days) don't have a great reputation.
My own family's solution to that problem has been to withdraw our kids from school and teach them at home. That doesn't work for everyone, though. More work obviously needs to be done in schools to stop stifling creativity.
In Utah, we've seen organizations pop up to fulfill the role of inspiring creativity in young kids. My children benefit from being involved in a program called My Tech High, a public/private partnership that brings personalized technology distance education programs to kids ages 5-18. A sister company to My Tech High, Tech Trep, encourages technology entrepreneurship among youth. The influence of organizations like this is limited, but it's growing, and the concepts are quickly catching on among parents and their young students.
A 4-Year Degree or a Dev Bootcamp?
Speaking of education, there has been some debate in the tech community about what methods work best to prepare someone for a job as a software developer or for other related careers. If a person needs a 4-year degree to become a developer, that puts it out of reach for most high school kids.
However, a survey done by Indeed.com found that 72% of employers said that bootcamp graduates are just as prepared and likely to be high performers as those who have computer science degrees. Although there may be some confounding data mixed into that conclusion, it does make a case for the likelihood that a mature teenager could take a 12-week course, get some hands on experience, and be sufficiently prepared to work on a dev team.
Based on my experience, I could see myself legitimately hiring a teenager to be a part of a development team. However, in the current environment, that teenager would have to be exceptional and stand out from peers.
Moving forward, hopefully organizations like Code to Success and others inspiring creativity with technology can make enough progress to keep the technology-based economy moving and growing naturally.