Many of my clients and non-technical friends ask me to explain the typical jargon thrown around the web development industry. When starting to look for people to develop your technical project it is a good idea to familiarize yourself with the terms as they will refer directly to industry titles of the people you will look to hire: ex: front-end developer, full-stack developer, back-end developer. These terms are not that hard to understand, so let’s jump in…
A web application (web app or website) or a mobile device application (mobile app) is composed of three main parts: front-end, back-end and database. The front-end part of any application is what displays the information to the viewer and runs on the client (browser or mobile device). The back-end processes information and runs on a server that is remote from the user’s device. The database is also located remotely and stores all the data necessary for the application to run (user logins, user information, etc.).
Why can’t an application be fully contained on the user’s device, like a phone or a tablet? It can, but with limited functionality. The reason the processing of such information has been set aside for the server rather than left for the device itself is two fold: storage and speed. One, a lot of the time the device does not host enough processing power to compute the information as it is developed to specialize in other types of processing specific to the device. Two, the device would have to store all the data contained within the application, which in most cases is a tremendous amount and plain unnecessary.
Consider the ability for users to log into their account on their respective devices. If there was no common server for each user to query for the purpose of verifying their username and password, each device would have to have it’s own storage located straight on the device itself. Each time a user creates an account, provided that other devices need to have knowledge of this user (for example for sake of communication), each device would have to be updated. Can you imagine not only how much data would have to be stored on your device, but also how many updates per day, nay per second, would be happening on your device. The device would be rendered unusable.
In my previous example I specifically did not include the browser as a possible application without a server. This example is even less probable. You can have a web application that runs only on your local computer, and many developers do while they are developing a site, however it will not be accessible to anyone else. If there is no means of accessing your website by anyone else but you, there will be no point to build your application as a site. You can serve the site from your own computer and open it up for access to the world, but in this case your own computer becomes the remote host; server.
The database is a simple repository for your data. In an example of user logins it stores user names, emails, passwords (hopefully encrypted), and other user data that the application will need to retrieve and use throughout its lifetime. There are many configurations for databases. A common ideology in databases is the idea of relational databases. Relational databases organize data into tables with columns and rows, each row having a unique key. Rows in one table can be link to rows in another table. For example, we can store usernames, passwords and emails in one table called “Members” and more details about each user like address, occupation, user’s website address in another table called “Member_Details” associating the records by a common row ID.
Databases can be stored on the same server as the server/back-end component of your application, however, this practice is not secure and should not be used beyond a simple proof-of-concept for your idea. Read more in Basic Server Security Concepts
Application architectures get much more complicated starting with this simple concept. We can have load balanced servers which are employed to distribute a the load between them, CDN networks which work to serve pages faster depending on the user’s geographical locations, caching layers between all three front-end, back-end, database, CMS systems, firewalls and many many more. For the sake of simplicity, we won’t go into these as they are all very specific to particular type of projects and would be better addressed as the need comes.
After our discussion, you can see that in order to build a web app you will need someone that knows the front-end code, the back-end code and various things in the dev opps world that pertain to setting up the web app on the server. Developers that specialize on either side of the aisle are Front-End Developers or Back-End Developers. However, developers that can build the entire web app from start to finish (minus the graphical design which will be created by a graphical designer and handed to the developer in photoshop, illustrator or sketch files) will be called Full-Stack Developers or even Web Developers.
For mobile development this distinction is a bit different.
Android Developers – specialize in Android development
iOS Developers – specialized in either Swift, Objective-C or other.
Mobile Developers – potentially specialized in both
Now, for most mobile apps you will also need the backend API as discussed above, so make sure that your mobile developer can get that done as well or find a Back-End Developer that can.
In either case, depending on the project you’d like to bring to fruition you will have to make sure that your developer or developers can complete it fully and that you’re not wasting your time looking for or talking to the wrong people.
Good luck and I welcome your comments and questions!