The Sharpest of Dev Tools

8 min read January 20, 2022
Domain Insights Infra

Software developers are most productive when they enter what is known as the flow state. The flow state is when a developer is singularly focused on the programming task at hand, having taken the time to build up task context in their head. When the developer is interrupted, this mental context can disappear quickly, causing a disruption in the “flow”.

Watching a seasoned developer use their computer while in the flow state is a thing of beauty. They hop gracefully between linked files in their IDE, write a few lines here and there, and switch windows between applications without lifting a fingertip from their keyboard. It kind of reminds me of watching the octopus chef in Monster’s Inc.

Of course a sushi chef is only as good as his knives. Master culinary technicians (like our octopus friend above) depend heavily on the tools they use to remain in the flow state, and software developers are no different. As anyone who has built software would tell you, good tooling is a requirement to operating efficiently. Part of what makes developer tools such an exciting area for investment right now is that developer efficiency has never been more important, as evidenced by the tech talent war that has reached fever pitch over the last year and a half.

In 2020, when businesses across many industries were furloughing or laying off staff after the breakout of the pandemic, Facebook announced plans to hire 10,000 additional engineering and product staff. Amazon outdid them the next year when it unveiled plans to hire an additional 55,000.1

Just last month, Apple informed certain key engineering staff that they would receive additional $180,000 bonuses, vesting over multiple years, to prevent them from defecting to competitive companies.2 Clearly the market is hot for tech workers, and companies are willing to pay up.

As competition continues and pay increases for developers, businesses will be increasingly willing to allocate budget for tools to help their greatest assets be successful in their jobs. This dynamic has contributed to the success of many dev tool startups over the last ten years. Companies like DatadogNew Relic, and Sumo Logic have equipped engineers to monitor and debug their code running production. Others like CircleCIHarness, or the big cloud platforms are making it easier for developers to ship merged and tested code to production.

Four Steps in the Software Dev Lifecycle

This article focuses on the state of tools used earlier in the software development lifecycle. I’ve broken this lifecycle down into four main steps: issue tracking, coding, code review, and test + merge.

The graphic below shows a few of the tools used across these four steps:

Issue Tracking

Prior to writing code or shipping features, developers use task management tools to track, allocate, and prioritize work. Jira (built by Atlassian) is the industry standard and is growing to be used as a general project management tool not only for agile software dev teams. A natural result of the tech talent war is that companies have more development work that needs to be done than engineers who are able to do it, increasing the importance of such project management tools.

Newer products like LinearTaskade, or Shortcut place an emphasis on performance, hotkey bindings, and streamlined user interfaces to help devs track and organize issues as quickly as they’re able to write code. New tools and improved interfaces will continue to emerge in this category, though improvements are often only marginal and many in the industry consider the software side of project management to be a solved problem.

Coding

Most software used in the act of writing code is and always will be open source. IDEs, version control programs, and execution shells are built and maintained by the open-source community. As software engineering increasingly becomes the act of stitching pre-existing components together, tools to examine those components for security, compliance, and correctness, like SnykWhiteSource, and Fossa, are growing in popularity as well.

Sourcegraph and Kite provide cloud-based code search and assistance to give visibility into complex codebases and enable collaboration between teammates. GitHub Copilot is an interesting tool that uses intelligent autocomplete to give code suggestions in popular editors. Proprietary technologies will continue to gain traction alongside the open-source tools that power this core activity of software development.

Review

The next step in the software dev lifecycle is code review, in which peers provide feedback and eventually sign off on new code written by their teammates. Code review tools have for years been a commodity feature of broader code management platforms like GitHub and GitLab.

Purpose-built tools like CodeStreamCodacy, and PullRequest provide code review as a standalone service, bringing AI-powered insights and quality analysis into the review workflow. As the DevOps paradigm continues to emphasize quality control earlier in the dev lifecycle, room will grow for name-brand companies to build significant business in this space.

Test + Merge

The final step of the four is merging new changes into a project’s larger codebase. Aqua and Checkmarx run security scans during the test and merge steps to catch security vulnerabilities before they are introduced. CircleCI and Buildkite automate testing and enable continuous integration of new changes with hosted test and build platforms.

This category is defined by hosted solutions rather than open source, as the test and build step is more compute-intensive and environment dependent than steps earlier in the lifecycle. Even with notable winners like CircleCI in the space, the high friction and time-intensive nature of testing and merging new changes represents a large opportunity for more holistic, next-generation tools.

New Opportunities in Dev Tools

With these existing tools in mind, three clear opportunities (among many others) remain for startups to build new kinds of software dev tools and combine tools in new ways to capture market share.

The Shift Left Continues

The phrase shift-left testing was first coined in 2001 and conveys the idea that software should be tested and validated as early as possible in the development lifecycle. In the pre-cloud days when most big software businesses ran on quarterly (or longer) release cycles, the majority of testing occurred after development and shortly before release to customers. Testing earlier and more often has enabled teams to move more quickly as the cloud model gives customers leverage to demand frequent improvements and bug fixes.

Source: https://www.kovair.com/blog/shifting-left-going-beyond-agile-devops-in-sdlc/

While this movement has shifted the bulk of testing and validation to the fourth of the steps I highlighted above (test / merge), opportunity remains for products to move testing even further left towards the coding and review steps of the lifecycle. While previously weeks and months could be wasted by bugs caught prior to a quarterly release, these days an afternoon can be wasted if a new feature is developed with an issue not caught until late in code review, or until tests run in a hosted CI (continuous integration) platform.

Limits will always exist with the class of issues that can be caught via static analysis during coding or review, but AI-powered solutions and deep open source information repositories will broaden what can be discovered and save hours of precious and expensive developer time.

Feedback Loops in the Dev Lifecycle

While a plethora of tools exist to aid in issue tracking and task management, feedback loops between later stages of the dev lifecycle and these platforms are nascent and represent another interesting opportunity. The dev lifecycle shown above remains largely a linear process from left to right, powered by manual developer input into the issue tracking tool. More holistic platforms that feed insights from code or review back into the top of the funnel can enable tool consolidation and gain larger adoption. As the AI-powered solutions discussed in the previous section increase in sophistication and move from a nice-to-have to a must-have, a natural next step will be to transition the linear lifecycle to a circular flywheel.

Vertical Integration Continued

The opportunity for vertical integration along the developer lifecycle is similar to the prior point, but has even greater implications. Widely used platforms like GitHub, GitLab, or Atlassian’s Bitbucket excel with testing and CI, provide simple review features, and have vertically integrated deployment management and performance monitoring features.

The flow state is more difficult to achieve when hopping between multiple tools for different elements of the dev lifecycle. For example, a developer may view Jira for ticket specifications, jump to VSCode to implement, open Confluence docs to ensure adherence to desired coding style, go back to Jira to get the next bit of specification, and so on.

Vertical integration with the earlier parts of the dev lifecycle, especially with coding assist functionality, is a significant opportunity in which a platform could emerge to solve a broader scope of problems and remove the need for developers to hop between tools during their workflows.

https://hbr.org/2021/11/how-to-attract-top-tech-talent2

https://www.benefitspro.com/2021/12/29/tech-talent-war-apple-offers-180000-bonuses-to-prevent-defections/?slreturn=20220015221745

Related Insights