Engineering

The Outsource Trap

By

Ross Hale

on •

Feb 2, 2023

The Outsource Trap

The decision to solve a market opportunity through software is a key moment for any business – whether it’s a brand-new startup, a mature enterprise, or anything in between.  If you’re a business leader embarking on a journey to build software, you’re probably thinking something like this:

I need a great product, a product that my customers will love.  And I need it fast.

So I need to hire a team of the best engineers, designers, and technology leaders to build and ship it.  Either I will assemble that team by finding the right leadership who will know how to find and interview the best individual talent to build our product. Or, I’ll partner with a firm with a track record of building great products and outsource our product development to them.

But too often, after embarking on the journey to build, you end up with one of two problems, depending on which strategy you choose:

1. The Outsource Trap

You’ve decided to hire the experts and let them design and build your vision.  This is an experienced team, and you’ve been promised a great product, shipped on time to your exact specifications.

But over time, you find yourself wishing for a team that is as invested in your vision as you are.  You yearn for collaborators who eat, sleep, and breathe your product and do more than follow instructions.  You want a team that brings not only execution but also new ideas and a sense of ownership and investment in the success of the overall product and business you’re trying to build.

Eventually, you begin to wonder how you will build a team of your own that represents not only software development execution but also innovation, domain expertise, ownership, and leadership.

The problem with the outsource trap is that you haven’t planned for success.  When your product is successful, you will need a software development team and culture of your own so you can benefit from their ever-increasing skills and domain expertise (to iterate) and so they can become future leaders in your organization.  Put it in financial terms, your ROI will grow over time as the team yields greater capability to innovate and deliver.

2. The Cold Start Problem

You’ve decided to build your own team to avoid the outsourcing trap.  Maybe you’re lucky enough to have found a technology leader responsible for interviewing, hiring, managing, and delivering on your product vision.  Or maybe you’re simply partnering with a recruiting agency to hire a few senior engineers and a part or full-time designer.

Either way, after assembling your team, you begin feeling things aren’t gelling like they should.  Week after week, you have the sense that product development could and should be going faster.  And that the software output should be of higher quality.

This feeling is made worse because your team members work remotely from their homes, so understanding their workflow and day-to-day processes is next to impossible.

This is the opposite of the outsource trap: you haven’t planned for how rare and difficult it is to assemble a truly high-performing development team and create a culture of excellence in software development.  Interviewing and hiring the right people, installing the right development methodology, making the right architecture decisions, and fostering a culture of effective collaboration between product, engineering, and design is extremely rare and difficult.  Roll the dice with any group of professionals; more often than not, the results will be below your expectations.

Both approaches too often lead to disappointment, but it doesn’t have to be that way.  After working with hundreds of different software teams and product initiatives at startups, enterprises, and mid-market companies, I know it’s possible to quickly ship amazing software and build a top-tier tech team simultaneously.

Whether you’re a new entrepreneur, an experienced founder, or a leader in an already mature organization, my hope is these 3 tips will help you simultaneously build a team and product you can be proud of.

1. Excellent Methods Build Excellent Software

It’s not enough to gather great individuals and put them together.  You need a software methodology and life cycle to help them organize and orient in the right direction while staying out of their way.

Many old-school Agile methods claim to be the end-all, be-all of software processes like Scrum or SAFE.  While there’s nothing wrong with these, per se, they tend to be overly heavyweight and formal.  Nothing stifles innovation quite like overdone bureaucracy. 

You want a lightweight methodology to help your team stay organized and focus on the work itself.  Ideally, you also want a method that includes how the work of engineers, designers, and product managers is actually performed, in addition to how it’s organized.  

Installing a methodology early and treating it as a first-class part of how you evolve is an essential part of achieving excellence.

2. Recruiting Top Talent Goes Both Ways

The best talent is always in demand.  As you embark on your journey to find the best individuals, remember your process must be more than assessing their fit.  If they’re the right candidates, you’ll also need to sell them on why they should come work for you instead of the many other opportunities they could potentially pursue.

The best way to do that is to demonstrate how effective and excellent your organization already is and how much they’ll learn and grow by being a part of it.  The best software developers, whether in engineering, product, or design, are motivated by three things: shipping great software that users love, their own personal growth, and being a part of an excellent team.

Your interview process is the chance to show candidates that all three things are true within your organization.

Interview on the real product if you’re able.  The feeling of real collaboration and successfully shipping code, design, and the product is addictive and will leave your interview candidates wanting more.

3. Quality Supports SpeedThere’s a common misconception in the world of software called the Iron Triangle, which is often summed up as “Quality, Speed, or Cost: Pick two.”  In my experience, building quality into your software early will actually support and enable speed.  And, once you’ve achieved quality and speed, you can use a smaller team to achieve more for a much longer time (which is ultimately also the lower cost option)!

Investing in quality in your engineering practice through techniques like test-driven-development, continuous delivery, and platform engineering will ultimately allow your developers to code and ship with confidence much more quickly.

Investing in quality in your design practice by leveraging design systems will allow your developers to flexibly create new features at their own pace.

And investing in quality in your product practice will remove the uncertainty and waste associated with developers focusing on the wrong areas of the product or not knowing what, why, or how they need to build a certain set of features.

Avoid the trap of speed at the cost of quality.  This can create some software very quickly for a very short period of time.  But that speed will quickly become a dead stop if that codebase lacks the quality, testing, and organization to facilitate ever-increasing complexity.

My goal with this piece is to change how you think about building software.  Expand the definition of success to include not only a shipped product but also an effective team and culture that will enable you to innovate and iterate forever.

We built Artium explicitly to effect this outcome.  As a group of entrepreneurs, we created the software development consultancy we (and many founders I’ve met) wish existed.

Whether you’re building a brand new product or in mid-flight running a software organization, I’d love to chat about improving both your software and your team.

- Ross Hale, CEO of Artium