Software development spans devices, platforms and form factors well beyond PC. Here are 10 types of software development:
1. Web Development
The golden child of the current and future generations of coders, developing for the web means coding those many web-pages you look at over your morning coffee. It’s diverse and ranges in complexity, from a <h1> “Hello World” </h1> to many dozens of interconnected files only the original developer knows how to organize.
Web development today is exploding thanks to the emergence of new web technologies and Application Programming Interfaces (APIs) which let websites “plug in” to other useful features. The Web today can deliver ‘apps’ that feel native, because browsers now are so much more than an URL bar and an Ad-blocker these days. Hyperion’s part-time online course in Full Stack Web Development is one of the most popular courses in Africa if you’re looking to get started as a web developer!
2. Mobile Development
This one probably was unheard of 9 years ago, but today it’s all the rage. This one could better be described as “App Development” (there’s the contraction) and involves creating anything to run on mobile devices, such as iPhones, Android devices, and recently, the Windows 10 platform. Most popular OS’s offer their own programming languages but some traditional languages can be used as well.
The versatility of mobile development allows anything from Candy Crush games, to console-like quality games in the palm of your hand. Games aren’t the only thing to focus on either; there are all sorts of apps for pretty much anything, from the ordinary, like finding where the best place to eat is or catching up with news, to the random, such as telling you how much of water you should drink daily, or turning your photographed face into a zombie.
Languages of choice: Android, Swift (for iOS), Objective C, HTML5, Java, C#
3. Data Science
This one’s quickly picking up momentum in South Africa, but is a major field overseas already. Think crunching large data sets, potentially using some cluster-computing approach. Developing for scientific application usually means some very specific numerical application.
The applications of this are cooler than you think: it’s what machines think, actually. Machine learning needs large amounts of data to “learn” from, in order to ‘make its own decisions’ about given situations, and data science ensures this data is presented in the correct form to be used in AI applications. Hyperion’s Data Science MicroDegree teaches you the basics of data science in Python if you’re looking to learn more.
Languages of choice: C/C++, MATLAB, Python
4. Application Development
This is the “original” type of programming. These are ‘standard’ Windows (or Mac, or Linux) applications that perform their duties on traditional desktop operating systems. It’s often considered a programme, executed on demand by the user, that shows up its interface in the confines of the OS that it’s running upon. Application development is any dev work that isn’t web-based or running off a small screen held by little 4 year olds intent on wreaking fruit-slashing destruction in-game, or something similar.
Languages of choice: Java, VB.NET, C/C++,C#, Python.
5. Back-end Development
These are the programs and the development that goes on behind the scenes to make sure the front-end program churning away does so without bringing half your computer to a standstill.
It’s more than just OS system development, however. Linux servers often need customized scheduling for tasks they perform, and for this, a special scripting utility called cron is used. Cron Jobs are scripted by developers to allow scheduled maintenance or background utilities to run, but they’re in fact versatile enough to automate essentially any task on your choice of Unix-like OSes.
Finally, database management is a prime candidate for back-end development. Database development is literally the backbone of any system that holds large amounts of data to be organized. Think companies’ client database, or bigger still to Facebook’s user database. One billion users’ details have to be organized somehow, and back-end developers make this their job.
Languages of choice: C and C++; Linux scripting for Cron; also (my)SQL, dBase and Oracle for databases.
6. Software Tools Development
Not used by most consumers, but critical in the software development industry. This development builds tools for other software developers to test their code with. Beyond simply testing, developing this software will ensure other developers’ code conforms to industry standards and remains maintainable. Developing programs to (amongst other things) test other programs is no easy task, but tech giants like Microsoft and Google employ software devs by the bucketload to design test applications for testing other projects on-the-go. Languages of choice: Java, Python, C++
7. API Development
This is the art of building something extensible. Developers build programs that act as puzzle pieces, across different operating systems, on desktop, mobile and the web. They allow 3rd-party (read: “other”) developers to interact with the tools or functions the API relates to. It’s the laying of a foundation of standard procedures, types, tools, GUI interaction methods, database access rules and so on that programmers building other applications that make use of that API can use.
Languages of choice: APIs are written for specific platforms or functions, and each API will have the programming language of the platform/device/site/service it’s designed for.
8. Embedded Systems Development
With the rise of the “Internet of Things” and just about everything but the kitchen sink being connected to the internet these days (oh wait…), embedded systems development has boomed. It’s the coding skills needed for your embedded systems like Raspberry Pi’s, Arduinos, Beaglebones, and so on and so forth. Definitely a challenge.
Languages of choice: Embedded C, Assembler, Python, Arduino (an embedded C derivative), Java.
9. Security Software Development
Otherwise known as hacking. Wait, what? That’s a type of software development? Certainly, and it’s a critical field. Penetration testers (“white-hat” ethical hackers) and cyber-security experts work together for the good of companies and their systems and data. The cyber-security team develop software to keep important company assets safe from theft, viruses and other malicious attacks, and the pentester tries to ‘hack’ into the system to find where the vulnerabilities are. In this way, there’s less chance of your “black-hat” malicious hacker getting into your important data.
10. Cloud Computing
Whilst the traditional idea of local storage for files, and having a program run locally to give you what you need has stuck around in South Africa, thanks to our dismal internet infrastructure, the notion is slowly changing, and cloud computing services are becoming more prevalent. Somebody’s got to develop the software powering Amazon Web Services (AWS) and others, that powers your webmail, OneDrive storage, and GitHub, protecting your code faux pas, right? Fun fact: Amazon’s EC2, the huge cloud computing platform offering virtual computing, which powers VOD providers like Netflix, is built entirely by the Amazon Cape Town team. SA representation!