Almost every business is technology-enabled in some way these days. Hair salons do their scheduling online, powerline workers train in VR, and pharmacists use AI systems to check for contraindications. There are very few businesses out there that could not be made more efficient and profitable — or provide better services for their customers — through technology.

In most situations, buying software and customizing it makes the best sense. You need a word processor and an accounting system, but it would show boldness to the point of lunacy to build one yourself. Quickbooks and Microsoft Word are worth the few hundred dollars a year. They might not be perfect, but the cost to build and maintain your dream accounting software could run into the millions.

However, in many situations, businesses invent new ways to improve their internal operations or their customer experience. While a comparable off-the-shelf solutions may exist to fit those needs, a custom built product is likely the only way to deliver the required features and processes the company is looking for. Features like these become competitive advantages. Organizations want to own the intellectual property behind their competitive advantages. You don’t want to license these types of systems if your competitors can license them just as easily.

That leaves companies with one choice: Build your own custom software. But the question is whether you should try and build your business-changing application in-house or outsource it to a development agency.

Cost vs. Time

Most decisions in the professional space come down to the project management triangle. If you want to build software of any decent quality, you can pick two of the three corners to move: cost, time, and scope (the number and robustness of features the project has). If you want fast and cheap, you have to shrink the scope. If you want robust and cheap, you’ll have to wait a long time.

The decision to hire an agency or build a team hinges on these three corners. In business applications, scope is usually the non-negotiable — the requirements are the requirements. Building a team takes a lot of time and costs money. Hiring an agency will drastically reduce the ramp up time by comparison, but potentially cost more. If you are worried about quality, remember that you get what you pay for.

Management Structure

Deciding to build out your own development team is not for the faint of heart, but it can have serious benefits.

To build a basic, but healthy and functioning, software team you will need the following:

  • A CTO or CIO to handle strategy and management.
  • A Director of Engineering to manage the team, build out processes, etc.
  • A Software Architect to design the system. (This can be a senior developer for small teams.)
  • A couple of DevOps engineers to manage the environments.
  • At least one QA expert. (No, developers can’t check the work themselves, I’ve tried.)
  • Developers, including full-stack, frontend, and backend developers if you’re building out a product. A good mix of senior, mid-level, and junior developers would be my recommendation to make the team robust.
  • A product owner. Preferably someone with management experience
  • A scrum master (if you’re following Scrum/Agile).
  • UX expert. I cannot understate this role enough! (They can be outsourced if you have to, but are much better to have on the team.)
  • A visual designer. Depending on the product you are building, this is the one optional role.

This is the biggest reason to hire an agency. If you want something built well, you really need a team that looks like something similar to this. Depending on your budget and experience, it could take years to put a team like this together.

However, if you have highly technical and experienced upper management there are benefits to in-house teams.

But We Are a Lean Startup

That’s great! Then you don’t need any of the stuff I listed above. But if you are purely a technology startup, then you (I’m guessing you’re a founder), need to be building the tech yourself, or at least have a co-founder building the tech. As the company scales, you can bring on additional help and you will almost certainly start looking like the organize above.

How Long Does It Take To Build a Team?

It depends on if you’re talking about a good team, or just any team. Building an organization from scratch takes time. You need to recruit, hire people, onboard them, manage them, weed out the good, let go of the bad, hire replacements for those let go, etc. You also need to invent, document, and enforce the systems and processes that will lead to the best outcomes. You will need to build a culture of caring, accountability, and quality. So, basically it will take a long, long time. This is a lot easier to do if you have a top rated CTO or a Director of Engineering in place already. Someone who has gone through this process before will be able to get you up and running much more quickly. They will also be able to oversee all stages of the team building from recruiting to delivery.

Recuiting may be the hardest piece of all of this. Good developers don’t want to join companies without histories of good development practices. So if you don’t have someone for new hires to look up to, you’re going to be stuck with coders who are just looking for a job, and they don’t write good code.

In-House vs Outsourced — Conclusion

Unless you are going to go with the lowest bidder, there probably isn’t that much difference between a good internal team and a good agency. Well-run development studios partner closely with their clients and eventually start to act as part of the same company. The developers in agencies like this feel as much ownership in what they are building as full-time employees would — sometimes more.

Price is not going to be dissimilar either. Once you count things like benefits, office space, management scaffolding, training, hardware and software tools, payroll, HR, etc., etc., etc., it’s unlikely that in-house could be done cheaper than even the large agencies.

The real difference comes down to the level of control you want over the team and the type of product you’re building. If you are a small technology startup you would be crazy to hire a big agency unless your product needed to be really good from day one. If you plan on becoming a technology company, you might want try a hybrid of agency and in-house. Finally, if you are a small- to medium-sized company whose existing products or services are not predominantly tech-focused or delivered, I would suggest not doing development in-house.

Previous Article
I help cruise lines turn their technical ideas into reality. I'm experienced in all stages of innovation and technology management. I've also been programing since I was 8 years old, and have somehow retained the ability to have normal human interactions. Occasionally I speak about how Industrial Psychology and Neurophysiology can be interrogated with IT and systems management, because I spend a lot of time thinking about the subject, as strange as that may seem.

Leave a Reply

A Simple Communication Framework

The single biggest problem in communication is the illusion that it has taken place.

George Bernard Shaw

Why a Framework?

The single most important thing that we do at work is communicating with other people. It’s generally how we are able to come up with ideas and execute them in ways that a single person could not.

It does seem that this whole “talking to each other” thing can get complicated. “Miscommunication” seems to be the number one excuse for something getting messed up in a knowledge worker environment. There are a whole host of reasons why this is the case. But one of the easiest ways to combat the lack of retention, the lack of comprehension, or simple miscommunications is to start with the way that we express ourselves.

At Sourcetoad, we use an adapted communications framework that has made life a lot easier for everyone involved. We have set up some basic rules for communication that are easy to remember, and we use keywords so that people receiving the information can context switch into the receiving framework mode. In other words, when people incite the framework, everyone changes their mental stance and prepares to communicate.

An Adapted Simple Model

This framework has been adapted from an amalgamation of numerous other frameworks. It takes a lot from military communication tactics (where being understood can be the difference between life and death) and a number of other popular communication frameworks. This is just the simplest way that we’ve been able to express it. It has been hacked together from too many sources to cite, but it is still simple enough to work well for us.

The Framework

Our framework has only four key pieces:

  • Intent
  • Context
  • A sketch of the desired outcome
  • A sketch of a strategy to get to that outcome

These four items can be placed in various orders, but typically they start with intent and end with a strategy.

Intent

Stating your intent, or at least clearly knowing what your intent is, is the most powerful part of this framework. Understanding your own intent in everything is extremely powerful, but that’s another blog post. Conversations that do not have a well-understood intent are just “chats.” They’re not the type of communication that will solve any problem.

Stating your intent at the beginning of a conversation does two very important things:

  1. It switches the receiver’s brain into “communications framework mode.” It allows the other person to understand that you are about to use the framework.
  2. Stating your intent allows the person to whom you are speaking with to know why you are talking. If I don’t know what you want right at the beginning, we’re probably not going to have a fruitful conversation.

Context

Context is the backstory or history that your receiver may need to fully understand the conversation. Telling the person you’re talking to about the players involved, what previous conversations touched on, or what the stakes are can be extremely useful.

The three main questions you should ask yourself when giving context are:

  • What are we talking about?
  • What do you need to know about this?
  • Have I told you everything you need to know?

When saying this bit out loud, you can use the following trigger phrases to make sure your receiver knows you are using the framework:

  • “For a little background…”
  • “For context…”

Sketch Desired Outcome (End State)

After you’ve laid out your intentions and the context the receiver needs, it’s time to actually tell them what you want. This involves explaining your vision of the outcomes, or the “end state.”

An outcome or end state might be as complicated as: “I think what I want is for the company to open a new line of business, complete with staff and warehousing. I also think we’re going to need to custom build an entire logistics software system over the next few years.”

Or it could be as simple as: “What I would like is that at the end of this conversation, we set up a time to have a formal meeting about it with the team.”

You need to be flexible here because even though you might know what type of outcome you are looking for, you need to leave room for the solution to include new ideas from your audience. That’s why we call it a “sketch.”

When saying this bit out loud, you can use the following trigger phrases to make sure the receiver can envision what you want to happen:

  • “What I see happening…”
  • “My desired outcome is…”

Sketch a Strategy

You know what you want (intent), the receiver knows what you want (end state), and they have the backstory (context) to understand what you’re talking about — we can now move on to action.

In this phase, we outline a possible method of getting to that end state I mentioned earlier. This is up for discussion, of course. The person you’re speaking with is not required to follow your sketch. Rather, this phase invites them to build a strategy with you to accomplish the desired outcome.

The person you’re speaking with might have a much better idea of how to get there than you do, especially since they now understand your intentions and what the end goal is. So keep an open mind, and enjoy the brainstorming.

When describing the strategy you envision, Use triggers like:

  • “A rough strategy we could take is…”
  • “A path I see is…”
  • “I’d suggest x as the next steps. What do you think?”

Example 1

Intention: I want a dashboard to show the ten most important KPIs for our internal product. I want the team to manage the build-out and timing to balance client needs. I’m prepared to invest about 100 hours for the MVP.

Context: Hi Joe, some quick context: I would like for the team to build a dashboard that provides a brief overview of the system – I want this to show the variety of features for sales calls and to be useful for current clients.

Outcome: My desired end state is I get a demo-able dashboard on our test instance within the next four months. It should have 70% of the functionality shown in the mockups.

Strategy: I think the rough path to getting there is for you and Jane to meet and work out which features are doable in the next four months while balancing client requests. Then you can create tickets for the segments and decide how flexible the dashboard could be. Let’s get together for a review and approval meeting when that’s done. After that, we can start handing out the tickets to the team.

Example 2

Intention: I want to get James to switch the DNS servers for a client.

Context: Hey James, for some context, Martin asked me to help him with their new mail server. They’re going to be setting this up on their side with Office365. I’m not sure what is required 100%, though.

Outcome: I would like to send Martin an email with the steps he needs to take to prepare for the switchover and the dates when we plan on doing it. If we have any questions for him, I’d like to include those in the email by the end of the day tomorrow.

Strategy: My strategy here is that I will follow your advice and guidance to the letter because I’m not the expert.

Recap

If you are talking to someone at work, they might not actually be paying attention. Having a communications framework with key phrases and trigger words can make a huge impact on changing the mindset of the sender and the receiver. When both parties know that information is going to be transmitted in a certain way, retention and accuracy rates are way higher.

At Sourcetoad, we use the trigger words and key phrases below to help change our thinking, speaking, and listening modes:

  • Intent
    • “My intention is…”
    • “What I’m looking to do is…”
    • “What I want is…”
  • Context
    • “For some context…”
    • “A little background…”
  • Sketch of my desired outcome
    • “The outcome I’m looking for is…”
    • “When this is all done, I’d like to see…”
  • Sketch of a strategy to get there
    • “I think a rough path to get here is…”
    • “The strategy I imagine is…”

That’s it! It’s a very simple yet powerful tool to help improve communication. You can alter this plan or invent your own, but the key is that both parties know the rules. The idea that people can switch between a conversation and “communication” is life-changing – but it requires training on both sides.