A Technical Primer for Nontechnical Founders
You don’t have to know how to code to run a tech company. Being a non-technical founder can work to your advantage in some ways, but you need to know enough to understand what’s going on.
The best non-technical founders make sure they know enough to be dangerous. The goal of this post is to give you a solid understanding of the language of tech products. By knowing the language you can communicate better with your team. And you can have a better understanding of how your product will work.
These are all high level concepts at the moment. If you want us to dive deeper into anything leave a comment at the end. These concepts are very dry. Consider bookmarking this page and using it as a reference.
Kicking it off with the biggest buzzword of 2016. “The Cloud” is just a series of servers connected to the internet.
Note: try to limit your use of the phrase “the cloud” around developers. Once or twice a year is ideal.
A server is a computer set up to serve files or data. Servers are almost always connected to the internet. Anytime you access a website you are making a request to a server over the internet.
Servers have become cheaper and easier to set up remotely in recent years thanks to tools like AWS. This has lead to the rise of “the cloud.”
Bonus: AWS stands for Amazon Web Services. Tools like AWS, Google Cloud Platform and Microsoft Azure make it possible to setup a server in minutes from your computer. In the past developers had to physically install and setup servers at data centers.
A database stores all your application’s data. A SQL database is like a series of excel spreadsheets. Each table in the database would be one sheet. A NoSQL database such as MongoDB is more like a Word Document. This makes it more flexible, but can make managing relationships between data more challenging.
Back end / Front end
Every app consists of some sort of front end and back end. In a car, the back end would be the engine and the front end would be the dashboard (or the gas pedals). The dashboard takes user input and translates it to the engine to move the car forward. In an app the back end takes user input and stores and retrieves data from the database.
Back end development focuses more on data, algorithms and performance. Front end development blends in more aspects of design.
API stands for Application Programming Interface. An API is how the back end and the front end communicate. It’s important to have standards for how you structure your API so that developers across your team know what to expect.
UI stands for User Interface. UI design focuses on how your application looks. This means focusing on typography, style, colors, animations. Is there enough padding between elements? Is there a visual balance? UI design is about making your app look beautiful and engaging.
UX stands for user experience. UX design focuses on how easy a product is to use and how it makes the user feel. Is the information laid out in a way that makes sense? Does the product react to a user’s input the way they expect it to? Is it helping them to solve their problem or getting in their way? UX design can also encompass copywriting, customer support, automatic emails and much more.
Note: This is a simplification, for more on the subtleties of this subject check out this article.
A web app is an application that’s hosted on the web rather than downloaded on your phone or computer.
A native app is a mobile app that’s written in the native programming language of the device. On iOS this is Objective-C or Swift. On Android this is Java. Native apps have advantages in performance. Each native platform has different paradigms and common elements. Taking the time to customize your app for the platform it’s on is important for creating a cohesive experience.
A hybrid app is a mobile app built using web technologies and then compiled into two mobile apps. Hybrid apps have the advantage of only having one code base. This means they take less time to develop and are easier to maintain, but there is a compromise on quality.
Writing code is like writing a recipe for a cake. The computer will follow every instruction exactly. So one mistake in the recipe and your cake isn’t going to look much like that Buzzfeed article you read.
Programming languages define the rules for how you can write your recipe. Like spoken languages, programming languages each have their own syntax. Different languages are built around different philosophies, and have different advantages. Additionally, some devices or applications only support certain programming languages.
The fundamentals of most programming languages are the same even if the syntax is different. Good developers should be able to pick up new languages, and most know at least a few. Meaning you should hire for overall skill not a particular language. But be prepared to give a developer learning a new language time to adjust.
Programming frameworks are like a toolbox for programmers. If you had to build a hammer every time you started to build a house you wouldn’t be very efficient. Programming frameworks give programmers tools so they don’t have to reinvent the wheel. Different frameworks come packaged with different tools based on different philosophies.
Open Source Code
The sharing of knowledge is one of the greatest things about software development. Often when a developer builds a new tool they will share it with the world by opening up the source code. This leads to an acceleration of learning and makes the entire industry stronger.
If you’re selling a technical product, open source code can also be a form of marketing or recruiting.
Version control is a way of storing updates made to a code base. It is also used to merge changes made by separate developers. Version control makes it easy to revert your application to an earlier version if a bug is introduced.
If you’ve ever used change tracking in Microsoft Word version control is similar. It tracks changes to your code so that team members can work on the same code. If they make changes that conflict they can resolve them rather than overwriting the other person’s changes.
The most common version control system is git and the most common git application is Github. In git a code base is a repository. Updates to a repository are commits. There are lots more terms specific to git, but those are the basics.
Note: Your app needs to be on version control.
Dev Ops stands for development operations. It refers to the process of developing and deploying changes to software. Having a solid DevOps process in place is important for quickly and safely deploying updates to your application. DevOps operations can range from simple and very manual to complex and completely automated.
Comment below with any questions you have or terms you’d like to see added to the list. I’d love for this to keep evolving as a reference guide.
This post originally appeared on Start in the South, the blog about building profitable companies outside of the usual hubs.