What is the most important skill to look for in a software developer?

Gregory Brown
Building Momentum
Published in
2 min readFeb 10, 2017

Companies conduct technical interviews where developers are expected to reverse binary trees on whiteboards, or recall endless bits of technical trivia from memory.

The software industry endlessly battles over tooling choices, conventions, idioms, and “best practices” — people fly around the world to attend and speak at conferences on these topics.

Within individual teams, code reviews turn into nitpicking sessions over whether four lines of code could have been written as one line, or whether the name of function is expressive enough or not.

These deeply ingrained habits create an illusion that obscure technical knowledge and having the “correct” opinions is what matters most in software development… but that is exactly what we get wrong!

So what really matters in software development? What is the mark of a programmer who is likely to be successful in their work?

It’s not that complicated.

A successful developer is one that knows how to learn as much as they can about the people who use the things they build, and the problems those people need to solve.

While the unsuccessful developer is busy arguing about whether to use RSpec or Minitest, the successful developer is sitting down with Sarah in Accounting, watching her demonstrate an awkward workflow that needs to be optimized.

While the unsuccessful developer is adding three hundred comments line-by-line on a code review citing blogposts from Important Thought Leaders about minor style details, the successful developer is putting together a spreadsheet to share with Darrel from Sales as a proof of concept for a projections tool that is currently being designed.

While the unsuccessful developer is writing extraordinarily brittle unit tests that overuse mocks in ways that make them functionally useless, the successful developer is asking for access to historical customer support request data, so that they can run a report to help with prioritization of current work to be done, and triage of new incoming requests.

The unsuccessful developer is focused on optimizing the technology, while the successful developer is focused on the job to be done.

Is it the case that the successful developer must also be a competent technologist in order to do their job well? Absolutely! A deep technical skill set can serve as a force multiplier when applied in the right context.

But without that focus on “the job to be done” and the people doing the job? You’re sunk. You’re doomed to a life of arguments over semicolons.

The days of the purely technical programmer are over. We must adapt, and there is great reward in doing so.

--

--

Gregory Brown
Building Momentum

Business operations consultant, author of “Programming Beyond Practices” book (O’Reilly)