If you were a developer in the 1990s or 2000s, your toolset was pretty straightforward. You probably used an IDE and a debugger. Maybe you had some rudimentary testing tools, too. These were all the tools you needed to learn to do your job. Today's generation of developers has it much tougher. Modern development requires learning a dizzying array of different types of programming tools. The days when being a developer meant simply writing code and calling it a day are gone.
Let's take a look at the programming tools that are essential for many of today's developers yet were virtually unheard of a generation ago.
For starters, take Git, a widely used version-control tool. Git, which was released in the mid-2000s, was certainly not the first tool of its kind; source-code management tools like RCS and CVS have been around since the 1980s. But unless you were working on a large and complex enterprise software project, you probably would not have used them.
In contrast, Git has become a source code management tool that large swaths of programmers use, even if they are one-person programming teams. That's due especially to the rise of Web-based Git interfaces, most notably GitHub, which have made coding a much more public endeavor. Anyone who's anyone in the world of coding is now expected to have a GitHub profile, and to understand how to use Git to share and manage source code.
What's more, the so-called GitOps trend has made Git into not just a source-code management tool, but an end-to-end project management platform. Developers are now expected to be able to use Git to keep track of tasks, streamline communications and more.
None of this was true of the source-code managers used by earlier generations of programmers.
Containers are another strong example of a type of tool that few programmers ever thought about a generation ago, but which are now all over the place.
Containers have a long history that stretches back many decades. However, it wasn't until the debut of Docker's container platform in 2013 that containers started to enter the mainstream.
One of Docker's selling points early on was that containers could streamline the development process by providing a common application hosting environment across all stages of the development pipeline. Earlier container platforms hadn't promoted that use case.
Today, knowing how to package code inside a container is essential for many programmers. So is familiarity with container platforms like Kubernetes, which has become popular for (among other use cases) providing a way to create application dev/test environments.
Continuous Integration Servers
Like containers, continuous integration (CI) servers have a longer history than you might imagine. The concept dates to the early 1990s, and it had found a following in some developer circles--most notably the Extreme Programming community--by the late 1990s.
But it wasn't until around 2010 that the use of CI tools started to become widespread among programmers of all stripes. Today, it's rare indeed to find a software project that doesn't do CI using a tool like Jenkins, Ansible, TeamCity or one of the other myriad CI platforms that are now on the market.
What this means for today's generation of programmers is that familiarity with CI servers is critical.
APIs, too, have been around for decades in one form or another. But it was not until the advent of the cloud age that APIs became part and parcel of many application architectures. It's hard to find an application today that doesn't rely on APIs in one way or another.
For that reason, today's programmers must have deep understandings of how APIs work and what the different types of API architectures are. They must also frequently be able to work with API testing and mocking tools, which are important when developing apps that depend on APIs.
Last but not least is the cloud. Before the launch in the mid-2000s of AWS, few developers worked with anything that resembled what is known today as the public cloud.
Fast forward to the present, however, and knowing how to use all of the tools that come with the public cloud is pretty important if you want to work as a developer. You won't get very far if you don't understand how to use tools for IAM, monitoring, deployment and provisioning on at least one or two of the major public cloud platforms.
Compared to earlier generations, today's developers have to master many more programming tools to do their jobs. Many of the types of tools that developers now use on an everyday basis are not actually new. But they have transformed from being niche solutions used by certain communities of programmers to must-have tools for virtually every developer.