Currently, VueJS is my app development framework of choice when working with college students. As an academic, I am no less susceptible than anyone else to be drawn into debates about which framework, or language, or platform (if any) is “the best” to teach to students. I offer these thoughts so that my students might better understand my perspective, and in the hope that others might find these arguments useful, as well.
Does it really matter?
As a college professor, I’m poignantly aware of the technology choices I make in the classroom. On the one hand, these are Very Important Decisions™ that can have undue influence on huge swaths of professional practice. For example:
More than 4,000 colleges and universities worldwide use Minitab Statistical Software for teaching and research, and thousands of world-class companies use Minitab and recruit graduates with Minitab on their resume.–Minitab to Celebrate the International Year of Statistics in 2013
Astoundingly, while free to colleges and college students, a single-user license for the full version of Minitab currently retails at $1600!!! Meanwhile, R, an equally-powerful, open-source alternative, is totally free, not just for colleges, but for anyone, and forever. But 40 years ago, Minitab made the genius move of offering their software to colleges for free, and as a result they gained a seemingly unshakeable foothold in industry because that’s what students knew how to use once they got out into the “real world.” Many if, if not all, software companies have since followed Minitab’s example and aggressively compete to become the platform of choice in universities.
On the other hand, the degree to which decisions made within academia are NOT important is so well-known, there’s a famous quotation now referred to as “Sayre’s law” that says:
In any dispute the intensity of feeling is inversely proportional to the value of the issues at stake. That is why academic politics are so bitter.–Wallace Stanley Sayre, 1905-1972
Furthermore, the expression “purely academic” refers to ideas or phenomena with little to no practical significance or bearing upon the lives of everyday people. In other words, we professors tend to be full of ourselves and attach overblown importance to the decisions we make. I am no exception to this stereotype–it takes conscious effort to remember that most of the things about which I argue with colleagues just don’t matter all that much.
That being said, young minds are impressionable, and unless we’re careful, it’s easy for a professor to instill biases in students for or against a particular idea or technology that are unwarranted given any objective look at reality. As such, please take everything that I’m about to say with a huge grain of salt. Ultimately, what’s more important is that our students can make these decisions for themselves once we turn them loose on society.
Should we even use frameworks?
There’s perennial debate amongst programming instructors about whether or not it’s even a good idea to “allow” students to use frameworks for their programming tasks. (As a meta-issue, I take exception to the power dynamic embedded in the notion that instructors should have the right to “allow” anyone to do anything … but that’s an argument for another day.) Purists argue that you have to have a firm grasp of the fundamentals of programming before you can be allowed to take advantage of the “shortcuts” afforded by frameworks. They argue that the frameworks do too much and that students run the risk of coming away without having really learned programming, despite having built perfectly functional apps along the way.
What I think gets lost in these discussions is the idea is that rather than learning how to program, what students are really engaged in is learning whether or not they eventually want to become programmers. Many, if not most, of us didn’t really figure out what we wanted to do with our lives until our late 20’s, if then. I’d argue that college is a time for young people to try on different identities, to figure out what their true strengths are, and to have a chance to hone those strengths so that at some point they will be able to employ them for the good of society. As such, more important than learning “the fundamentals” is gaining a sense of confidence that they can actually build things that can solve real problems for real people.
As an undergrad I was taught C++. I got A’s on all of my programming assignments. Without exception, the “programs” that I wrote were pointless, masterbatory exercises that never even came close to resembling my every day lived experience of what software was. Consequently, it was years before I learned to see programming as a tool that was vital to the way that I work to help people solve their problems. If frameworks, can short circuit the process of becoming an empowered problem-solver, then I think it would be crazy if we didn’t use them.
Before I finish this section, I want to call attention to what, for me, is the elephant in the room, and that is the rampant toxic masculinity that pervades the coding profession at every level from elementary school on up. The idea that we shouldn’t use frameworks because they make things “too easy” screams to me of an unchecked machismo that has no basis in reality. The truth is that projects in industry fail all the time and you can bet that they are using frameworks to do their jobs. Even with frameworks, there will still be plenty of tough challenges to address that will provide ample opportunity to learn to code.
So, why do I choose Vue?
I spent the last several years working with Angular, primarily because it was the technology that the Ionic Framework (excellent for building cross-platform mobile apps) used under the hood. I really like TypeScript (with which most Angular apps are built) and I love Ionic, but about a year and a half ago I decided to start moving away from them for a couple of reasons.
As it turns out, there’s a third reason I’m pretty happy I chose to go with Vue over React, and that has to do with the cognitive overhead of making architectural decisions. If you put Vue, React, and Angular on a spectrum of “opinionatedness”–meaning, the degree to which ecosystem decisions having to do with tooling, coding styles, project organization, UI libraries, etc. are made by the maintainers of the framework–Angular is by far the most opinionated and least flexible. React is by far the least opinionated, but the added flexibility comes with a cost, i.e. having to individually research and make decisions about each and every one of those ecosystem components. Vue hits a nice sweet spot right in the middle, where there is an obvious “best” choice for most things, e.g. Vuex for the app store, and Vue Router for routing.
I’ll fully admit that my experience with React is pretty limited. What time I have spent with it has been enjoyable–I especially like their new hooks pattern. If it were just me, I might switch to React as my framework of choice for no other reason than the doors to development opportunities it might open, but so far, I really like Vue and I was happy to see it ranked as the 2nd most loved web framework in the most recent Stack Overflow developer survey (2019). I think it’s upward trajectory will continue.
Ultimately, as much as we like to argue about which framework is “the best,” at the end of the day, I’m mostly concerned about two things:
- Do my students feel inspired and empowered to work hard to share their own unique gifts and talents in the service of a world that needs all their help?
- Do they see code as a viable tool to employ those gifts?
If my students become so preoccupied with the framework that they forget, or fail to realize, that the whole point of learning this stuff is to solve real problems, then I have failed as a professor. Code is a tool, not an end in itself.