I disagree with the claim below “In the future, everyone is going to be a software engineer, but only a few will learn how to code,” but we need a better definition of what it means to “code” and to “program” (as discussed with respect to recent ITICSE 2016 papers). If you’re using tools like Hypercard (“low-code” platforms), isn’t that still programming? It’s certainly more than the no loops, conditionals, or variables that’s often seen in elementary school students’ use of Scratch. Those tools are not software engineering tools. Just because you’re developing software doesn’t mean that you’re doing software engineering.
We need a range of tools from no-code to low-code to software engineering support. It’s an insult to those who carefully engineer software to say that anyone who assembles software is an engineer.
A new industry is emerging to serve the Morts of the world by designing and selling what are called no-code or low-code platforms. Companies like Caspio, QuickBase, Appian, and Mendix are creating visual interfaces that enable people to essentially snap together blocks of software, and bypass the actual lines of code underlying those blocks (skilled developers can also dive into the code). With basic training, a non-technical employee can rapidly assemble software tools that solve business problems ranging from simple database queries to applications lashing together multiple legacy enterprise applications.
Forrester reports the sector earned $1.7 billion in 2015 and is on track to bring in $15 billion by 2020 as the majority of large companies adopt “Citizen Development” policies similar to the bring-your-own-device rules. Employees will be empowered to choose tools, and even partially assemble software, to solve their own business problems without IT approval.
The role of higher education in reducing inequity: Using tuition, drop-out rates, and opportunity hoarding
This blog post isn’t about computing education. You might want to simply delete this email, or skip over this post. I’m using blog author’s prerogative to talk about things that fascinate me, even if they’re not in the title of the blog.
As frequent readers know, I increasingly read and think about economics, particularly with respect to higher education. I’m going to collect in one blog post here (so that I don’t stray too far from the focus of the blog) some of the ideas and articles that have more interested me recently.
From Gladwell’s Revisionist History, we know that diverting tuition from the rich kids to the poor kids is common in schools that aim to bring in more lower-SES students and address issues of social inequity. Unfortunately, this isn’t always possible. Here in Georgia, we’re forbidden by law to use tuition revenue to offer scholarships to less-advantaged children. Puts us in a rough place when competing with schools that can.
Simply put, scholarship aid is not keeping pace with the rising price of college. While half of all families use a scholarship of some type to pay for college, much of that money is coming in the form of “discounts” off the tuition bill. Tuition discounts grew from $30 billion in 2007 to more than $50 billion in 2015, according to the College Board.While tuition discounts are marketed as scholarships in a student’s financial-aid package, they are not really scholarships. It’s not like a donor gave money to support a needy student with academic or musical talent. Rather, the scholarship money was diverted from another student’s tuition check. Last year, the average tuition discount for first-year students reached a staggering 47 percent — that’s nearly half off the published sticker price of tuition, up from about 40 percent just seven years ago.
Without a doubt, one of saddest features of US higher education economics today: many of the kids saddled with higher education debt don’t even graduate! This is the awful perfect storm of increasing student debt and declining completion rates. Now, these students have massive debt, but don’t have the degree to get them a better paying job.
The author of the article linked below, Michael Crow, President of Arizona State University and author of Designing the New American University, visited at Georgia Tech this week, the day after Donald Trump became President-Elect of the US. ASU has programs explicitly targeting those students, to help them get a degree that gives them entree to a better paying job that can help them to pay down their debt. Crow said that the anger in this population is enormous — when they get saddled with debt, and higher ed fails them, they want to just blow up the system. They’re through with how the existing system works. Crow suggests that voices like that were what swept Trump to his surprising triumph.
Think about it: Tens of millions of people in the US are saddled with student debt and have no degree to help pay it off. They won’t get the substantial return on their investment—graduates with a bachelor’s degree earn about $1 million more in additional income over their lifetime than those with only a high school diploma—and they typically have not developed the adaptive learning skills that will help them prosper in a rapidly changing economy.In too many cases, they may never recover, leaving them feeling frustrated and bitter, disenfranchised and unable to find a way to better jobs and greater opportunity. Too many, saddled with debt and lacking a degree, feel trapped.
According to US Department of Education data, the ability to repay college loans depends more on whether a student graduated than on how much debt they are carrying. The research also found that students who don’t graduate are three times more likely to default on their loans than those who do.
This last one is one that I saw linked to Emmanuel Schanzer’s wall in Facebook, and is deeply distressing. Rich kids who drop out of high school do as well as poor kids who complete college? Opportunity hoarding makes it difficult to really move the needle in terms of addressing economic inequity. Crow talked about these kinds of inequalities in his talk, too. If you’re in the bottom quartile in the US, you have an 8% chance of getting an undergraduate degree. If you’re in the top quartile, you have an 80% chance — even if you do much worse in academics than the poor kids.
Even poor kids who do everything right don’t do much better than rich kids who do everything wrong. Advantages and disadvantages, in other words, tend to perpetuate themselves. You can see that in the above chart, based on a new paper from Richard Reeves and Isabel Sawhill, presented at the Federal Reserve Bank of Boston’s annual conference, which is underway.
Specifically, rich high school dropouts remain in the top about as much as poor college grads stay stuck in the bottom — 14 versus 16 percent, respectively. Not only that, but these low-income strivers are just as likely to end up in the bottom as these wealthy ne’er-do-wells. Some meritocracy.
What’s going on? Well, it’s all about glass floors and glass ceilings. Rich kids who can go work for the family business — and, in Canada at least, 70 percent of the sons of the top 1 percent do just that — or inherit the family estate don’t need a high school diploma to get ahead. It’s an extreme example of what economists call “opportunity hoarding.” That includes everything from legacy college admissions to unpaid internships that let affluent parents rig the game a little more in their children’s favor.
Nice blog post from Mitchel. The wide walls metaphor is an argument for contextualized computing education. Computing is a literacy, and we have to offer a variety of genres and purposes to engage students.
But the most important lesson that I learned from Seymour isn’t captured in the low-floor/high-ceiling metaphor. For a more complete picture, we need to add an extra dimension: wide walls. It’s not enough to provide a single path from low floor to high ceiling; we need to provide wide walls so that kids can explore multiple pathways from floor to ceiling.Why are wide walls important? We know that kids will become most engaged, and learn the most, when they are working on projects that are personally meaningful to them. But no single project will be meaningful to all kids. So if we want to engage all kids—from many different backgrounds, with many different interests—we need to support a wide diversity of pathways and projects.
I manage the education column in CACM’s Viewpoints section, and this quarter, Briana Morrison and I wrote the piece. While CS is now officially “in STEM,” it’s not like mathematics and science classes. In the November issue, we look at what has to happen to make CS as available as mathematics or science education. ( BTW, Briana defends her dissertation today!)
Computing education is changing. At this year’s CRA Snowbird Conference, there was a plenary talk and three breakout sessions dedicated to CS education and enrollments. In one of the breakout sessions, Tracy Camp showed that much of the growth in CS classes is coming from non-CS majors, who have different goals and needs for computing education than CS majors.a U.S. President Obama in January 2016 announced the CS for All initiative with a goal of making computing education available to all students.
Last year, the U.S. Congress passed the STEM Education Act of 2015, which officially made computer science part of STEM (science, technology, engineering, and mathematics). The federal government offers incentives to grow participation in STEM, such as scholarships to STEM students and to prepare STEM teachers. Declaring CS part of STEM is an important step toward making computing education as available as mathematics or science education.
The declaration is just a first step. Mathematics and science classes are common in schools today. Growing computing education so it is just as common requires recognition that education in computer science is different in important ways from education in STEM. We have to learn to manage those differences.
Until I heard this recent Freakonomics podcast, I was not aware of this response to innovation and entrepreneurship trends. The quote below speaks directly to engineering education, but is as much about computing education.
The value of engineering is much, much more than just innovation and new things. Focusing on taking care of the world rather than just creating the new nifty thing that’s going to solve all of our problems. If you look at what engineers do, out in the world, like 70-80 percent of them spend most of their time just keeping things going. And so, this comes down to engineering education too, when we’re forcing entrepreneurship and innovation as the message, is that we’re just kind of skewing reality for young people and we’re not giving them a real picture and we’re also not valuing the work that they’re probably going to do in their life. That just seems to me to be kind of a bad idea.
The quote is from Lee Vinsel who was a co-author on a thought-provoking essay, Hail the maintainers, sub-titled: “Capitalism excels at innovation but is failing at maintenance, and for most lives it is maintenance that matters more.”
To take the place of progress, ‘innovation’, a smaller, and morally neutral, concept arose. Innovation provided a way to celebrate the accomplishments of a high-tech age without expecting too much from them in the way of moral and social improvement.
It’s easy to see this emphasis on innovation over maintenance. We talk about disruption and transformation much more than reforming, repairing, or improving. We talk more about creation than understanding.
We increasingly teach computer science to prepare students to be innovators and create new things (e.g., join startups), when the reality is that most computer science graduates are going to spend the majority of their time maintaining existing systems. (See the papers by Beth Simon and Andy Begel tracking new hires at Microsoft.) Few who do enter the startup world will create successful software and successful companies, so it’s unlikely that those students who aim to create startups will have a lifelong career in startups. In terms of impact and importance, keeping large, legacy systems running is a much greater social contribution than creating yet another app or game, when so few of those startup efforts are successful. Aren’t we then as guilty as the engineering educators, described in the first quote?
In terms of what we teach in computing and how, innovation and maintenance is a hard balance to strike. As Alan Kay has noted, “The computing revolution hasn’t happened yet.” We’re still inventing and innovating because what we have isn’t good enough. But, that desire to value what’s new leads us to overvaluing the fad of the moment, rather than exploring, developing, and understanding what we have at-hand. Why do we have to keep changing the introductory programming language, when it’s clear that we don’t understand how students learn (and don’t learn) the programming languages that we currently teach? Why did we give up on Logo when it’s still better than most languages for children today? It’s a tough balance — to strive for better than we have, but valuing, developing, and improving what we currently have.
Ruthe Farmer let me know that the White House Office of Science and Technology Policy (OSTP) is explicitly interested in getting research commitments in response to this call:
In less than two months, there will be another opportunity to celebrate, to mark progress, and to grow the coalition working to expand computer science. This Computer Science Education Week (CSEdWeek), taking place from December 5-11, schools, community organizations, families, companies, and government agencies-including the White House and Federal agencies like NASA, the National Science Foundation, the US Patent and Trademark Office, and the Department of Energy-will host events and activities to give students direct access to CS. This will include everything from Family Code Nights that engage parents and students in learning computer science together, to Hour of Code events at schools, in homes, and online worldwide, to events here at the White House highlighting making and computer science, bringing broadband internet access to all Americans, and using open data to drive innovation.
With your help, this upcoming CSEdWeek has the potential to be the largest and most successful to date and we look forward to hearing about your plans. One of the ways your organization can get involved is to commit to expand computer science in your community or nationally, with measurable, specific goals that uniquely utilize what you can do to spread opportunity.
If you have an action you want to undertake to support CS education, submit it here by November 14, 2016. We want to hear about remarkable strides being made in your community and how we can build on them!
The Research+Practice Collaboratory led the ECEP State Teams last week in framing research questions relevant to the President’s CS for All initiative. Below are some of my pictures from that effort, to prime thinking about the research questions that surround CS for All. (I have a lot more to tell about last week’s meetings, but first I have to recover and recoup time lost to planning/logistics/travel.)
Stephen Wolfram has published an essay arguing for a programming language as key to teaching computational literacy. He says computational thinking — I think he means the same thing as I do with CL instead of CT. I agree with him, and made a similar argument in my book. He goes on to argue that Wolfram Language (and the Mathematica infrastructure behind it) is particularly good for this.
He may be right. I don’t know of any studies of the Wolfram Language in any setting. The idea of providing a programming language with such rich knowledge behind it is intriguing and promising — so much there for just about any kind of inquiry, for any kind of context.
Hadi Partovi, CEO of Code.org, wrote an essay in response, where he similarly agreed with Wolfram on the issues of what we’re trying to teach and the importance of a programming language to teach those concepts. I disagree with Hadi on his critique of Wolfram, which is that the Wolfram Language is functional and lacks loops and declarations, and is inappropriate for use with learners. It’s totally true that most professional software engineers use procedural programming. But that doesn’t mean we have to.
If we’re teaching computational literacy or computational thinking, it’s not clear why the practices of professional software engineers should influence what we teach or how we teach it. That’s not what we are teaching. I argue that we need to take a learner-centered approach, where we recognize that learners are not professionals or experts, and particularly in computing, may not want to become professional software engineers.
What gets used in daily practice by professionals is the result of historical and cultural factors that in no way imply that we made choices optimized what is best for learners. Fortran won over Lisp because (in part) we didn’t know how to compile Lisp efficiently, but we do now and we know how to teach Lisp well. C++ and then Java won over Pascal because of perceptions of what industry wanted, not because of data and not because Pascal was shown to be ineffective for learners. What we know about what is “natural” for learners when they are first thinking about programming strongly implies that Wolfram’s functional structures are easier for learners than loops and declarations. We should strive to make decisions for what we use in classrooms based on evidence, not on what is professional practice, nor what we decide based on social defense mechanisms.
More importantly, there is no “best” platform for teaching computer science. As a functional programming language, the Wolfram Language is fantastic for data analysis and exploration, but it can’t be used to create a traditional “app.” Most professional software engineers use procedural programming, using exactly the same concepts that Wolfram criticizes: loops, conditionals, event-handlers, and such. Without these concepts, none of today’s software would function. The debate about which is better—functional vs procedural programming—has raged for decades without an answer.