The late Steve Jobs once said, “Everybody in this country should learn to program a computer because it teaches you how to think.” I am inclined to edit this quote to read, “Everybody in this country should learn to program a computer because it teaches you how to think and also qualify for valuable computing jobs in software development.” Right now, in the United States, there are more than half a million unfilled jobs in computing and technology. And those jobs are the top source of new wages in our country — which are projected to grow at twice the rate of all others. Moreover, computing is a necessary skill in every field, and therefore the study of computer science (CS) should be foundational and not solely vocational in American schools.
(Code.org Promote Computer Science webpage.)
If we are genuinely committed to preparing all learners for CS jobs, then here are three things educators can do to prepare learners for employment and career opportunities.
1. Teach learners to be designers, not end users.
When learners understand the difference between being an end user and being a designer (maker, creator, doer), a light bulb turns on and motivation to learn and do increases. For designers — learning algorithmic designs, creating apps and discovering other facets of the internet — become a lot more compelling and in real-world context.
You can make this clear to students by using the analogy of being able to drive a car. End users can only drive a car from point A to point B, but if it breaks down, they cannot troubleshoot or fix it. However, understanding how the car's systems work and how they interconnect empowers the end user with the knowledge of designers so they can pop the hood to assess, troubleshoot, diagnose and possibly even make repairs.
Unfortunately, students who know only how to use technology but don’t understand how it’s developed and created will only be end users, and end users are rarely qualified for in-demand computing jobs.
2. Teach students the various CS job roles.
According to the Council of State Governments, STEM jobs in both the application and systems of software development are expected to expand by more than 350,000 new positions by 2022.
The table above lists the prospects for various STEM jobs. It’s important to break down for students the difference between the various roles that fall under software development — coders, programmers, software developers and software engineers.
Coders and programmers focus on the detail work of computer programs as it pertains to the software development life cycle (SDLC). Although both software developers and software engineers use the SDLC for organizing and solving more extensive problems, software engineers are considered the project managers and do the work of engineers by creating the specs and documentation needed by the coders/programmers. You can help students understand this rationale with this resource by Quora. The hierarchy of the software engineering profession is also a great visual for this purpose. Make students aware that both computer science and software engineering are two distinct majors in college, but both will prepare them in the CS fundamentals that are the prerequisites for careers in software development.
3. Teach kids the basics of programming and coding.
To help both teachers and schools understand how software programs are created at the most foundational level, I wrote the ISTE article Computer programming in 4 steps, which is a good source for getting started in the classroom at various grade levels. Although the terms coding and programming are often used interchangeably, there is a difference between the two terms. Coding is writing code; a coder translates requirements into a programming language (JAVA, Python, C++, for example). Programming involves other tasks, like understanding algorithms, data structures, problem-solving (critical thinking) and conceptualizing. As an educational coach, I advise schools to keep things simple and systematic. Develop your CS/STEAM ecosystem to include the right curriculum, edtech tools and other resources to help both teachers and students develop as computational thinkers (CT), programmers and coders (in that order) to build capacity and deeper learning. Here are some resources for getting started in CT, programming and coding:
Code.org’s App Lab environment offers free lessons to introduce students to programming.
Hour of Code offers one-hour tutorials for your entire school.
IEEE Spectrum Interactive has a great ranking for helping educators decide which programming languages are relevant. Be sure to know your local labor market data when choosing.
LEGO Education offers robotics kits and other resources allowing students to explore core STEM concepts.
VEX IQ Curriculum offers 12 flexible units of instruction that educators can use in sequence, in chunks or as standalone lessons.
The littleBits Code Kit Educator Resources offers lessons, presentation slides, videos, the Code Kit app and teacher handouts.
ISTE Standards for Students are a blueprint for the skills students need to thrive in the evolving digital landscape.
Give students opportunities for practice.
Excellent software development and programming skills require time to develop and build expertise. Our learners will need precise practice, patience, opportunities for growth and development, mentorship and an understanding of what their career options are. This is where we — the educators — come in. Our lessons and projects are the road maps, and we are the flashlights students need to navigate them!