In today’s age of rapid technical evolution there is a never-ending abundance of code, “Solved” problems, and hacks. With this in mind, can novel code be written without it already existing? Today most technologists don’t focus on writing novel code from scratch, but rather finding a novel string of existing solutions. Maybe this sounds like common sense but if that is the case then why do so many businesses waste resources rewriting, resolving, and recoding things from scratch?
If your business is software, the answer is control, flexibility, and maintaining intellectual property. Most organizations are not software companies and yet they still find themselves wasting resources recreating unnecessary code. Organizations often face the same problem, an undefined process on when to code from scratch, when to incorporate existing code, and when to integrate someone else’s code. For clarification, this decision process is happening in every organization with or without a central process. Many organizations find these decisions happening in distributed and isolated ways that may or may not align to business’s goals.
- If your engineering organization is good they will seek the ideal technical solution to a problem, if your engineering organization is great they will use the business objectives to scale the ideal solution back to a zenith point. This process is a tool to help align business with technical solutions to create optimal solutions for your organization.
- Avoid the misconception that other areas of the organization do not have to do this process. Every time some form of business logic needs to be written, whether it's in excel, a new sales CRM, an accounting system, or a new customer facing application.
- It is not a one and done process, past decisions need to be re-evaluated from time to time as both your business and the technology ecosystem evolve.
Each engineering team is unique, the problems each team faces are unique, and the technical knowledge of the teams are unique. What should not be unique is the process for evaluating how to implement the solution. To simplify this process we will discuss a decision tree ultimately leading to three choices, do we rent, do we buy, or do we build the solution?
To expand we will use the housing analogy. Everyone in their lifetime has asked themselves do I want to rent, buy, or build where I live.
Rent? In the technical solutions space this is most commonly a software as a services solution or SaaS. Renting a piece of software is much like renting your living area:
- There is a finite number of rental options that exist.
- Rentals are the most restrictive option for housing in that there is a finante number of rentals that exist and you typically cannot do modifications to the structure, architecture, or sometimes even paint.
- Rental properties are constrained to previous rental market demand so which may or may not be relevant to today’s rental demand.
- Overall maintenance such as lawn care and snow removal are covered in most rental agreements.
- Renters insurance is recommended but not typically required.
Buy? From a technical perspective this is often licensed distributions of existing software. Buying a piece of software is much like buying an existing house, condo, or structure in that:
- There is a larger pool of options in the buy market than the rental market.
- The housing market is often constrained to what someone’s specific needs were at the time of it being built and therefore may need some work or upgrades to adapt to current needs. This means that many buy decisions are purchased and renovated in order for the existing structure to become what you need or want it to be.
- If something breaks in a home you buy, you are on the hook to fix it yourself. In some cases such as condos some things will be covered but you will have to pay an additional monthly association fee.
- Maintenance is also your responsibility. It is up to you to tend to yardwork.
- Insurance is often required if you have a mortgage.
Build? This is where you really want to start fresh because you want everything to be created the way you want it.
- You hire an architect or you go to school to become an architect yourself.
- You hire a developer or buy all of the materials yourself to build on your own.
- You pay people to build it or you decide to build everything yourself.
- You may be able to opt out of insurance if you pay for everything yourself.
Where to start?
Start by ensuring the core business goals and competitive advantages are documented. You can run through a decision tree to break up different areas of your business. An example decision tree is listed below.
We've got a lot more to say on this subject. To that end, we're launching a new podcast, Rent / Buy / Build. Every few weeks, we'll tackle another component in the Cloud-Native platform stack and answer the tough question: should you rent this, buy it, or build it yourself.