Think about one of your favorite apps and try to describe it in as much detail as possible. You are probably thinking about if from the user point of view answering the questions:
- What screens do I see?
- What buttons allow me to do things?
- What content is present?
- Etc, Etc.
If you want to build an app, that is half of the picture.
The other half is everything that’s going on under the hood that you don’t see but must get built:
- What language(s) is it written on? What frameworks is it using?
- What services/APIs is it connecting to?
- Where is it hosted?
- What is the database storing? How is it storing it?
- What algorithms are guiding what you see and when you see it?
- What functionality is implemented for performance?
- Etc, etc.
These are the questions that developers and specifically CTOs will need to answer before starting an app build and continue to reevaluate as the app changes and grows. We call this the app architecture.
Let’s look at a classic entrepreneur meets developer scenarios:
— “OMG, you’re a developer? I want to build this app! Can you build it? How much would it cost to build an app?”
— “Emm…well, I personally specialize in the frontend, I have a friend with an AWS consulting firm and a buddy who does more backend/integrations work. If you give me more details, I can probably help you navigate this and figure out your next steps.”
— “Hmm, ok how much will it cost?”
— “I can make the frontend. Do you have specifications for the screens you want? I can create an estimate from that.”
—“ I have these mocks:”
— “Wow! Looks great, I get some of an idea of what you need from that, I could build some of that for around $XYZ.”
— “Great! You’re hired!”
Developers will likely recognize this conversation with painful familiarity. If you are an entrepreneur, however, you may or may not know how much of a disaster these two are headed for. I will make a parallel conversation to illustrate.
Imagine that you dedicate yourself to building furniture, and someone comes up to you with a dream house in mind. They meet you, and the conversation goes like this:
— “OMG, you build furniture? I want a house! Can you build this house I want? How much would it cost?”
— “Emm…well, I personally build furniture but I have a friend with a plumbing installation company and a buddy who does roofs. If you give me more details, I can probably help you navigate this and figure out your next steps.”
— “Hmm, ok how much will it cost?”
— “I can make the furniture; do you have specifications for the furniture you want? I can give an estimate from that.”
— “I want a house like this:”
— “Wow, awesome house! I can kinda see the furniture in there, yeah I could build some of that. My rough estimate at this point would be $XYZ.”
— “Great! You’re hired!”
It is clear these people are not on the same page. At the end of this arrangement, this house is less likely to get built than meatballs are to fall from the sky. If you replace: house with app, furniture with frontend, plumbing with AWS, and roofs with backend this is essentially what the initial conversation between entrepreneur and developer, unfortunately, too often looks like.
The reality is that if you are a developer you probably don’t have all the expertise required to build an entire app by yourself, and if you are an entrepreneur you don’t necessarily have the background to know the difference between hiring a furniture expert or the pool engineer. These two people need a bridge between them to help them communicate clearly. In the case of the house, most of the pieces are plainly visible and we can assume we need a decorator, a contractor, an architect, maybe what we need is a realtor?
If I were to build a house, I would undoubtedly search for a firm and expect my project to be led by an expert, in the app world this expert is the App Architect.
An app architect is a software developer expert who makes high-level design choices and dictates technical standards, including software coding standards, tools, and platforms.
— Wikipedia (https://en.wikipedia.org/wiki/Software_architect)
What does that mean? According to Indeed, an App Architect, also known as a Software Architect, is someone who knows a lot (see a typical job post below) and is priced accordingly (compare to a frontend developer below).
Now, if you are an early-stage entrepreneur you might not be able to craft the right app architecture job post, evaluate the right person, nor afford to poach an experience app architect from their current employer.
If we refer to the house comparison, these job descriptions are encompassing the requirements for not just the furniture expert, but the plumbing, appliances, pool, door, concrete, and land experts as well.
The reality is that the architect will not be the person putting the furniture together, and they are more likely to be an expert in managing, coordinating, and creating requirements for different experts.
This means that the architect is your first hire (CTO, lead developer) from a long list of more specialized folks: frontend, backend, mobile, integrations, devops, and so on. With each of these functions dividing further into developers with specific experience using particular technologies. The architect is someone with enough experience building software to be able to do any of these things, but the real value in an architect is that they can determine what needs to be done in the first place and what’s the best way to do it.
We understand the importance of an architect, the fact that not every developer is an architect, and how expensive they can be. To help early-stage entrepreneurs who might not have done this before, we have put together a product to replace the need for an app architect/CTO at these very early stages of your startup (specifically pre-funding, pre-app, pre-product-market fit).
Having experience building dozens of apps in numerous technologies, we help entrepreneurs answer the following questions:
- What technologies do you need to use? AWS or Google Cloud Services, iOS or Android, Mobile Web or Native, React or Angular, Node or Django, Relational Databases or NoSQL?
- Who needs to be a part of the team? Having a list of combinations of a technology and a function will allow you to be intentional, specific, and informed in hiring. Instead of asking a furniture builder if they can build a house, you will be intentionally looking for mid-century modern furniture boutique that creates custom-made pieces and delivers and assembles furniture for you.
- What outside services do you need to use? Think payments, authentication, social, location services, notifications, and so on.
- What data do you need to store? It’s important to know, not just the fact that you need to store users in your database, but for example, Do you need to record a state for users who have logged in 11 times in one week? Do you need to store the number of logins in the last 7 days? Do you need to record the date of the last login or do you only need to record that the user is currently logged in?
- What algorithms do you need? A typical example is if you are looking at a feed of potatoes and you need to decide in which order these potatoes are going to show up and what factors are going to affect the order of these potatoes. Does everyone see the same feed? Does the time of day affect the feed? Can the user filter the feed? How? Another typical example is interpreting user data to give them an answer to a question they may have. If you input all of your transactions, for example, the algorithm for showing the total spending for a month would have to be designed and built. Even a simple proposition like this one has many considerations. Like, how do you define a month? 30 days? Days since the first? Days in the past month?
A successful app architecture (coupled with design materials) is one that developers can see to as guidance and know exactly what they need to do, task by task. Without such a document, any estimate is equivalent to that furniture designer saying that the house you want is going to be $5M.
- Not everyone (almost no one) whom you meet who can code and build entire products by themselves.
- The people who know how to get products built are called app architects.
- These people are expensive, typically focus on one type of app, and probably -won’t leave their jobs to build your app.
Given our understanding of the problem as laid out in this post, in the past, we have advised entrepreneurs to form a partnership with an app architect who wishes to be their CTO in the future. Requesting help from this person to build an app architecture document in exchange for equity and using that to hire more specialized folks to build the different parts of the app under the supervision of the architect is a pretty fail-proof, relatively affordable strategy.
Ready for the next steps? Check out how we can help.
Not ready, but interested in learning more? Sign up to learn more about what it takes to build great software products.