I was talking with someone just yesterday who told me, “Software is so much easier to create now than ever before.”
This person is not a professional software developer.
What has changed is the number of software application types that can be created. (Cool! I can sit at my desk and use my phone to turn the heat on in my car!) But for developers, building modern software is much harder than ever before because applications are much more complex than ever before.
This increase in applications and complexity is largely caused by the public use of the Internet. Before we networked computers together, there was a lot less for a developer to worry about. A programmer could write software using a single programming language, copy it to a floppy disk or CD ROM, and give the disk to someone. If someone had that disk and an MS DOS or Windows PC, they could run the program. If a user typed in new data, that data was saved on their PC’s disk drive. It was up to the users to keep their PCs secure and the data backed up. Simple.
But now our complex applications require the Internet, and when we require the Internet, we’ve got a slew of new dependencies. And the companies that provide those dependencies all want money.
Here are just a few of the things modern systems now require just because they use the Internet:
First you need an Internet-connected computer to host your system. Easy enough. Just create a virtual server using a hosting service such as Amazon’s AWS or Microsoft’s Azure. There’s a monthly fee, and Amazon and Microsoft will happily rent you as much computing power as you want. How much will it cost? Hard to tell because it depends on how much your application is used.
Now you’ll need a way to uniquely identify that computer to all the other computers. That’s done with a domain name and an IP address. Again, easy enough, but now you need to create an account with GoDaddy or Domain.com and give them your credit card number so they too can bill you.
Sending data through the Internet could cause privacy issues, so you’ll want to encrypt your data as it flows through the pipes. Encryption used to be used only in special cases (e.g. passwords and credit card numbers), but now we encrypt everything just to be safe. So you create another account with another company and give them some money for a digital certificate file to put on your virtual server so the other computers on the Internet know your computer is legit.
Your system will probably need to save data of some sort. And this data isn’t for just one person. Because the system is running on a single virtual computer on the Internet, that one computer has to save the data for everyone using your system. That much data is best handled with an enterprise-scale database management system from one of many vendors. Sometimes data storage is free if your needs are small, but when your data storage needs get big, you pay for both the database engine and the space to store the data.
Applications that run on web browsers are available to anyone who knows the URL, which is public. You most likely will want only authorized people using your application. So now you pay your application developers even more to create ways for users to register for accounts, sign in, sign out, etc. Maybe you'll even pay to build in permissions so different users can perform different tasks. Oh, and the users might be in different time zones, or maybe some are in the US and others use the metric system for measurements. You’ll need to pay for additional coding so the user interface will display information suitable for wherever the user is.
What if a user forgets their password? Let’s send them an email with a link to reset it. It used to be simple for a server to send an email using SMTP, but spammers made email less reliable. So now the best way for an application to send an email is to use a third-party email company like Sendgrid or Sendinblue. Like everything else, just create an account with the email provider, give them your credit card number, and pay the developers to build in this forgotten password feature.
Email not dependable enough? Maybe you should give your users an option of receiving messages via SMS instead. Plan on using (and paying for) a third-party SMS service like Twilio.
Want your users to pay to use your application? Sure, we can do that. Just create an account with a credit card processing company like Stripe, and pay the developers to code in hooks to that system. Do the credit card companies charge to use their services? Don't be silly. Of course they do.
Software is never perfect. Code will often encounter something unexpected – an exception. You’ll need a way to log these exceptions so your tech support and software developers can research and prevent them from happening in the future. How is this done? Well, you just pay to use another third-party service that specializes in catching and logging exceptions. Some are free. Some charge a fee. All require you to create another account to manage your stuff.
If you connect your computer to the Internet, malicious hackers from anywhere in the world can attack it. Maybe the hackers will get administrator access to your computer, install malware, encrypt all your data, and make you pay a large ransom to restore it. The best defense against ransomware is to pay one or two more companies to monitor and backup all the data on your server. That way, if bad guys do get to your computer, you can just delete it, and create a new one from your backups. Important insurance to have, but insurance isn’t free.
Maybe you’ll want statistics on how your application is used. Create an account with Google Analytics.
Want even more details about how people are using your app’s user interface? Create an account with a monitoring system like Hotjar.
Want your phone app available in app stores? Pay to create developer accounts with Apple and Google, and maybe give them 30% of any fees you charge your users.
Oh and one day your bank contacts you because they suspect fraud on your credit card. Easy for them. The bank just cancels that card and sends you a new one in the mail. But now you've got to remember all those places where you've used that card and go update them all with your new credit card number (Hope you remember all your User IDs and passwords!) And if you miss one, maybe the vendor will turn off their service because of non-payment and now your system stops working without warning.
The list of outside services and companies a modern software application must rely on gets bigger every year. Which means software developers must evaluate, learn to use, manage, and pay to use them all.
Is software so much easier to create now than ever before? No. Not at all. Just the opposite in fact. Luckily for our customers, the team at DelMar knows the best way to handle all this complexity.
Book a one-on-one meeting with our team to discuss how DelMar can help you manage the many aspects of modern development.