I work for a San Francisco startup. What we use in Silicon Valley isn’t necessarily indicative of the industry as a whole. So I informally asked a few friends distributed throughout the industry what tools they use, to figure out the tools a modern (but not Silicon Valley) development organization uses.
Granted if you’re in a gray cubicle farm—or, worse, a beige cubicle farm—you may not be on the bleeding, leading, or even dull but unrusted edge of technology so your mileage may vary. If you just ask Microsoft “what should we buy?” then again your mileage may vary, but even Microsoft realizes Git is king and our world is increasingly diverse, making any single vendor’s development tool stack harder to devote yourself to. It’s a polyglot world today when it comes to development tools.
If you’re trying to see where you are in relation to others, this article will show you. If you’re looking to set up a new shop and wondering “What is everyone else doing and where should we be going?” then it will show you that as well.
What’s clear is that modern development organizations—even ones that may think they’re a bit old-school—do not look like even those of a few years ago. In the near future, we’ll have a very container/machine-learning place, and maybe even be chatops-driven. After all, scrums and devops were space-alien concepts not that long ago.
What’s common across modern development organizations
The following things are common among most people I spoke with. They represent the non-aspirational state of software development.
Email is dead, Slack is king
Seriously, nothing has achieved widespread acceptance as quickly as Slack has. Sure, some places use HipChat or other Slack-like things, but Slack is how organizations work these days. They’re chatty, and now the chat is searchable.
PCM and CVS are dead; all hail Git and GitHub
Back in the day, code checkins were hard and locks were pessimistic. I’ve worked on global projects where checkins over a transatlantic cable took forever. And let’s not talk about checkouts.
Now, revision control is distributed and Git—although significantly more difficult to use than past tools—was such a step forward that Git has achieved complete dominance. \
Everyone has a Mac
I’m a reluctant Mac user. If it were up to me, I’d be running Ubuntu Linux on better hardware. However, my company-paid-for computer is a Mac. And I’m not alone. MacOS is faster, though more bloated and cumbersome, than Windows, and I have all my familiar tools like SSH, but I still miss Linux.
Jira is still our bloated king
Jira may be aging, and there may be alternatives like BaseCamp and the open source Open Project. But Jira’s strength is that if you’re on it, you aren’t leaving. You’re already familiar with it. It has a marketplace for extended functionality. It plugs into most things, and most other things support it.
Jenkins is still serving us
There are upstarts like Travis-CI and the also-rans like Jira-creator Atlassian’s Bamboo, but in the end, Jenkins is still on top running our continuous integration and deploying to our test environment.
AWS is where it’s at
Amazon Web Services isn’t the most affordable cloud platform. It isn’t the easiest to use. But it is certainly the most full-featured, and it is what most people are familiar with. I’ve met people using Google Compute Engine or Microsoft Azure. I’ve used them for projects myself, but by default the platform people use is AWS.
The internal platform is still VMware
For developers behind the corporate firewall where the cloud is merely a dream, they’re still on VMware and doing things the VMware way. Provisioning is still a wait, and the SAN performance is still unpredictable.
Agile development is mostly scrum-ish
Everyone is doing something like scrums but not scrums exactly and few are rightfully convinced that they are doing agile right or that their “agile” is really agile—and not either “cargo-cult agile” or chaos by another name.
Discipline, project management, and product management are still underskilled, undercompensated, and underrewarded.
What’s trending across modern development organizations
There are many leading-edge practices we talk about at InfoWorld—devops, Docker containers, Kubernetes container, Windows containers, cloud development platforms (PaaS), omnidevice development, machine learning, new languages like Kotlin and Google Go, and so on—that haven’t achieved global adoption (yet).
Whether it is Docker or its possible heir apparent Kubernetes, not everyone is using containers.
First, if you’re under load pretty much all the time, there is overhead to running it on AWS. Your cost advantage only happens if you can actually share resources.
Second, the use of containers makes your software more maintainable, but it also makes your build and deployment process slower and more complicated.
Identifying where you can use machine learning (a subset of artificial intelligence) and munging the data into a format that allows you to use machine learning is the hard part.
Some people are using it under the covers in products they buy, but they don’t have the data science expertise to prove its usefulness. Also, a shortage of expertise in the market has made machine learning adoption more muted than the hype would indicate.
People are interested in chatops, but no one I talked to is doing it yet.