What type of software should you develop?
A rundown of the different types of software you could build
So, you're an entrepreneur who wants to develop the next big thing. A bit of software that blows minds and makes other developers smack their foreheads in “why didn't I think of that” disbelief. A coded marvel that redefines the technology space and gets users hooked and hungry to pitch their money at you in dangerous-sized wads. Good to hear it!
That said, there may be one teensy tiny barrier standing between you and this great destiny: you don't quite know what type of software to develop. Or, alternatively, you have the inklings of an awesome idea, but you simply don't know what category your baby fits into.
Join with us now as we do a rundown of different types of software out there and the demand for each. Let's answer all of your questions and set your entrepreneurial feet on the path to Easy Street.
Major software type 1: Applications software
Let's chop everything right down the middle from the get go. When it comes to types of software, you have two major groups: Application software and system software. Let's dive into the former first.
Application software can be further divided down into Specific Purpose Software or General Purpose Software. Applications can be a multitude of things — word processing, SaaS tools, spreadsheeting, image manipulation, games — just about anything your heart desires, really.
Before we continue into these two subcategories, it's also worth noting that as pieces of software have become more and more laser-focused on specific tasks, clustered suites of them have sprung up. For example, Adobe offers a suite of design software that allows a variety of complex artistic disciplines to co-exist remarkably well, be it desktop publishing, web design, video creation and more. Similarly, Microsoft has its popular Office suite, a multi-software offering that's essentially a one-stop shop for cubicle drones everywhere.
Specific purpose software
It's all in the name, really. Specific Purpose Software is a piece of code written to do a very particular thing. We'll give you a few "for instances" here, to help fire up your own imaginative juices.
We might be talking about a billing system that deftly itemises your company's goods and services. Or we could be talking about a security system that tracks the attendance of employees via biometric integration. Alternatively, you might need some Specific Purpose Software to conduct HR administration. Closely related to that last example would be a bit of accounting software that handles accounts payable and/or employee payroll.
General purpose software
General purpose tasks are pieces of code that have a much broader scope in terms of usage and adoption. A prime example would be a piece of multimedia software that allows the user to weave together an impressive pastiche of video, images, animation or hyperlinked web content. A lot of the aforementioned content will have most likely been tweaked into their optimum forms via another bit of General Purpose Software; a graphics editing program like Photoshop, perhaps.
Another example: the beancounters you know down in the accounts department will have discarded their calculators and abacuses long ago. They all crunch numbers on electronic spreadsheet software. Likewise all of your pertinent contact info and office misdemeanors will have no doubt been logged into a DBMS (Database Management System).
Last but not least, the very words your reading now have been brought to you by one of the most widely used pieces of general purpose software used in the world today. Thanks, word processor! You've saved me countless hours and have eroded my once acceptable penmanship to the point where people mistake me for a doctor. One with arthritis.
Major software type 2: System software
The other major direction you can go in is writing Systems Software. The output you'll produce here is considerably less flashy and high-five worthy to anybody not holding a computer science degree, but it'll also be incredibly important. System software is the stuff that includes programs dedicated to managing the computer itself – file management and the disk operating brains of your computer.
The latter, known as the DOS, handles the physical hardware resources available to your computer in addition to applications and data. Basically, if it weren't for system software, you and I would be clacking away on our keyboards, typing instructions of War & Peace length in to make the most basic things imaginable happen on the screen.
From here System Software can be further categorised down into two more disciplines, System Management Programs and Developing Software. Let's take a quick gander at each of those now.
System management software
The first discipline concerns the operating systems (or OS) we've already spoken about, also device drivers and system utilities. A good example of device driver software could be some finely coded instructions that can optimise the output abilities of a graphics card (to make video games look even more disturbingly lifelike). Meanwhile, a system utility is written as a sort of hardware maid to clean up disk drives of bad data, or to compress/backup/defragment/virus check your files.
System Management Software also extends to the Basic Input/Output System (or BIOS) that controls the hardware plugged and wedged into your computer's motherboard. We're talking stuff like the RAM, Blu-Ray drive, Graphics card, UDB ports, Cooling Fans and more. Without the proper software to cohere all those bits and bobs into a basic known state, your HAL-9000 PC wouldn't even boot up.
This second discipline takes a different route as it's roftware equired for the (hopefully) easy creation of yet more software. Some popular sub-categories include programming languages, language translators, linkers and loaders.
Programming languages are typically rated as low-level and high-level (an e.g. of each would be assembly language and C++). There's also machine language that is the real nitty-gritty, super primitive binary stuff that a computer (and Neo from The Matrix) reads. Language translators are comprised of Assemblers/Compilers/Interpreters that are like digital towers of babel that allow foreign bits of code to find common ground and communicate effectively.
Lastly, Linkers are system programs that scoop up a variety of disparate libraries and object modules into a coherent executable (i.e., a program). A Loader is like the ignition spark that transitions an executable file from your chosen disk and into your computers memory, thus booting the software.
Now that you have a firmer grasp on the wonderful world of software, what will you create? Will you dazzle the world with System software that powers a new generation of uber-powerful Batcomputers? Or will you code some application software masterpiece that makes life immeasurably easier and quickly becomes indispensable?
Alternatively, you could take the much, much (much) easier route. Present your idea to a software developing wunderkind that you've hired on Freelancer.com. Have them build your software dreams into reality. At minimum, you'll save yourself about a decade's worth of studying and school fees!