The Hidden Success Ingredient: Organizational Maturity

“No one can whistle a symphony. It takes a whole orchestra to play it.”

HC Luccock

Q:  What’s the real difference between trying to do everything yourself, or hiring freelance talent, or engaging with a 3rd-party engineering team?

A:  Organizational maturity.

You see it in all walks of life. A football team may have lots of talent, skills, and capabilities on its roster. But the ability to play as an effective, winning, championship team comes from a general management and coaching organization that harnesses all that talent and forges it into something greater than its individual parts.

It just makes sense that an organization that has been doing a particular thing for many years is inevitably going to learn many critical lessons over time. As different challenges are encountered and subsequently overcome, that experience accumulates and translates into high performance velocity and execution of best-practices.  Less guesswork.

Unfortunately, this key ingredient in the search for effective solutions is often overlooked.

For example, in the context of satisfying a software engineering need for your business, and if the solution you need isn’t available “off the shelf” and needs to be built specific to your needs, then the typical thinking of how to tackle this challenge often boils down to a few predictable options:

  • Hire internal personnel and Do-It-Yourself (DIY).
  • Hire freelance contractors to do it.
  • Hire an established software engineering organization.

From a cost, quality and timeliness of results perspective, the ramifications of these options aren’t always what one might imagine.

From the Do-it-Yourself perspective, which is mysteriously most commonly the default approach, it more often than not turns out to be the most expensive option, takes the longest to become productive, and has completely unpredictable quality of results.

Why is that?

Because first and foremost, assembling a world-class software development team takes a non-trivial amount of time and energy.  There is high-level recruiting involved, onboarding, training, etc., and most importantly the need for a new team to then gel and begin functioning as a cohesive unit.  That may or may not ever be successfully achieved.

Secondly, there is typical turnover in any organization, and then you face the issue of having to start all over with new team members. Plus, by definition, any new team starts out on the bottom rung of the organizational maturity ladder.  If you’re not familiar with an organizational maturity ladder, there are many models to illustrate it, but the most common is probably the CMMI model[1]:

[1] Note:  Many formal engineering organizations in multiple industries follow the CMMI model, and even go so far as to obtain formal CMMI certification. This is a rigorous, time-consuming and fairly expensive process for each level. However, with or without formal certifications, an organization may actually be “Compliant” with higher levels of organizational maturity and actual business practices.  For example, a CMMI Level 3 Certified company may actually be operating in various areas of their organization at Levels 4 or 5, but just haven’t yet paid for the formal audit to document it.

  • Level 5 – Optimized for Continuous Improvement.
  • Level 4 – Qualitatively and Proactively Managed.
  • Level 3 – Processes Clearly Defined.
  • Level 2 – Reactive Management.
  • Level 1 – Ad Hoc, no clear process definition nor qualitative management.

Indeed, it can take years for an organization to grow from Level 1 to Level 5, if it ever gets there.  This is essentially why the DIY model is the most time consuming, expensive, and represents the highest risk for ultimate outcomes.

To be clear, if your organization is a pure software development company, developing its own software products and services, then you have no choice but to go through this maturation process with at least a core team if not the entire development operation.  If needed, a core team can also be augmented by freelancers and 3rd-party software engineering organizations, but if your main business is to produce high-quality software for commercial sale, than a high degree of organizational maturity isn’t optional.

However, for the rest of world, whose core business is something else other than writing software (e.g. Healthcare, Fintech, Energy, Retail, Hospitality, Agriculture, Manufacturing, Construction, Travel, Government, Transportation, et al), organizations who use various software systems to get their mission done, and have software development needs beyond commercial of the shelf offerings, then you are faced with the three choices listed above.

Choice number two is to refrain from hiring an entire team of all internal employees, and instead get some freelancers to perhaps tackle your need on a project basis.  The main upsides of this approach are the ease of obtaining skilled personnel, having little to no administrative overhead and HR costs, etc.  The downside, once more, is still the critical need for an organizationally mature team.  While money might be saved via freelancers in lieu of internal headcount, if you are talking about more than one person on the team, the challenge remains the same to evolve your team from Level 1 to Level 5 of organizational maturity.

It is in recognizing these realities that the 3rd-party software engineering organization gains the advantage.  If you are looking at an established 3rd-party engineering organization who has been in the business for many years, has a multitude of successful engagements and many happy, referenceable clients to boast of, then chances are, they’ve already made those investments in organizational maturity which you then get to enjoy Day-1.

If theoretically all other costs were equal (and they are not, as many 3rd-party software engineering organizations are substantially less expensive than hiring internal personnel or local freelancers), your decision becomes a no-brainer when you consider that you can have an organizationally mature team virtually on-demand.  Granted, that team may consist of multiple individuals coming together to form a new project team, but they don’t come by themselves.  They come with expert supervision, proven workflows, established communication processes, and experienced management of the organization, which has more than “paid its dues” in terms of developing its organizational maturity and best-practices.

Perhaps a good analogy to all of this is to be found in home-building.  Indeed, a professional home-builder may use various tradespeople to build a new house – the carpenters, plumbers, electricians, drywall techs, roofers, etc.  But it’s the home builders themselves who have built many homes over many years and have developed the depth of expertise to ensure that the job gets done right, on time, and within budget.

Now picture yourself deciding to build your own dream home acting as your own architect and general contractor. Do you have the requisite skills to pull that off?  Very few people outside of the home-building industry can say yes to that question.

So why would you risk building a mission-critical software system all on your own (if that’s not your businesses’ core expertise), or do it with ad hoc sourced freelancers?  Those are not the most cost-effective choices, won’t get you a result any faster, and nor will they ensure a good outcome.

This point was driven home for me personally quite recently, after just purchasing a new home that needed its share of TLC and updating. I consider myself a fairly accomplished Do-It-Yourselfer.  I enjoy carpentry, have done a bit of electrical work, flooring, lighting, and even some basic plumbing.  Well, just the other day I found myself upgrading an old bathroom sink faucet with a new one.  I prudently shut off the water to the house, so no risk of floods.  Well, as it turned out, as I was under the bathroom sink disconnecting the old water supply lines from the old sink faucet, one of the stop valves literally “broke off”!  Granted it was over 20 years old, encrusted with corrosion and brittle; but with the valve no longer there, I couldn’t turn the water to the whole house back on, or there would be a flood.

Long story short, I was immediately on the phone to a professional plumber.  Thankfully, I found one readily available, and a few hours later the crisis was averted.  The plumber showed up with proper tools and parts I didn’t have on-hand.  And in less than an hour (for a reasonable price, mind you!), the problem was fixed, and he even completed the entire installation of the new faucet as part of the job.

The moral of the story here is that your best option is often: Let the pros do it.  They have way more experience than you.  Better tools.  Better training.  And more organizational maturity for addressing very specific needs.

So, when it comes to your urgent software development project, or need for a top-shelf QA team, or a system integration, or migration from old technology to new or from on-premise to cloud, just realize that just hiring people internally, or seeking out freelancers, is in fact the slow, expensive, and risky way to get done what you need.  The mature, well-established engineering organization will actually be the ones who will have a pretty good idea of exactly what it is you need done, get it done expeditiously, and do it for less cost than the other two options. And this proposition is demonstrably true because of the reality and necessity of high-level organizational maturity – the hidden ingredient you can’t allow yourself to miss.