What is Software?
Computer software is a collection of actions and rules that have been translated from human language (e.g. English) to computer language (binary code). This translation happens in two different steps like this:
- Human Language -> Programming Language
- Programming Language -> Machine Language
Step 1 is known as programming. Sometimes we call it ‘coding’ or ‘software development’ but the result is the same: a software expert translates your business rules into a programming language like Java, Ruby, or Python. Programming languages have a very strict syntax and rules for what can and cannot be done. A good programmer must become fluent in this language as well as their own native speaking language. Here’s an example:
- Human version: First and last name are required fields
- Code version: entryFields.validateRequired()
Step 2 is called compiling. In this step, the programmer feeds their carefully structured program into a compiler. A compiler is a specialized piece of software that translates the programming language into the machine language that a computer can run.
Once the program (in machine language) is loaded into a computer and started, the computer becomes useful by performing the actions you need like taking an order or printing out a report.
A software program that has been written for a specific purpose is called an ‘application.’ That is, the programmer has written software that can be applied to a particular problem like stock trading or designing business cards.
Clients and Servers and Clouds — Oh My!
Small business software usually runs in one of two places: either on your local computer (PC or Mac) or on a computer elsewhere that you access remotely. The local computer is sometimes called a ‘client’ when it communicates with a remote computer. These remotes computers are called ‘servers’ because they serve up software and data to you as a computer user as well as many other people. They are larger and more powerful than your local computer workstation. A collection of servers is sometimes referred to as the cloud but don’t let the term throw you. It’s just a metaphor we use to talk about computers that are somewhere else — usually in a data center.
On Demand vs. On Premise
These terms differentiate your software (on premise) from someone else’s software (on demand). If you buy software an install it on your own server, it is ‘on premise.’ If you log into someone else’s server to use the software, it is ‘on demand.’ Neither of these terms refer to software that you install and run on a local workstation.
The term ‘packaged’ or ‘shrink-wrapped’ software refers to software that is ready to install. It has already been written and tested and is ready to use. By contract, you may also explore ‘online’ or ‘on demand’ software that runs on a server somewhere. This software requires that you create an account and log in to access the features of the application.
Using your small business software for the first time is the tale of two programs and feels very different depending on whether it is a packaged program or an online application. A packagedprogram must be installed on your local workstation computer. Current software installers are pretty easy to deal with. The installer (downloaded or on a CD) will walk you through the process using a step by step approach. You may have to answer some questions along the way, but it’s generally painless. Online software does not get installed on your local computer. Instead, you access the software through your internet web browser which you use to log into an account that belongs to you. This is how products like QuickBooks Online work. Getting start with an online application is quite a bit faster and has other benefits like automatic updates. The obvious downside is that you cannot access your application when you have internet problems.
What About Updates?
Keeping your software up to date is handled differently depending on where it runs. If it runs on your local machine, you need to download and install the latest version. Your software may remind you to do this when a new version is released or you may have to check for updates yourself using one of the menu functions inside the software.
If your software runs on a server, you probably will have nothing to do with the update process. Whoever maintains the server itself will install the updates. You may get a notice prior to the update if there is a significant change. Otherwise, it will just happen. This is one of the advantages of using software that is hosted (runs) elsewhere — it takes the work of updates off your shoulders.
We’re not talking about software doing back bends or the downward dog. Flexibility within a software application is a function of:
- Product Maturity
- Customer Diversity
A mature product has been around long enough that its creators have received a great deal of feedback from customers. This feedback will result in improvements that you, as a new buyer, can benefit from. When a company’s customers are diverse — have different processes, rules or needs — the software will adapt over time to allow for these variations. This benefits you again by providing a wide variety of options that someone else already asked for. You just learn how to configure the software (change its controls) to do what you want.
As a small business owner, you will probably not need to have custom software created. This is an expensive process and is only really justified if your business model is very unusual. I recommend that you avoid this quagmire and find an existing product to use. If you insist on having this adventure, make sure travel with a veteran like the Disambiguator so that you don’t lose your shorts in the process.
Small Business Software
Looking for software for a small business? Whether you need home business software or general business software solutions, you’re in the right place. I have carefully selected every entry in these pages to make sure that it is great small business software and relevant to what your home business or small business needs.