Technology Cheatsheet for Entrepreneurs
Today I want to talk about technology stacks for non techies. I got recently approached by a friend, who wants to create an app. Having a business background he doesn’t know much about the technology behind an app.
I think this subject is relevant for many folks out there: everybody and his mom wants to create an app today. But not everybody is a hacker. And I don’t think, that this should be any problem. Still it might be helpful to know some basics about the technology, which is used to build your startup.
Objectives
So what’s the point of this blogpost? I’m not trying to teach you how to code! I’m also not trying to tell you, which exact technology stack you should use.
I try to explain some basic concepts and components of modern technology stacks. I will also try to clarify some of the most important terminology, which you will often hear.
In the end you should take the following from this reading:
- some tech vocabulary
- which components does your tech stack need
- basic understanding of how everything works together
- Which languages & frameworks are often used
- some strategies you should follow as a startup
- and how you can manage development
If you have any specific questions just let me know in a comment!
One important note
When it comes to the choice technology taste plays a big role. You all know this iOS vs Android, Mac vs PC, Mercdes vs BMW .. … debates.
Just like that we can start PHP vs Python debate. Just browse some threads on Quora or google it.
I don’t want to take part in such a debate. And you shouldn’t either! Most things just come down to taste.
One more thing which I have to note before we dive in: I advocate a pragmatic approach to tech and development. The most important thing for a startup is to get results asap. Thus I recommend you to make use of frameworks , SDKs and other time-savers as extensive as possibel. I know that many people disagree with that approach. And in many cases a “fundamentalist” approach might be right. But for a startup speed matters most in my opinion. After you got your market validation you can always improve your technology. But in the beginning you should avoid any kind of “developer fundamentalism”!
That being said, let’s start!
The typical technology stack
If you want to build an app and ask some developer what you need, the answer might be quite confusing. You will hear terms like Backend, Frontend, Node and many more. So let’s clarify this a bit.
When I got in touch with web development for the first time this was a bit different. So let’s make a quick time travel to, let’s say 2006.
It was so easy…
Back then things were pretty clear. There were no mobile applications. The only thing you had: A Website, which you could access with your browser.
This Website was developed as follows:
- It was hosted on a Server, which can be accessed via an URL in the Browser.
- The Layout was written in HTML. HTML is a Language used to create Websites. It cannot do anything except displaying stuff, like text or images. It’s really simple e.g. for a headline you would write <h1> headline </h1>
- To give the Website a better look we would style it with CSS. CSS sheets are nothing more than a list with design properties. For example we could make the headline yellow: h1{color: yellow}
- To make the site interactive we would use PHP. For example if we had a contact form. We can use HTML to display the contact form but we have to send the email with PHP. I will speak a bit more about PHP in a second.
- Maybe we want to give out Website some more spice. So we would use JavaScript. With JavaScript we could for example create some effects or validate a form on the Website.
- The Database: The database is like a table, where we can store data. For example we can have a user’s table. In the user table we store the name, the email and password of a user. The database of choice was MySQL.
Web Startup Technology Stack , PHP MysQL
So that’s how things looked back in 2006. Pretty easy, hah? But things have changed dramatically since then. Most important: Mobile devices started eating the world. And technology has evolved much further. Today we do many things in the Browser or on a Smartphone, which we would have done with traditional Software on PC 10 years ago. As a result the technology which powers the Web today became fairly more complicated.
So let’s take a look at how a typical tech stack looks today.
How things look today.
Let’s get started with an example and see how we use Facebook today:
- First of all, to you Facebook we need to sign-up. All our data will be linked to account.
- We can Access our data from mobile Applications or with a Browser.
- Let’s use a mobile Application. We can use this Application to SignIn and then we can do whatever we can do with the Browser. We can post a Status or upload Photos etc. It doesn’t matter, if we use the mobile App or the Browser Application. We will always access the same data.
- We can use the messenger app to chat with friends.
- And of course we can access Facebook from the Browser. And it does just what the mobile Apps do.
Feature Requirements
So let’s see, what each of the above components requires from our technology stack. That way you can later see if you have similar features. Then you have an idea, what you technology you will require.
1) The Backend
So as we saw, we want to access our data by signing-in up from different devices.
That means, we need one central place to store all this data. This place is called the Backend.
The Backend is a Server with some databases. It stores data and “serves” them to different Clients. A Client might be mobile App or a Website.
Back in 2006 the Backend and the Website where pretty much one thing. Today we need to enable communication between different devices and the Backend. That’s why the backend provides a REST API. An API (Application Programming Interface) is an Endpoint, which other Apps can talk to.
For example: If you want to SignUp from an App. The App would send a Request to the Server, which contains your name and email-address. The Server would store the data in the Database and Answer to the device, when everything went ok. The App can then log you in.
If the App wants to show your wall, it will ask the server for current posts. The Server will reply with a Collection of posts.
Some buzzwords on APIs
- The protocol normally used for this is HTTP. It’s kind of a language, which different Clients and Servers speak in common.
- Servers and Clients send each others normally JSON-Object. You can imagine a JSON as a List with items. For example it might be a list with all data of an account.
- In most cases all communication works that way. Also if the communication seems to be between two mobile Apps. However there are some restrictions to note. I will talk a bit about them when we come to the messenger.
Indicators that you need a Backend
- Users can access data from multiple devices or the Browser
- Users can sign-up
- Users can share content
What you will need to build a Backend
First of all you need a Server with a database. In most cases this will be a SQL based database. SQL databases used to have a monopoly for the last decade and are still a great choice for most cases. In recent years NoSQL( Not Only SQL) databases gain popularity. The choice here is very technical. And you shouldn’t bother with it. Just note, that you will have a database.
Besides the Database you will need Backend Software. It handles the data and provides the API.
There are plenty of languages and frameworks, which you can use to build this backend. And in fact we can have endless discussions about which one is best. Like I mentioned before, this comes close to religion. The truth is in most cases, for you as a startup it doesn’t matter. Just take whatever you will find the best people for. Or what your people like most.
One thing to consider though. I recommend you to insist on the use of frameworks. A framework is like a Blueprint for an Application in specific language. Some fundamentalist reject the use of frameworks. But again for a startup they are most important. The use of a framework brings the following advantages:
- Security: Frameworks are designed by a large Community. The implement best practices and prevent common mistakes.
- Speed. Speed. Speed. A framework takes many common task from you and saves you an enormous amount of time. You can build a blog in 30 minutes. And I mean that’s most important for a startup, right?
So let me quickly introduce the most common languages / frameworks for backend development. Others might be possible. But unless you have something very special, I recommend you going with one of these.
PHP
- Used to be the predominant language for the last decade
- Huge Community
- Most open Source Tools like WordPress, Drupal etc.
- Laravel 5, Symfony 2
Python
- An other ther great option
- Data Mining, Machine Learning, Image Processing
- Django, Flask
Ruby
- Gained extreme popularity in the last years
- Engaged Community
- Ruby on Rails
Node.js
- Revolution: JavaScript in the Backend
- Great for RealTime Stuff
- Same Language as in Frontend
- Trello
You see: All these languages are able to power large platforms. So it’s really a matter of taste.
Frontend
So let’s continue with the more visible part: The Frontend.
The Frontend is basically the Website. You can access it in the Browser. Back in 2006 it was tight to the Backend. But things have changed since then.
- With the rise of mobile Apps we need to provide an API. Thus it makes sense to design the Browser Frontend just like a mobile App within the Browser. It uses the same API.
- Today JavaScript has an incredible role for WebApps.
But let’s keep it simple: The Frontend is just the Website which you access in the Browser.
Some Buzzwords on the Frontend
- JavaScript MVC Framework. Just like for the Backend we use frameworks in the Frontend. They are based on JavaScript. The Frontend is making calls to the Backend. So it sends and receives Data.
- Bootstrap. Bootstrap is a CSS framework. It was developed by Twitter. The goal is to make styling of the Website easy and efficient.
Can I concept my Application the old way?
If you wonder, whether you can’t just do it like in 2006 the answer is simple: Yes you can! If you don’t plan to develop a mobile App this is totally fine! If you know already, that you want a mobile App it doesn’t make much sense, though. Also note that there might be a difference in User Experience. These modern frameworks are designed as Single Page Apps. This means, that you don’t load a new Site when the user presses a button. Instead you just change the data shown. Thus it feels much more like a real Application and not a Website.
Technology to build your Frontend
Just like for everything you have plenty of choices here. And there is no right or wrong. Two things are sure:
- You will use JavaScript
- You will build the Layout with HTML and style it with CSS
The choice remaining is about the Framework to use. Some commonly used are:
AngularJS
- Great and powerful JavaScript Framework
- Developed by Google
- Used by many Sites
React
- Another JavaScript Framework
- Developed by Facebook
Bootstrap
- CSS Framework
- Developed by Twitter
- pretty much the standard
Of course this list could be endless. But these are some of the most common choices.
Mobile App
So continue with the mobile Apps. I think we don’t have to explain, what the App is, let’s just talk about tech.
There are different Operating Systems out there. The most common are iOS, Android and Windows Mobile.
Some thought about mobile OS
Android and iOS are by far the most popular, so I guess as a Startup it’s ok to disregard the others in the beginning. In fact I guess it’s also fine to start with only one of these two. What you might consider here: Android has a much larger user base than iOS. On the other hand iOS has a much more engaged user base. So let’s make your own mind, which platform is most important for you.
You might wonder, if you can develop one App for all platforms. The answer is Yes and (rather) No.
The thing is you have three possibilities to approach the development:
1) Native Apps ( The real deal?)
The most common approach is to build a native App. A native App is built with the framework provided by the distinct plattform. It’s like “real” Software build for the mobile operating System. Most Apps, which you use are probably native Apps.
Native Apps have some big advantages:
- Native Apps have by far the best performance.
- Native UI elements: Native Apps are built with frameworks provide by the operating System. Thus they can also use native UI elements, like buttons etc. This just gives it this certain look & feel..
- Features: Native Apps are built close to the Hardware. Thus you can really make use of everything your phone can do.
These are some big advantages to consider. Of course there are also some downsides:
- You need to built the App from scratch for every platform. Seriously it’s double the work!
- The technology used here is pretty different from web development. So don’t assume to find a web developer who is also a skilled mobile Developer.
Native iOS Apps
- Develop with XCode. XCode is a IDE (Integrated Development Environment) provided by Apple.
- Written in Objective-C or Swift.
- Similar Frameworks as Mac OS. Thus you can more or less adjust your iOS App to be used on a Mac, too.
- You need to participate in the Apple Developer Program. This costs 99$ and allows you to develop and Publish Apps.
Native Android Apps
- Written in Java
- Free to develop
- Publishing costs 20 $
2) Hybrid Native Frameworks
An alternative to native Apps are Hybrid Native Frameworks. These frameworks allow you to create an App with Web Technology. So you built the UI and everything with HTML, CSS and JavaScript. The framework then makes an App for the distinct platforms out of it.
There are a couple of these frameworks out there. Two popular are:
The advantage of these frameworks is, that you only have to develop the App once. This saves you time and resources. Especially because you can use the same knowledge as for the Web.
Personally I’m not a big fan of this approach. The User Experience is just not the same in my opinion. And I think that the User Experience is one of the most important features of your product.
But that’s my personal opinion. For example Wunderlist started using these technologies. And Wunderlist is a wonderful example of User Experience. But they also stepped back.
So look at some Apps using these Frameworks.
Then u can make up your own mind on this question.
3) Mobile Website
A third approach is to create simply a Website, which is optimized for mobile screen Sizes. If you don’t need to provide much functionality or the App is just a little addon to you plattform, this might also be ok.
The Messenger
The Messenger in the Facebook example is a feature, not a part of the technology stack. But I want to take it as an example for some restrictions.
Basically the messenger does the following:
- You send messages
- You receive messages
This functionality can easily developed with the tech described above:
- You have a App, which talks to a Server
- The Server stores the messages in a Database
- Another User’s app asks the Server, if there are any messages.
- And the Server tells the App, which messages are in the database.
Pretty simple, right? But the Facebook messenger is definitely not build like that. When you send a message the other user will receive it immediately. In fact you even see, when someone is typing or received the message. That’s a good example, on how simple things get more complicated. I’m not sure how the messenger is exactly built. But changes are that they use:
- WebSockets for Real Time communication between Clients
- NoSQL and Key-Value Storage
- Caching
- etc
- etc
I don’t think that you should think about these details right now. But for the completeness of the this article I wanted to tackle the topic for a second.
Conclusion
Yay, we made it through Part one of this series. I hope that you got a basic understanding of the technology it takes to create a Web Startup. In the next (1 or 2) parts we will continue a bit further. I will present some Tools and tactics to get started. That is how to Design and plan an app? Some Tools, which you will frequently use or see. And some thought about hiring engineers.
Hope you enjoy it!
Further Resources
- A great blog series about the different approaches to develop mobile apps.
- Google or check Stackoverflow about how to develop something. Even if you don’t understand the Code you get a feeling of what is possible. If some body has shared a solution, you know that a problem is solvable.
- Read threads on Quora
- On Stackshare you can check the technology of other companies. Here you can find the technology we use
- If you want to get into Web Development, I can highly recommend Laracasts. It is about Laravel in particular. But I recommend it primarily because of the Editor Jeffrey Way, often called PHP’s power feature.
- Skotch.io has a nice name and nice tutorials about Web Development.
- Showcase of Apps built with PhoneGap
- Showcase of Apps built with AngularJS
- Just google Built with <technology> to find out, what is possible with a certain technology.
Originally published at meet.freedactics.com on January 18, 2016.