Should you hire an in-house full-stack software engineer to lead or expand your development team, or should you seek outside help?
This is a common question that can feel overwhelming, but it doesn’t have to. You’ve already taken the first step, which was to recognize that you need to build something. This could be a viable product or a platform–the point is that you either don’t have the right skills or sufficient capacity to get the job done. So you’re down to the question of in-house vs. outside help.
The important part of this decision is making the choice that aligns your software development efforts and strategy with your business goals.
The 7 Core Criteria
In order to choose wisely, you need to start by asking yourself some important questions.
- Is your current software development team effective, efficient, and productive?
- Are your products stable, scalable, profitable, and serviceable?
To get your house in order, you need to be solid on the 7 Core Criteria: three that have to do with the people on your team and four that relate to the products they produce.
- Effective: Is your current team highly effective at building what you want?
- Efficient: Are they able to make the best use of their time?
- Productive: Are they producing enough output that is of use or value to you in your business to keep customers happy and help you grow?
- Stable: Are the products you have working and letting you and your customers sleep well at night?
- Scalable: Are your products scalable and reliable enough for your needs, and is your technology supporting your desired growth rate?
- Profitable: Are your products profitable? Is OpEx well-managed and under control?
- Serviceable: How serviceable are your products? Can you easily add enhancements, address gaps and issues, and perform updates?
Understanding the Options
If you’re in pretty good shape on the seven criteria, it’s simple. Make your decision based on what length of time you need help. If you need long-term help, hire an employee or a team of employees. If you just need short-term capacity, hire contractors.
On the flip side, if you aren’t doing well in these areas, if your team is not effective, efficient, and productive, what happens if you throw more bodies at it? If you’re just adding bodies when your house is not in order, you’re lighting your money on fire. You will just have more people being less productive.
Before you grow your team, get your house in order. If you knew how to fix it internally, you would have already fixed it. Reach out to outside help to address the issues with your team. You want someone with experience and a deep understanding of what software engineering really is to help bring some of that DNA into your company and your software development process.
Strategic Alignment: Software Strategy and Business Goals
It’s important that you have a solid software development strategy, but even more so that it aligns with your overall business goals. Do you have a technology roadmap that you can believe in? Do you have a North Star when it comes to your business goals and technology alignment? What are you moving toward? Is it:
- Profitability
- Functionality
- Market Positioning
- Market Penetration
Whatever it is, you need to be sure your engineering team is pointed to the same vector. They should ask what business objective you are trying to achieve. They shouldn’t only be interested in the technology you need.
Evaluating Potential Partners: What to Look For
If you have decided to bring in a partner, how do you make sure you’ve chosen the right one? There are a few things you can do to help mitigate the risks associated with outsourcing your software development projects.
- Experience: Assess the company’s experience and approach. How long has it been around? Check out its references and case studies to see if it performs well in the seven criteria.
- Relationships: Do they have long-term relationships with their existing clients, or do they churn and burn?
- Talent: Similarly, what is their turnover rate like with their engineers? Are they able to attract, retain, and grow good talent? What is their culture like?
Software engineering teams in the outsourcing space must be highly disciplined in their processes to be truly effective, efficient, and productive. You want an organization that measures itself along the same seven criteria we have talked about—you want a dedication to quality.
Before you make a decision on a partner, talk to them, talk to their customers, and get a good look at turnover. If they are focused on quality, turnover rates will be low because they aren’t just looking at getting warm bodies and putting them in seats.
Finally, and this is a unique one, try to find a team that isn’t too far outside of your time zone. Can it work to be on opposite ends of the globe? Sure, but if your goal is maximum effectiveness, you’re going to have better results with a team in your time zone. You need that dynamic interaction, and that requires time. Think about it–turnover is going to be higher if they’re working overnights just to be on your team.
You need a partner who isn’t done until you are sleeping well at night. And what will make you sleep well at night? A stable, scalable, profitable, serviceable product. You will sleep better if you feel your engineering team, likely your largest monthly expense is effective, efficient, and productive. You will know you’re getting a good return on that investment.
You want code that actually works, like a car that actually drives. You need a partner who will take ownership of your product and not just try to maximize billable hours.
Maximizing Your ROI
Your team and your products are nailing the seven criteria, you have a roadmap that is aligned with your strategy, and you have a great partner; now what? How do you turn all of that into great returns?
There are several things you can do to maximize your ROI:
- Make good use of automation.
- Be consistent. Don’t make it up as you go along–be consistent in your code base, in the technology sets you choose, and with your architecture. Consistency allows you to deliver highly successful products to the market efficiently, effectively, and productively.
- Follow your engineering playbook. Make sure your team knows your standards and follows them. Don’t leave all the engineering decisions up to the engineers—it doesn’t all have to be “new” or the “latest and greatest.” Make conscious decisions on how and when to adopt new technologies so you are only adopting highly stable technologies.
Think about the risk and return. If you’re good on the seven criteria, you have low risk and high return. You aren’t lighting money on fire. This is the goal and how you maximize your ROI.
Future-Proof Your Development
Everyone wants their technology and products to be future-proof. It is very possible to produce software products that remain modern for decades—we have multiple clients who do this.
We don’t believe in disposable software. If you want long-term solutions that continue to be stable, scalable, serviceable, and profitable for decades, then you need to recognize that the serviceability aspect is critical. If you build something that’s not serviceable, it has a short shelf life rife with potential risks; you won’t be able to keep it modern or adapt it to give your customers what they want.
You need to continually create incremental value to keep your customers coming back. Your choices regarding the core technology set, the software architecture, and even how you train your software developers and software engineering staff affect the longevity of your products and your ability to future-proof them.
What Do You Do?
- Pick a strongly typed core technology set and a language (Java, C#, typescript). Products built in strongly typed languages will last longer. They inherently require more structure since you have to think about the type of every variable in the code. This forces you to think more long-term in your software project.
- Develop a set of engineering standards that provide continuous delivery of quality. Make sure you have a consistent and repeatable software engineering playbook. If you want your products to be future-proof, get away from making it up as you go; this comes back to consistency. You need effective technology leadership with experienced software engineers and architects who keep things current and mentor junior engineers on your team.
- Make sure your product’s design and architecture are as modular as possible so that smaller components can be adapted and reassembled to support new customer demands.
- Regardless of the technology set you choose, commit to the architecture.
Final Thoughts
There is really one simple thing to remember in all of this.
Software itself is written, but software products have to be engineered and built.
You’re not writing a book. You are building a product. Design and build your software products like you would design and build any physical product. Think about it: You wouldn’t make up building a car as you went along, would you? Of course not. Utilize automation as you move along, where it makes sense, and focus on building the product.
All of these things ultimately deliver a much higher return on your investment and a higher return on invested capital. Whether you choose to add a team of engineers or go with an outside partner, just make sure you aren’t waiting on some magical “next-gen” product to save you. It’s much better to get it right in the first place than to have to go back and fix it later.
If you’re ready for the right partner at the right time, we are here to help. Get a full team of senior software engineers for the price of one full-stack developer. Download our comparison guide to see the difference Modularis will make to your bottom line.