No matter what the industry, every company today is tackling digital transformation. But for software consulting this hurdle accelerates by an order of magnitude. The very definition of what they do is to solve everchanging problems, often involving a multitude of new technologies and programming languages.
So how do consultants keep their teams agile and ready for new coding challenges?
To find out, we caught up with Joe Leo, founder and CEO of Def Method, a consulting firm based in New York City that specializes in complex software development for Fortune 500 clients like Citigroup, Walmart and Facebook.
Prior to launching Def Method eight years ago, Joe developed software for many organizations, from high-profile startups to the Federal Reserve to Credit Suisse. He’s also the co-author of the latest edition of the programming classic Well Rounded Rubyist.
We spoke to Joe about Def Method’s approach to their digital transformation challenges.
Coding Rooms: Let’s start with recruiting talent. Given the constantly changing software challenges you take on at Def Method, what’s your approach to hiring developers?
Joe Leo: There are plenty of consultancies that hire specialists. We don’t. We hire generalists. That means we hire people who are really skilled in general approaches to software development such as test-driven development, object oriented design and functional programming concepts.
At Def Method, we’re looking for the skills; we don’t look for the pedigree. I have no idea where our team graduated from college. I don’t care about that stuff. What I do care about is finding developers who can meet our technical expectations and are looking to constantly improve. And their personal qualities are also critical.
CR: What do you mean by that?
JL: On the personal front we’re looking for core values. What we’re doing is really challenging. We’re constantly working with new people and new technologies. We’re looking for engineers who are humble enough to recognize that our clients may not have as much experience in certain technologies as we do, but they have experience in their own specific areas that we need to deeply understand before we jump in and try to implement a solution. Humility and an ability to listen are super important.
When we find a combination of both strong technical skills and personal values in a candidate, we know we have a really good fit.
CR: Once you find the right people, how do you get them ready for client work?
JL: We’re really proud of our approach to professional development. Continuous learning is baked into our company culture. For starters, every developer at Def Method is allocated a large amount of time for professional development. This can mean online courses, conferences, or working on a cool open-source project. We supply a budget, and all PD is outside of vacation time.
CR: Do you also provide internal training?
JL: Yes, that’s critical. We’ve developed a process of constant upskilling, since our engineers are changing projects two or three times a year. We teach specific languages and frameworks internally as needed to meet the challenges of our clients.
CR: What does that upskilling look like?
JL: At the meta level, it’s about working together, learning from peers and learning by doing. An engineer skilled in a particular topic will develop a curriculum internally and we’ll attach one or two other engineers to work alongside this person on projects and concepts. This happens in parallel with the engineers’ self-learning, whether through textbooks or online tutorials. All the learning takes place in advance of the engineers being assigned client work.
And this study isn’t finished once engineers jump on client projects. We allocate internal hours for them each week to meet with their mentors to understand where they need to grow further, and then they spend time doing that. We think of this as an “apprenticeship sprint.”
CR: Sounds like a lot of internal education happening continuously for a range of different topics. How do you organize all these moving parts?
JL: First, we develop a comprehensive skills matrix for all our professional staff, whether they’re engineers, product managers or designers. This way, we can quickly identify and deploy people with the required skill sets to prepare them for new client challenges.
And second, our department leaders work closely with our sales team to forecast the skills we will likely need, so we can begin getting our developers ready ahead of projects.
For instance, our sales team recently spoke with a potential client who told us that part of their code is written in Elixir. Now Elixir is a cool and exciting language. But it’s pretty niche. We’d need to find the client base for us to support writing Elixir, but with two or three more conversations like the one we just had we’ll start organizing internal training in Elixir.
CR: How does your internal training play out with clients?
JR: Let me give you an example. One of the things I see with the large companies that have been around for a while – and I’m thinking of a particular Fortune 500 client – is that they often have critical software that’s been used for decades and decades. These companies have massive growth and keep thousands of people employed. So it’s a huge challenge to update this software that's been such an integral part of the organization for so long. But it’s also absolutely necessary as new technologies come into play. This is where our mantra of “seek first to understand” becomes so essential.
Once we understand , and wrap our heads around what exists and what’s necessary, we can then customize software to improve these critical systems and seamlessly blend in new technologies.