This Week in Programming: Reports of Agile’s Death Have Been Greatly Exaggerated
Declaring programming languages, methodologies, philosophies, what have you, dead — we just love to do it, don’t we though? Go ahead, give “agile is dead” a quick Google. We’ll wait.
Let’s see: different reasoning by different people. Lack of results, agile nowadays looks nothing like intended in the Manifesto, the take over of Big Consultancy firms, the forced transformations (to become self organised… the parody), no technical excellence just mngmt fad
— Astrid Claessen (#BLM) (@astridclaessen) August 26, 2019
Yeah, there are just a few articles over the years declaring the agile methodology — first introduced with the Agile Manifesto back in 2001 — dead and gone, but this week, one of the first seventeen signers of that manifesto, Alistair Cockburn, took to the internet in defense of the much-maligned methodology.
Writing that agile is not dead, quite the opposite, Cockburn looked at some numbers and did what he called some “back-of-the-envelope calculations” to argue that there were three particular reasons behind the numerous articles decrying the death of agile, and offered a counter-argument: put simply, if you look at the numbers of “knowledge workers” and the numbers around agile, agile is just getting started, not coming to its end.
YOUR #agile is dead: the one delivered by snake-oil merchants, kept on life support by overpaid consultants, and subject of 20-year religious wars.
MY agile is still going. Still bullshit-free. Pragmatic. Testable. Flexible. Sane.
Agile only ever meant "stop the madness".
— Brendan Lawlor (@brendanlawlor) August 26, 2019
But first, back to the three reasons: “phony ads, misunderstanding ordinary movement of ideas through society, and looking at the wrong curves.” The first one is basically writing that declares agile dead in order to sell the next best thing, which helps explain the vast number of articles out there. (That, and clickbait.) Easy enough. The second reason, however, deals with Everett Rogers “diffusion of innovation” and Geoffrey Moore’s “sales gap between early adopters and the early majority.” Both look at the adoption and “movement of ideas through society” and Cockburn says there are two parts here that lead to the final reason — that we’re “looking at the wrong curves.”
The pundits you are reading typically are innovators and early adopters. They adopted agile 10-15 years ago. Quite naturally, they have moved on and are working on the 2nd or 3rd round of interesting things that have arrived since then. […] They have been looking at lean startup, hypothesis testing, and agile product management, for example. All agile consequences, just a little more advanced. They have quite naturally (for them) forgotten the joy of discovering the agile approach for the first time. Everyone they know is already using it or has moved forward. To them it looks “passé”, “dead.”
Dead has two meanings.
Is the topic alive? Do many people talk about it? Yes.
Has Agile stayed true to its roots? Partially yes, and partially not so much.
Now there are non-tech people not only trying to tell tech people what to do (totally okay) but how to do it (not ok!).
— Christian Hujer #BLM #FreeAssange 🕊 (@christianhujer) August 21, 2019
So perhaps it’s just a vocal minority of innovators and early adopters? Cockburn continues, arguing that beyond this, we are just reading the graphs wrong. While it may seem that agile has reached the late stages of adoption, Cockburn instead says that “the entire distance we’ve come since 2001 doesn’t even fill the ‘innovators’ section of Rogers’ innovation diffusion curve!”
In essence, if we just look at the bigger picture — the true numbers and growth of “knowledge workers” in workforces across the globe, agile has just scratched the surface.
This Week in Programming
- Separating FaaS From Serverless: Techcrunch brings us a story on a new open source project that wants to expand the serverless vision beyond functions. The project, called CloudState, is meant to “augment” function-driven programming, not replace it, by taking advantage of existing technologies such as KNative, gRPC, and Akka Cluster and GraalVM on Kubernetes. In essence, Lightbend CTO Jonas Bonér makes a familiar argument that FaaS and serverless are often used interchangeably, when FaaS is merely a part of serverless, and tells TechCrunch that “I think that’s actually cutting the technology short. What serverless really brings to the table is this completely new developer experience and operations experience by trying to automate as much as possible.” Techcrunch summarizes the project as aiming to “bring to fruition this broader vision of what serverless means where developers can just write code without having to worry about the underlying infrastructure where the program will run.” Sounds great, doesn’t it?
Just added a feature to a huge 10+ year old app written in C#, ASP NET Webforms, and jQuery.
For each change, I had to wait 7 min for the build to complete.
No modern JS, just ES5
A striking reminder of how far we've come in 10 years.
— Cory House (@housecor) August 27, 2019
- Containers and VMs, Living in Harmony? While early on, containers and virtual machines were always regarded in an either-or sort of light, these days they’re working together more and more. This week at its annual VMWorld conference, VMware, the company that really brought VMs to ubiquity, introduced Project Pacific, what Chief Technology Officer Kit Colbert called “the biggest evolution of vSphere in easily the last decade.” So why is this so revolutionary? Well, VMware is “re-architecting vSphere to deeply integrate and embed Kubernetes,” which will serve as the basis for VMware Tanzu, “a portfolio of products and services that transform how the enterprise builds software on Kubernetes.” If you can’t beat ’em, join ’em, right? Project Pacific will offer a native Kubernetes experience, embedding the Kubernetes control plane into vSphere and giving vSphere users the ability to “see and manage Kubernetes objects (e.g. pods) from the vSphere Client.” Rather than dealing with VMs and containers individually, the project also provides application-level management “for applying policies, quota and role-based access to developers,” as well as unified access to compute, storage and networking resources. For further details, also check out our coverage of the news.
3rd rule of programming:- If it works don't touch it
— One Devloper Army (@OneDevloperArmy) August 27, 2019
- On Rust Replacing C for Systems Programming: A talk at the recent Open Source Technology Summit raised some eyebrows, as Intel Principal Engineer Josh Triplett took to the stage to discuss the Future of Systems Programming — or as PaktPub paraphrases in its article, “Rust is the future of systems programming, C is the new Assembly.” The talk provides an overview of “the history of systems programming, how C became the ‘default’ systems programming language, what features of Rust gives it an edge over C, and much more,” writes PaktPub. As for why Rust looks poised to take C’s place, they offer this reasoning from Triplett: “Rust addresses the memory management problem in C. It offers automatic memory management so that developers do not have to manually call free on every object. What sets it apart from other modern languages is that it does not have a garbage collector or runtime system of any kind. Rust instead has the concepts of ownership, borrowing, references, and lifetimes. […] Not having a runtime is also a plus for Rust. Triplett believes that languages that have a runtime are difficult to use as a system programming language.”
- Amazon Transcribe Adds Mandarin & Russian: Linguiphiles listen up — Amazon Transcribe now supports Mandarin and Russian, bringing the total number of supported languages to 16. The company first launched Amazon Transcribe, its automatic speech recognition service, at AWS re:Invent 2017, and is continuing to add languages to its arsenal, which are available to use through a single API call. Essentially, the service can analyze audio files and provide a text file of transcribed speech, or it can even translate in real-time.
- I Pledge Allegiance to Python 3… With the end-of-life for Python 2.7 quickly on its way, the time is now for projects to switch over to Python 3, and a number of them have, as SDTimes relates in its story about a pledge to Python 3 being signed by numerous big-name projects. Those projects include TensorFlow, Apache Spark, Apache MXNet, Tornado, pandas, scikit-learn, and SciPy, among others. Already, Python 2 support was extended an extra five years, but that time is up come January 1, 2020, and all of the signers of the pledge have vowed to “drop support for Python 2.7 no later than 2020, coinciding with the Python development team’s timeline for dropping support for Python 2.7.” The site offers the why and how for dropping Python 2 and moving to 3, even examining the practicalities for doing so.
The developers who seem to have all the answers?
They aren’t smarter than you.
They’ve just seen that before.
— Laurie (@laurieontech) August 26, 2019
- GitLab Discusses Its Use of a Single Codebase: Serving as part how-to and part why-should, GitLab has written a series of blog posts tracking its move to a single Rails codebase, and now the company offers an update on why they’re using a single codebase for GitLab Community and Enterprise editions. The reason, they write, is pretty simple: “For years, CE and EE used two different repositories for the Rails application. By using separate repositories we could separate proprietary code from code that is free software. On the surface, this seems like a good idea for different reasons (e.g., licensing), but over the years the drawbacks began to outweigh the benefits.” One of the biggest problems, they write, is how to keep this separation of proprietary and open source code while merging into a single code base. “Ruby provides us with a solution to this problem. In Ruby, you can create a module and inject it into another module or class. Once injected, the functionality of the module becomes available to the target module or class.” Thus, GitLab has created the gitlab-foss repository, which will essentially be a dependency of the enterprise edition. GitLab says it expects to have a single codebase the first week of September, with GitLab 12.3 to be the first to employ a single codebase.
- TypeScript 3.6 Arrives: Finally this week, there’s the arrival of TypeScript 3.6, which PaktPub again offers a summary of, citing stricter generators, new functions in TypeScript playground, better Unicode support for identifiers among its key new features. In addition, they write that 3.6 ” contains many new features in Language and Compiler such as stricter generators, more accurate array spread, improved UX around Promises, better Unicode support for identifiers, and more. TypeScript 3.6 also explores a new TypeScript playground, new Editor features, and many breaking changes.”
I hope Kubernetes 2.0 doesn’t remove the headphone jack
— palenbae (@palendae) August 24, 2019
GitLab is a sponsor of The New Stack.
Feature image: “The Death of Socrates,” Jacques Louis David French, 1787, public domain, courtesy of the New York Metropolitan Museum of Art.