news

Society | doi:10.1145/2557447 Esther Shein Should Everybody Learn to Code? Not everyone needs coding skills, but learning how to think like a programmer can be useful in many disciplines.

o gauge the ability of pro- fessional graphic designers to do basic programming, Brian Dorn, then a graduate student at the Georgia In- Tstitute of Technology (Georgia Tech), asked a group of them to read and modify a piece of program code. The idea was to see whether they could turn themselves into informal pro- grammers and figure out how to de- velop automated functions in Adobe Photoshop. Unfortunately, when the designers conducted Web searches to look for information on the code they needed, they sometimes used results that pointed them in the wrong direc- tion, which was toward Java—when they actually needed to be using JavaS- cript for this particular project. One of the underlying causes could have been tied to the participants’ “lack Second-grade students in Kevin Jarrett’s Elementary ‘STEMLAB’ at Northfield Community of sufficient general, abstract knowl- School (New Jersey) participate in the 2013 Hour of Code. edge of the computing and/or program- ming structures at play,” wrote Dorn in Mark Zuckerberg to physicist, cosmolo- million would describe themselves as Communications in May 2011. gist, and author Stephen Hawking have “programmers” in 2012, although only His advisor, Mark Guzdial, who re- expressed the belief that basic comput- three million of them would be profes- layed the story, said the findings indi- er programming is an essential skill in sional software developers. cate to him “that there are a lot of peo- today’s world. “Code has become the The Carnegie Mellon study also not- ple who need knowledge of computer 4th literacy. Everyone needs to know ed that a lot of people were doing pro- science … who are going to use it in their how our digital world works, not just gramming without realizing it, by cre- lives, but because they never learned engineers,” says Mark Surman, execu- ating macros for spreadsheets or doing anything about computer science, they tive director of the Foundation, database queries using SQL. “So the are teaching it [to] themselves and cod- whose comments are among those of argument is, lots of people are going to ing inefficiently, and wasting a lot of dozens of luminaries on code.org. do programming,” says Guzdial, “and time and getting frustrated.” The demand for computer scien- the data we have studying how end If someone is going to become a tists and technical professionals in the user programmers teach themselves knowledge worker, or take on any job U.S. is projected to grow 34% through and the types of mistakes they make “that requires an undergraduate de- 2018, according to the Bureau of Labor suggest if they knew something about gree,” they should know how to read Statistics. Many people already engage computer science, they might not have a piece of code that is useful to them in some level of programming; Guzdial to struggle so much later.” and be able to make changes to it, says cites a 2005 Carnegie Mellon Univer- Many people who avoided taking Guzdial, a professor and director of sity study indicating that in 2012 there science and math courses in college Contextualized Support for Learning would be 90 million workers in the U.S., are now struggling as they try to teach in the School of Interactive Computing more than 55 million of whom would themselves how to program, he points at Georgia Tech. use spreadsheets and databases, which out. “How many more would be do- People ranging from former Presi- can be deemed programming. The ing some programming if we helped

dent Bill Clinton to creator study also projected that more than 13 them? That is the interesting part.” Kevin Jarrett p h by Photogra

16 communications of the acm | february 2014 | vol. 57 | no. 2 news

What You Should Learn Everyone should learn computational ACM thinking, maintains Jeannette Wing, Computational corporate vice president at thinking helps people Member Research. Computational thinking helps people learn how to think ab- learn how to think stractly and pull apart a problem into abstractly and pull News smaller pieces. One concrete way to Technology, Always learn aspects of those skills is pro- a problem apart into Changing, Should Be gramming, Wing says. smaller pieces. Easy to Use That is not to say everyone needs to The two guiding principles of learn a specific programming language Jeff Johnson’s like Python or C++, even though many 35-year career in people identify programming with human- computer turning out code, Wing says. “First of interaction all, that is too low-level, and it is also While noting that several of his col- (HCI) have been the constantly very narrow an interpretation of what I leagues are successful self-taught pro- changing nature of technology, believe is more important.” grammers, and that learning to pro- and that technology should be easy to use. Instead of teaching everyone to gram does not necessarily have to be Johnson, president and churn out code, the emphasis should done at a university, Felker says people principal consultant for product be on learning problem-solving skills need to know more than memorizing usability consultancy UI in computer science, much like the the technology du jour and, as Wing Wizards Inc., earned B.A. and Ph.D. degrees in psychology problem-solving skills one learns in said, they need the critical ability to and computer science from math and engineering, says Wing, think things through. Yale and Stanford universities, who is on leave as President’s Profes- “[I]f you aren’t dreaming of be- respectively. He has worked as a user-interface designer and sor of Computer Science at Carnegie coming a programmer—and there- implementer, engineer manager, Mellon. Writing a program is an ex- fore planning to embark on a lengthy usability tester, and researcher plicit way of expressing a solution course of study, whether self-directed at Xerox, Hewlett-Packard Labs, that a human or machine can carry or formal—I can’t endorse learning to and Sun Microsystems, and recently returned from a stint out, she says. “The more fundamental code,” Felker writes. “Yes, it is a cre- as a Visiting Erskine Fellow at skill and more critical thinking skill ative endeavor. At its base, it’s problem- the University of Canterbury, is what comes before you write down solving, and the rewards for exposing Christchurch, New Zealand. These experiences have solidified this piece of code, and that is compu- holes in your thinking and discovering Johnson’s commitment to tational thinking.” elegant solutions are awesome.” He continually refresh his work to Guzdial agrees. “Should we learn goes on to say he does not believe that keep pace with the latest digital enough so that you can write a script most people who learn to code end up advances. “There never will be a time when everyone is a digital to do something that otherwise would learning anything that stays with them. native, because the definition have to be done by hand? I would like Referencing a comment made by of that term changes as digital to see that, but I cannot make the argu- New York City Mayor Michael Bloom- technology progresses,” he says. ment that it is an absolutely necessity.” berg in 2012 that he would learn to Johnson, an ACM Distinguished Speaker, recently He adds that ignorance of computer code, programmer Jeff Atwood, writ- updated his 2009 HCI book science puts people at a disadvantage ing in his blog “Code Horror,” poses Designing with the Mind in in today’s world. “Not knowing any- the question, “…can you explain to me Mind with a new section on peripheral vision and chapters thing about programming makes it how Michael Bloomberg would be bet- on decision-making and hand- more difficult to pick it up.” ter at his day-to-day job of leading the eye coordination. largest city in the USA if he woke up one He also has a new corporate The Flip Side morning as a crack Java coder?” While endeavor: Wiser Usability, a consultancy that helps The issue is far more black and white agreeing that programming is impor- companies design senior- to software engineer Chase Felker, who tant, Atwood says many other skills are friendly websites. “Older adults wrote an article for Slate magazine en- important, too. “I would no more urge tend to have limited mobility and transportation, and they titled “Maybe Not Everybody Should everyone to learn programming than I could benefit most from online Learn to Code.” Felker writes, “Frankly, would urge everyone to learn plumb- shopping and online access to just the idea that you can learn to code ing,” he writes. services,” Johnson says. “No one in a year gives me the creeps: I would The so-called “everyone should who isn’t a hardcore computer- geek, least of all seniors, wants be terrified if someone with only a cou- learn to code” movement is wrong for to use technology for its own ple of classes were writing programs several reasons, according to Atwood, sake. Digital tools that don’t help for me, not because he (of course, and including the assumption that more seniors accomplish their goals unfortunately, most programmers are code in the world is an inherently de- with a minimum of learning and bother are not worth the time men) has learned anything wrong— sirable thing. That assumes code is and expense,” he adds. but because of what he doesn’t know.” the goal; it puts the method before the —Laura DiDio

february 2014 | vol. 57 | no. 2 | communications of the acm 17 news

problem, and assumes adding coders Looking Ahead to the workforce is a net positive. Just as students are taught reading, “The general populace (and its Students as young writing, and the fundamentals of math political leadership) could probably as five can learn and the sciences, computer science benefit most of all from a basic under- may one day become a standard part of standing of how computers, and the some basic concepts a K–12 school curriculum. If that hap- Internet, work,’’ he says. “Being able to of programming, pens, there will be significant benefits, get around on the Internet is becoming observers say. As the kinds of problems a basic life skill, and we should be wor- similar to the number we will face in the future will continue ried about fixing that first and most of and counting skills to increase in complexity, the systems all, before we start jumping all the way being built to deal with that complexity into code.” children typically are will require increasingly sophisticated Guzdial speculates there may be taught at that age. computational thinking skills, such as pushback from programmers, because abstraction, decomposition, and com- they think not everyone can be taught position, says Wing. what they do. “I am not suggesting ev- “If I had a magic wand, we would eryone produce thousands and thou- have some programming in every sci- sands of lines of code. I would love if ence, mathematics, and arts class, everyone could graduate from a uni- questions why they should. “I am not maybe even in English classes, too,’’ versity writing 10 lines of code that are sure what we can teach them from a says Guzdial. “I definitely do not want useful to them.” cognitive perspective.” Although there to see computer science on the side … The point of teaching program- have been studies done on children I would have computer science in every ming in high school would be to give learning to program in the Scratch high school available to students as students some level of literacy relative programming language, “in general one of their required science or math- to programming, including the ability what we find is kids that young do ematics classes.” to think about things in terms of code, not do the things you naturally would and to understand what code can do, expect coding to involve,’’ including Further Reading Guzdial adds. loops and conditionals. He says he is concerned about cog- C. Simard, C. Stephenson, D. Kosaraju The State of Computer Science nitive development. “What we know “Addressing Core Equities in K–12 Computer Science Education: Identifying in Public Education about cognitive development is you Barriers And Sharing Strategies,” 2009. That may not, however, occur in typically develop the ability to do ab- http://anitaborg.org/files/ABI-csta-full- schools. Many in the computer sci- stract reasoning around the age of 12,” report.pdf ence field say the U.S. is severely lag- and programming is a very abstract C. Felker ging in making even basic computer activity. Guzdial is unsure whether “Maybe Not Everybody Should Learn science a priority in K–12 schools. young children who program develop to Code,” 2013. http://www.slate.com/ “While other countries have designed abstract reasoning earlier, or if they articles/technology/future_tense/2013/08/ everybody_does_not_need_to_learn_to_ and implemented national computer are only able to learn a little bit of pro- code.html science education programs in order gramming skills. Martyr2 to better prepare their students for Overall, though, he says computer “Why Everyone Should NOT Learn to Code,” the increasingly competitive global science should be taught in schools 2013. http://www.coderslexicon.com/why- economy, the decentralized (state, –but starting at age five or six, when everyone-should-not-learn-to-code/ district-wide, and even school-based) only 12% of high schools in the U.S. of- D. Haggard educational decision-making process fer computer science courses and far “Why Everyone Should Learn to Program,” in the U.S. has severely hampered ef- fewer middle and elementary schools, 2011. http://reviewsindepth.com/2011/04/ forts to standardize our computer creating a great divide. Guzdial says, why-everyone-should-learn-to-program/ science curriculum and create coher- “They are unlikely to see it again for P. Norvig ence in student learning,” according a dozen years, so why offer it at five or “Teach Yourself Programming in Ten Years,” to the 2010 report, “Addressing Core six?” 2001. http://norvig.com/21-days.html Equities in K–12 Computer Science Wing also says that, while age five J. Lave Education.” may be too early to teach how to code, “Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life,” 1988, Guzdial believes the biggest prob- students that young can learn some Cambridge University Press. lem in teaching computer science in basic concepts similar to the number J.R. Hayes the U.S. is the lack of teachers who and counting skills children typically “The Complete Problem Solver,” 1989. know the discipline. He estimates are taught at that age. As they get older, Lawrence Erlbaum Associates, Inc. there are about 30,000 high schools in students should be taught other con- the country, but only 2,000 Advanced cepts, like what an algorithm is, ways Esther Shein is a freelance technology and business Placement computer science teachers. to represent data, and different analy- writer based in the Boston area. Students as young as five can learn sis techniques in order to understand to program, Guzdial maintains, but he and reason, she says. © 2014 ACM 0001-0782/14/02 $15.00

18 communications of the acm | february 2014 | vol. 57 | no. 2