Software Development
Software development is the broadest of these terms and it encompasses anything that involves writing code. Software is simply any set of instructions that runs on hardware. We can think of hardware as any device that is used for any kind of computing.
Examples of software: Microsoft word, a mobile game, a browser, an operating system, the 'cd' or 'dir' command you execute from a shell, the kernel of a unix machine, a script you wrote that prints "hello world" to the terminal
Examples of hardware: A desktop computer, a phone, a raspberry pi, an electronic traffic sign on the highway, a calculator, a router, a modem, an electronic coffee maker, a dishwasher, a smart tv
This means software development could entail anything from writing code that runs on a coffee maker to building a website to working on an operating system.
Web Development
Web development is narrow subset of software development. It involves building software that is served by or that runs on a server accessible via the internet. A server is simply a computer that is listening for requests from other computers (viz. a computer that serves requests).
Examples of software served by a server: html, css, javascript, a portfolio site, a react app, a game that runs in your browser, a text editor that runs in your browser, the frontend of facebook which runs in your browser, any website.
Examples of software that runs on servers: ruby, python, java, node, a ruby on rails application, an HTTP api, facebook, dropbox, nginx
Frontend development involves writing software that is served by a server (e.g. in html, css, javascript).
Backend development involves writing software that runs on a server. This can be done in any language but is most commonly done in languages like node, java, python, php, ruby, and C#.
Because doing backend development from scratch would involve solving a bunch of problems that have already been solved, almost all backend development is done with the help of a framework or library. E.g. Ruby on Rails (ruby), ASP.net (c#), Django (python), flask (python), Laravel (php), Spring (java), express (node), etc.
Mobile Development
Mobile development involves writing software for phones (typically Android or iOS devices). Most of the mobile apps we use communicate with web servers, though some simple apps do not.
Mobile apps that communicate with servers: twitter, facebook, the New York Times app, spotify, candy crush (for payments), google maps, Venmo
Mobile apps that don’t communicate with a server: The default ’camera’ app on iOS, the default timer app, a calculator app, a dictionary app, any app that works identically whether airplane mode is on or off, a simple mobile game that has no social component, in app purchases, or advertisements.
Because most mobile apps communicate with servers, building a mobile app often involves doing backend development (web development) and mobile development together. On a team, the backend development and mobile development for the same app can be handled by separate people or groups.
Mobile development is typically done in java or kotlin for Android and objective-c or swift for iOS.
There are also frameworks that can be used to develop a single mobile app that runs on both android and iOS like react native (which uses javascript) and flutter (which uses dart).
Still confused? Feel free to ask questions in the comments below
Top comments (1)
dev.to/thepracticaldev/welcome-thr...