To Make Coding Accessible, Fix Frameworks, Not Languages [Geeky]

I’ve started reading the research literature on how to make coding more accessible. One thing I’ve noticed is that almost all of it is focused on fixing programming languages. But given how coding has changed in the last decade or so, I’m wondering if focusing some of their efforts on libraries and/or frameworks would make more sense (WARNING: Very Geeky).

Take data science. Many say that the Python programming language has become increasingly important in data science, but that’s not really accurate. When people say “Python,” what they really mean are several libraries written in Python: tensorflow or PyTorch for machine learning/AI, pandas for slicing and dicing data, etc. And if you’re going to visualize your data in pandas, you need to master one of several Python data visualization libraries. Or you might use d3, a data visualization library written in JavaScript that’s responsible for a lot of the gorgeous visualizations you see on major news sites.

Even more importantly, having taken an intro class in Python doesn’t really prepare you to work in these libraries. Both pandas and d3 use an approach that’s called “functional programming,” and as I can attest from teaching them, they both look and feel wildly different than working in vanilla Python/JavaScript.

Similarly, the modern world of JavaScript web and application development — e.g., Node — has morphed into something that’s unrecognizable to someone who’d learned JavaScript many years ago. Even worse, there’s a remarkable amount of churn. If you’d taken the time to learn the Angular application framework a few years ago, by the time you’d really mastered it you’d be under a lot of pressure to switch to newer frameworks such as React or Vue.

And that’s a real problem for beginners: they can’t do a heck of a lot of useful work unless you’ve also mastered one or more libraries/frameworks. Let’s take one more example. Say you are a beginner who’s gotten excited about programming in AR/VR. To do it, you’d have to both learn a language and a framework — either C# and Unity or JavaScript and A-Frame (my favorite). Based on my limited experience learning/teaching them, wrapping your head around the frameworks, not the underlying language, is the biggest challenge for beginners. And as I’ve discussed previously, the stumbling blocks a beginner faces working in a framework may be very different than those for a language.

Finally, libraries/frameworks also offer one big advantage over languages for researchers who are trying to have an impact on the real world: as far as I can tell, most programmers switch libraries/frameworks more frequently than they do languages. Getting an ecosystem of Python coders to switch to a new language designed by researchers to be easier to learn? That’s a pretty tall order. Convincing them to switch from one Python data visualization library to another is a much easier sell. And in the JavaScript world? Folks have gotten so used to a ridiculous rate of framework/library churn that if a researcher created a new framework that was substantially easier to use, odds are good that a lot of coders would jump ship.

Obviously there’s still plenty of room to do interesting research on making languages easier to learn and use. But if researchers want to have a bigger impact, libraries/frameworks might be a better bet.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: