There’s much more to running a software development project than writing great code!
Your tech stack is a pile of programming languages, frameworks, test suites, servers, tools, and APIs, all wrapped up in a DevOps pipeline. Your development process adds issue management, a testing strategy, and code reviews to guarantee quality. Collaboration tools keep everybody in touch and on the same page.
No two engineering teams do all this the same way, but every team has to answer the same three questions every day:
- Where do we stand today?
- What progress will we make by tomorrow?
- Are we going to finish this thing before we run out of money and time?
The answers are deeply hidden under a mountain of shifting data. Check out our interview with Kathryn Koehler, Director of Engineering Productivity at Netflix, and how they’re approaching engineering productivity metrics.
Now let’s dive into some engineering productivity tools that fill critical roles in your toolchain. Your developers are likely to have strong opinions about each, but none of them is a wrong choice!
Table of Contents
Source Control Tools: GitHub vs. BitBucket
Your code has to live someplace! Whatever your development toolchain looks like, it is highly likely that your source control repository is running some flavor of Git. Here are two of our favorites.
In many developers’ minds, GitHub is practically synonymous with Git and is the default source control platform for open-source projects worldwide. Personal GitHub repositories are the de facto resumes of the cloud-centric world.
- A broad, deep, and familiar feature set.
- Free for most individual users, and inexpensive even for significant projects.
- We’re drawing a blank over here.
BitBucket deserves mention for one particular reason: it is an Atlassian product. So it offers deep integrations with sister Atlassian products Jira, Trello, and Confluence. If your team uses Atlassian, BitBucket is worth considering as a source-control alternative to GitHub.
- Deep integration with Jira, Confluence, and other Atlassian tools.
- Fully supported by key engineering productivity tools.
- Far lower developer adoption than GitHub.
- Oddly, no syntax highlighting in repositories.
Issue Tracking Tools: Jira vs. GitHub Issues vs. Trello
Software engineering is largely breaking up a complex monster into bites small enough for an individual developer to handle. This results in a lot of daily tasks, and managing this endless detail would be impossible without a strong issue tracker.
Jira is the de facto standard in the task management business. Most projects at the institutional scale use it, it offers every imaginable feature, and it integrates seamlessly with other Atlassian products.
- Extensive customization at every level, so your workflow can adapt to the needs of your project instead of the reverse.
- Zero learning curve from most users’ perspective, since almost everybody has already used it at least once!
- A steep administrative learning curve.
- Adapting Jira to project needs requires third-party plugins, and the price tag can get very high quickly.
GitHub has offered issue tracking for years, but for most of that time, an extensive backlog rapidly exposed the platform’s limits. Recently, things have changed. The latest version of GitHub Issues offers a complete feature set that any seasoned Jira user would recognize.
GitHub Issues Pros
- A good feature set for most small to medium projects.
- Deeply integrated with the rest of the GitHub toolbox.
GitHub Issues Cons
- Less issue type & workflow flexibility than Jira requires more disciplined issue management on the part of the development team.
- Not as many ways to slice & dice the backlog view.
Trello (newly acquired by Atlassian) may seem like an odd choice in a list of high-powered engineering tools. Still, it has one strongly redeeming feature that justifies its inclusion: it is extremely non-scary.
Most engineering decisions are business decisions in the early days of a project, especially at a new startup. So business stakeholders need to be directly involved in the early development process.
Such people are likely to be intimidated by the high-tech interfaces and options of Jira or GitHub. Meanwhile, Trello’s cards-and-kanban metaphor is accessible enough to just get out of the way, allowing business users to focus on tasks rather than tools.
- Highly accessible to business users.
- Trello projects can be imported directly into Jira when it is time to scale!
- Underpowered for serious software development.
- Few robust reporting options.
DevOps Tools: GitLab vs. Jenkins
Somehow, your code needs to progress from the developer’s desktop through test environments, staging environments, and ultimately into production. This is the province of DevOps, and project velocity is not possible without it.
If you love GitHub, you will love GitLab! This DevOps platform fills a role similar to Jenkins farther down the list. Open-source teams, in particular, will appreciate GitLab’s tight integration with GitHub and related tools. And the price is hard to beat.
- Deep integration with the GitHub toolbox.
- Very affordable, perfect for open-source teams.
- Less fully featured than more expensive tools.
- Assumes a Git-centric tech stack.
Jenkins is an open-source DevOps tool with an extensive pedigree. Although Azure and other cloud environments also offer hosted versions, it generally occupies a server in your DevOps infrastructure.
Setting up a Jenkins server is not a trivial process, but the result is a DevOps pipeline that perfectly suits the needs of your project.
- Stable enough to support the most mission-critical projects.
- Endlessly configurable.
- Steep learning curve.
- On larger projects, expect maintaining the Jenkins server to be somebody’s full-time job.
Code Quality Tools: LinearB & Sonarqube
The demand for software products is at an all-time high. Unfortunately, many think this means prioritizing lower development costs and faster time-to-market. But this will eventually backfire. You can’t neglect code quality.
Ignoring code quality quickly leads to wasted budget and resources paying off technical debt, which severely hurts your business outcomes. Poor code quality also makes it impossible to predict how long it takes to add new features without breaking others, causing highly inaccurate sprint planning.
High code quality is most visible to most team members through its effects. These include:
- Fewer defects
- Easier, faster revisions
- Better maintainability
- A more readily extensible codebase
- Measurably better performance across every dimension
This is just the top of a long list. The following engineering productivity tools monitor all the effects of code quality and other measurable aspects of your development process. They align the quality of your team’s practices with your desired business outcomes.
LinearB is more than just a code quality tool. But improving your code quality is at the core of everything LinearB provides. We believe that if you can reduce unplanned interruptions caused by code quality issues, then your team will be able to spend more time on features.
LinearB can help you:
- visualize areas causing code quality issues, such as your pull request process
- set benchmarks and team goals to improve these areas
- use WorkerB bot to course-correct your team members automatically
- track your progress against your goals over time
- Systematically reduces code churn and rework with a world-class holistic methodology.
- Integrates with every tool in your organization for perfect visibility at every level.
- Not for everybody! LinearB works best when you adopt their project management methodology.
- More expensive than other options on this list, unless you have a team smaller than 8, in which case it’s free!
SonarQube is narrowly focused on your codebase. It connects with your code repo and DevOps tools and will automatically analyze and visualize code quality and security in 29 languages.
- Easy configuration & administration.
- Super usable!
- Narrowly focused on code quality.
- Limited language support in some specialty domains.
Every development team is different. Whether you’re working on a new project, an established one, a well-capitalized enterprise, or a scrappy open-source hustle, no two projects have the exact management requirements. Nor will they require the same engineering productivity tool stack.
But unless you are working completely solo (and even then, it’s debatable), your team needs some kind of engineering management toolbox. Without it, your team is adrift with no idea what tasks should be done next, no idea what good looks like, and no way to improve and grow as the project matures.
As with so much in modern software engineering, you’ll find your best solution here through iteration.
Start with source control. This is the foundation of engineering productivity tools. I’m a GitHub fan, and you probably are as well. Whatever tool your choose, rationalize your releases with semantic versioning.
Now that you have source control pick an issue tracking tool and tie your commits to your issues. Adopt semantic commit messages to maximize clarity in your code repo and task list. I like Jira, but which tool you choose is far less important than just choosing one and using it!
Roll in a DevOps tool to standardize your testing and deployment procedures and eliminate manual operations. All the cool kids seem to be using GitLab these days.
Finally, layer on a code quality tool like LinearB to turbocharge your development practices and hold your team accountable to goals and engineering benchmarks at every level.
In the end, you are almost guaranteed a superior outcome, no matter which engineering productivity tools your team produces!