The rapid growth and diversification of computing technologies has resulted in a significant number of terms that some consider “computing buzzwords”. And this growing collection of buzzwords signifies a paradox. On the one hand, identifying a key term as a buzzword implies that there is a popular opinion regarding the lack of value in its usage. On the other hand, each buzzword has a substantial frequency of usage within a least one community, and thus signals that a group of people regularly use the term to communicate about an important issue. What, if anything, can computing buzzwords tell us about the current problems faced by software developers? Can examining buzzwords open possibilities of finding better, common language to communicate about the underlying challenges of the software industry?
In this article we will rank the set of common computing buzzwords. The ranking measure we apply is one associated with measuring how important the term is in context of computing education. Our hypothesis is that a buzzword of value should be one that is relevant to computing educators. For this study we chose our initial list of buzzwords sourced from the Wikipedia article on topic of “list of buzzwords” (see, https://en.wikipedia.org/wiki/List_of_buzzwords). From this article we filtered all terms associated with the topics of modern computing practices and software development.
To determine the relevance of each of these terms to educational aims, we considered a document that was produced by a large number of computing professionals in the field of Computer Science Education. We used this document as a proxy to measure the value of these buzzwords for educational purpose. The document we analyzed is the influential report developed by the Joint ACM/IEEE Task Force on Computing Curricula entitled “Computer Science Curricula 2013: Curriculum Guidelines for Undergraduate Degree Programs in Computer Science” (CS2013). This report outlines the knowledge units recognized by leading university educators as the essential concepts and taxonomy needed by software development professionals. The CS2013 curriculum report is 518 pages and articulates 308 core hours of knowledge units representing the state-of-the-art computing curriculum. Of these 308 hours it could be argued at least 200 hours (65%) directly or indirectly address software engineering concepts, practices, and methodologies supporting the software development process.
We have analyzed the CS2013 report and determined the word frequency of each of the Wikipedia computing buzzwords within the document. The following listing is the resulting word frequency data:
(‘Agile’, 21) (‘Ajax’, 0) (‘Algorithm’, 103) (‘Benchmarking’, 1) (‘Back-end’, 0) (‘Big data’, 1) (‘Cloud’, 13) (‘Content Management’, 1) (‘CMS’, 0) (Convergence’, 0) (‘Cross-platform’, 2) (‘Cyber-physical Systems’, 0) (‘Data Mining’, 14) (‘Data Science’, 0) (‘Datafication’, 0) (‘Deep Web’, 0) (‘Design patterns’, 4) (‘DevOps’, 0) (‘Digital Divide’, 4) (‘Digital Rights Management’, 4) (‘Disruptive Technologies’, 0) (‘Document management’, 0) (‘Folksonomy’, 0) (‘Frameworks (software)’, 11) (‘Fuzzy Logic’, 0) (‘Test-Driven Development’, 10) (‘Enterprise Content Management’, 0) (‘Enterprise Service Bus’, 0) (‘Internet of Things’, 0) (‘Machine Learning’, 48) (‘Microservices’, 0) (‘Mobile’, 38) (‘Modularity’, 8) (‘PaaS’, 0) (‘Plan-Driven Development’, 2) (‘Responsive Web’, 0) (‘SaaS’, 6) (‘Scalability’, 24) (‘Spam’,0) (‘Systems Development Life-Cycle’, 0) (‘Virtualization’, 18) (‘Web services’, 0) (‘Workflow’, 4)
Listing of the word frequencies of Wikipedia’s “Computing Buzzwords” in CS2013 report.
As we can see from the listing above, over 60% of these buzzwords appear with frequency 0, and thus do not appear in the report. Using the frequency as a ranking measure we have the following top 20 terms:
- Machine Learning
- Data Mining
- Frameworks (software)
- Test-driven Development
- Design Patterns
- Digital Rights Management
- Digital Divide
- Plan-Driven Development
- Content Management
- Big data
Buzzwords in Software Development Industry
Of these top terms listed above, there are only a few that represent concepts associated with modern trends in software development industry, including, ‘Agile’, ‘Cloud’, ‘SaaS’, ’Scalability’, and ’Virtualization’. This is a somewhat surprising result, since the list is very small, and except for the term ‘Agile’ these terms refer to core business concerns in software licensing and delivery models, and administering, provisioning and deploying IT infrastructure.
Granted that the CS2013 document is now four years old, it is still remarkable that so few prominent buzzwords in popular media covering computing are recognized as important by leading CS Educators. Today, there is a lot of media attention going to IT topical areas such as Internet of Things, microservices, containers, continuous delivery, DevOps, Paas, web services, and so forth. Yet, computing educators and university curriculum apparently rarely use these terms in discourse on software development. More importantly, these terms are not a significant part of the discourse practiced by junior software development professionals.
One possible reason for this state of language divergence is that universities are free from the demands and constraints of marketing and customer demands in the computing industries. However, the successes and pain points of software development in academics may overlap significantly with business concerns in certain contexts. For example, in the university setting we see software development practice with very short production cycles, since in many course schedules students are expected to deliver working software on a weekly basis. And in many project-based courses, students are expected to work in teams, use test-driven development, use version control (usually git/github), and deliver well-tested substantial and complex software solutions.
Within the university there can be tension between teaching new technologies versus focusing on fundamental principles. Faculties have time constraints, which make it difficult to acquire new ideas, new approaches, and technologies and bring them effectively into courses and curricula. Much of the software industry focuses on platform-based development opportunities, such as Web, Mobile, Cloud, and Gaming platforms. The past several years have seen a growing diversity in the set of programmable devices that are employed in university programming courses. For example, some introductory courses have chosen to engage in web development or mobile device programming. Some courses have applied the use of specialty platforms, such as game consoles or robots. Some educators believe that modern platforms can generate interest and enthusiasm for Computer Science among freshman students. Yet, we find that the topic of Platform-Based Development (PBD) represents a new knowledge unit in the CS2013 report, and these newly introduced units are listed only as electives, which have no core hours indicated in the CS2013 report.
Buzzwords in Software Engineering Curriculum
One prominent academic course has brought widespread recognition to issues associated with industry-focussed software development buzzwords such a Saas, Cloud, Virtualization, and Agile development. The course CS169: Software Engineering, is led by University of California, Berkeley faculty members Armando Fox and David Patterson, see, https://sites.google.com/site/ucbsaas/. This course is the basis of two very popular massive open online courses (MOOCs) covering SaaS, software lifecycles, Agile, software project planning and management, requirements elicitation, behavior driven design and test driven development, and design patterns. The success of CS169 may represent the beginning of a new set of breakthrough opportunities for building a common language for discourse between computing professionals in academia and industry.