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 with the other, and new specialties arise every few years.
That being said, 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.?Programmers, on the other hand, 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. A programmer on the other hand may perform any number of 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 different firms might hire for the exact same role, with the only difference being the title. One listed as ?Software developer? and the other as ?Software Engineer.?
There are also Software Architects?who tend to be the most experienced developers that know enough about everything to oversee entire projects.
Low-level development involves communicating directly with a computers 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 specific for each computing architectures, and the shorthand they are made to recognize is called an assembly language.
High level development involves languages such as C, Java, and Python for end user applications, and many other purposes. These languages provide yet another layer of abstraction from machine code, making use of 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, and may also be 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 has made way for increasingly popular web applications. Today desktop applications make up the backdrop of our lives, and web development has come into the forefront.
Web development?involves creating software that websites run upon, and web design is concerned with the user experience.
Often-times the same person is responsible for development, design, and every aspect of building a web-site. However, depending upon the scale of operation, there are 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 sites internal servers, with the front-end user-interface calling to a back-end infrastructure for the operation of the site. This enables greater speed and security compared with running code in a client side browser.
Back end developers?integrate with databases, and other data storage, e-mail, and other such underlying systems that are 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.
There are also?full-stack developers, who 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, and is 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 web-sites.
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 overall popularity, so we can expect the use of python frameworks, for web-development, to also gain dominance over the coming years.
Mobile development involves creating applications to be run on mobile devices such as smartphones and tablets. Mobile developers include iOS and android developers, and often includes 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 upon experience.
Data analysts perform a significant portion of the work, gathering, cleaning and otherwise preparing data.
Machine learning engineers, who 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 there are a number of software libraries that 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 of the positions that a game development team can be composed of.
Game development?may also call upon other programming disciplines such as AI, VR\AR, blockchain and\or web development.
VR development is responsible for creating of immersive virtual experiences for apps, 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 accessible via mobile device.
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 minimal computing resources of chips embedded in appliances, household devices (IOT), micro-controllers, 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 anywhere around the world.
Depending upon the size of the organization, 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 one hand, there are the developers who 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 make sure that 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, and 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 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 infrasturcture, 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 to research and add info here, as time goes on.??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 upon 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