When I look back on my experience of learning to code, one thing that surprises me is just how long it took me to understand fundamental concepts about the web, and web apps. Specifically, what is meant by the terms ‘website’, ‘app’, ‘web app’, ‘mobile app’, and ‘native app’. For a long time I thought some of these could be used interchangeably, in particular I was very confused about the difference between a website and a web app!
While I’m not a huge fan of tutorials, I think some concepts need some explaining to help learners move in the right direction. Once I’d understood the following definitions, I felt much less ‘foggy’ about web development in general and more confident to try building things.
Website
A collection of web pages and other resources (e.g. photos, videos) hosted on a server and accessible via a domain. You are currently browsing my website!
Web pages are composed in HTML, and styled using CSS. JavaScript can be used to give functionality.
Websites are primarily used for distributing information to users but you can do a lot with static websites, including embedding forms, displaying interactive maps and lots of other useful things.
Web App
A web application (web app) is also hosted on a server, and accessible via a domain. However, in addition to the basic website a web app will provide some functionality to a user, which can involve storing and retrieving data from the server. There is code running on the server to provide the logic that underpins the functionality.
Examples of web apps include Google Map, Twitter and Facebook when accessed through the browser.
All content viewed on a browser is composed in HTML and styled with CSS, the content a user sees in a web app is shaped by their interactions with the application.
Mobile App
Similar to a web app, a mobile application provides some useful features and functionality to a user - but the application has been specifically designed to be used on a mobile device.
Mobile apps might be accessed through the browser, or installed as a standalone application.
There might be some interaction with code running on a server, but a downloaded app might run only on the mobile device.
Native App
Native apps also provide features and functionality to users, but they have been built to run on a specific operating system.
Some products have lots of different native applications, to run on different operating systems. For example, there are Google Maps apps for Apple iOS and Android devices.
Why is this useful? Well, if you know that initially you only want to build static sites, then you don’t need to learn Ruby or Python! HTML, CSS and maybe a bit of JavaScript will be enough to build a working website. If, however, you want to build an application that stores data, or a game, then you’ll need to start learning programming basics.
Having an idea of the different types of application helps to filter through the wealth of resources available for learning to code. If you’re not interested in building static sites, then maybe you don’t need to worry about learning CSS.
And, it starts to help you build a picture of how the internet works. The internet is a highly complex system, and the web is only a part of the internet!