Today, there are many different types of software development, with new specialties arising every few years. Roles and titles are assigned differently throughout the industry, with no authoritative system for classification. Rather, each aspect of programming overlaps, and new specialties arise every few years.
This article aims to be a comprehensive list of each type of computer programming and provide a birds-eye view of the entire industry.
There is some overlap and differing use of the above terms, but they are generally ordered left to right by experience and degrees of proficiency.
A coder is typically the least experienced of the bunch and includes anyone who can write code that compiles and run. On the other hand, programmers are generally more experienced and commonly fluent in multiple languages.
Likewise, programmer and developer can be used interchangeably, but developers tend to be more experienced of the two. The term developer is sometimes used to describe one overseeing the overall development of an application. On the other hand, a programmer may perform tasks that don’t involve building applications.
Software engineers are the most experienced programmers and can oversee the development of entire systems understanding and working with them at both high and low levels, deciding what parts it will be composed of.
Then again, two firms might hire for the same role, the only difference being the title. One is listed as a Software developer, and the other as Software Engineer.
Software Architects tend to be the most experienced developers who know enough about everything to oversee entire projects.
Low-level development involves communicating directly with a computer’s architecture. At their fundamental level, computers are made from billions of transistors. These transistors act as a switch: on or off, one or zero. Each computer is designed to understand its own particular machine language, made of ones and zeros. Development requiring instructions to hardware at the processor level is low-level programming, including embedded systems, drivers, kernels, and system libraries.
Programming a computer system entirely in binary is a lot of work. After a while, developers built assemblers programmed to recognize short-hand and perform pre-programmed binary instructions. Assemblers are made specifically for each computing architecture, and the shorthand they are made to recognize is called an assembly language.
High-level development involves languages like C, Java, and Python for end-user applications and many other purposes. These languages provide another layer of abstraction from machine code, using natural language elements and designed to be much more user-friendly than assembly languages. They work on any computer architecture and are translated to binary before execution.
Systems developers deploy custom solutions connecting various aspects of an organization, namely, back-end processing systems. This job can include choosing appropriate pre-built software and writing code to extend its functionality.
Network Developers, Engineers, and Architects design and deploy information networks, including local area networks (LAN), wide area networks (WAN), intranets, and other networks, enabling communication between different aspects of an organization also being responsible for network security.
Desktop applications development involves building applications to run by end-users on a desktop environment such as Windows, Mac, or Linux. Desktop application development used to be one the most prominent forms of development, but it has made way for increasingly popular web applications. Today desktop applications make up the backdrop of our lives, and web development has come to the forefront.
Web development involves creating software that websites run upon, and web design is concerned with the user experience.
Often the same person is responsible for developing, designing, and building a website. However, depending upon the scale of operation, there is now any number of specializations within the field of web development.
Front-end development is responsible for visual user interfaces run on a web browser and requires a similar skill set as web design but requires a stronger proficiency in development.
The bulk of a website runs on that site’s internal servers, with the front-end user interface calling to a back-end infrastructure for the site’s operation. This enables greater speed and security than running code in a client-side browser.
Back-end developers integrate with databases, other data storage, e-mail, and other underlying systems running remotely from the end user.
In three-tiered database architecture, middle-tier development involves non-UI code that connects an application server with a database server. Middle-tier development might be considered the plumbing of a system and is more of a skill set than a job title.
Some full-stack developers work on every aspect of web development, front, back, and middle. They have the skills to develop a fully functional web application from the bottom up.
WordPress is an open-source website publishing platform, the most widely used platform for building websites, used by as many as 45 million websites. WordPress developers create and customize themes and plugins and administrate WordPress websites.
Python frameworks such as Django are now growing in popularity for web development. WordPress is still the most popular tool for web development by far. However, Python is rapidly growing in popularity, so we can expect the use of python frameworks for web development also to gain dominance over the coming years.
Mobile development involves creating applications on mobile devices such as smartphones and tablets. Mobile developers include iOS and android developers and often include some web development as browser apps are inherently cross-platform.
Data science includes AI, machine learning, and related fields. A data scientist creates algorithms that learn based on experience.
Data analysts perform a significant portion of the work, gathering, cleaning, and preparing data.
Machine learning engineers build pipelines connecting data from where it originates to the analysts and then to the data scientists.
Open-source libraries are increasingly making the rise of data science accessible to all developers.
Graphics development requires intimate knowledge of the GPU. It used to be a type of low-level development, but today several software libraries have made it accessible to high-level developers.
Modern video games are built by massive operations involving many different moving parts. Game producers, publishers, programmers, designers, artists, audio engineers, and graphics developers are a few positions a game development team can be composed of.
Game development may also call upon other programming disciplines such as AI, VR\AR, blockchain, and web development.
VR development is responsible for creating immersive virtual experiences for apps and games and has much potential for education.
AR programmers create a layer of virtual objects and information over top of the real world, most commonly accessed via mobile devices.
Today, both AR and VR development extend largely from mobile app development.
Embedded Systems Engineering involves development with hardware possessing software allowing it to operate independently of a traditional computing system. These developers make the most of the minimal computing resources of chips embedded in appliances, household devices (IoT), microcontrollers, electronic interfaces, and hardware drivers.
Cloud platforms manage the services required to build and run applications. This frees organizations and developers from maintaining infrastructure to focus on deploying business solutions. These applications and their infrastructure are instantly scalable and accessible worldwide.
Depending upon the organization’s size, development roles may be split between the cloud architect, software, and systems engineers. Cloud development requires familiarity with cloud fundamentals, Hypervisor and Virtualization techniques, and networking skills.
Blockchain development is a rapidly growing field that has arisen in the wake of Bitcoin’s novel method for distributed consensus.
On the one hand, some developers work on core blockchain protocols of public chains such as Bitcoin, Ethereum, Dash, and others. Smart Contracts involve programmatic agreements, automatically executed depending upon the results of pre-determined parameters.
On the other hand, the Enterprise commonly seeks to re-create some of the benefits of blockchain, in a permissioned environment, for the public and private sectors.
These developers create software to validate the quality of software systems. They develop automated tests, tools, and systems to ensure products and processes run as expected.
Security software developers create tools, methods, and procedures for testing the security of a software system. These developers must understand, in detail, the many patterns used to attack software systems. Advanced security developers must read and understand operating system source code, reverse-engineer libraries, and commercial software systems to discover, exploit, and fix vulnerabilities.
These engineers create, deploy, integrate, and administrate back-end software for managing storage and workload across multiple computing systems.
Every type of development tends to find a place in the enterprise. New technologies threaten the disruption of traditional business models, and organizations of every size seek to leverage the advance of technology to their benefit.
Enterprise applications developers build custom applications for use throughout enterprise infrastructure, including automated billing, accounting, e-mail marketing, payments, content management, etc.
Depending upon the size and nature of an enterprise, it may possess any number of programming roles, including Database Administration, Business Intelligence, and Customer Relationship Management (CRM).
How many types of software development are there
?! Yes. that is true. I’ll keep brainstorming about any I may have left out and continue researching and adding the info here as time passes. Be sure to let me know in the comments of any areas of development that I’ve left out, corrections, or clarification.
You may have noticed that we skipped a week compared with our regular bi-weekly posting schedule. We’re working hard, behind the scenes, on some exciting upgrades to this blog. Over the coming months, we’ll be renovating to improve existing content and continue to create in-depth, comprehensive content with a renewed focus. We will greatly appreciate any input, insight, and thoughts you have about our content and anything you’d like to see featured in our blog. -infominer