3 Tips for Writing Your Own Custom Software
I've worked in software for over a decade. I've seen all of the fun and exciting things software technology can do for people. And I've seen all of the difficult and frustrating times when things don't work as intended, or a project has to be scrapped and restarted for one reason or another. My team has been doing this for a long time, and we want to share with you some things to keep in mind when writing your own apps.
1 . Keep it simple and set aside lots of time
Building software is like constructing an office building. The simpler, and smaller you make it, the cheaper and faster it will go. We did an expansion to our office suite a few years ago. We went from 5,000 square feet to 10,000 square feet and it took about 8 months. Keep in mind, that this was just an interior build-out, no brick laying or roofing or anything complicated. And it took the better part of a year!
Writing code for a script is relatively easy, but writing an application is a significant project. Keep your feature-set simple, and give yourself plenty of time and budget to handle it.
The total cost of ownership to produce software can be high. A popular misconception I see everywhere is that to produce a basic application you only need the initial funds- $100,000 to $250,000 on average. Enterprise applications will run from $800,000 on up. This is then followed up by maintenance costs which can range from 50% to as much as 80% of the initial outlay to keep it running and maintained. This is where the decision to buy an app, or build your own is very important.
With these massive costs, it's important to keep expectations low, and focus on really narrow features that you can't just buy from a vendor. Build the things that are custom to your company or project, not things you can buy for a fraction of the cost.
2 . Think about the future
The code you write today is not the code that will be running in a year. Code constantly needs to be updated. At the most basic level, your app needs to accommodate updates from other software and hardware platforms. This means, if you are writing a mobile app, you need time for updating to the latest iOS every fall. Or if you are writing a series of scripts for ArcMap, you need to tweak them all each time Esri issues an update. If you don't, then you are locking your company or your customer into old, outdated hardware.
Time and budget need to be set aside for this maintenance. The saddest thing is when we see a company has a multi-million dollar software team, but they are on platforms that are 3 or 4 years old. Anticipate the annual changes and budget the time and money to roll with them.
Additionally, keep in mind the future requests that your users will likely want. You don't want to engineer yourself into a hole that you can't get out of. If you know the roadmap for the future, design with that in mind.
If you are in management, you will need to think of a different scenario. If there is an industry downturn, or budgets get cut, will you be able to maintain the high-spend needed to keep the software up-to-date? If not, and you anticipate that your software team will suffer layoffs, it may be best to find an off-the-shelf product for you to use. The reason is this: All of us in management are familiar with the cost of training a new hire. The costs are multiplied for software developers. Not only are they learning your company, and your processes… they also need to reverse engineer a complex software system to understand what it does, who uses it, the data structure, security hierarchy, libraries used, etc. And all of this with little to no guidance. So what do you do, as a manager? Don’t lay off all of your software team. Protect them, in order to protect the millions you’ve invested in your apps.
3 . Keep it secure
The absolute worst thing that can happen is that malware or ransomware leaks into your company through your software. This is a worst case scenario. To prevent this, invest heavily in cybersecurity. Here is your basic cybersecurity checklist:
Encrypt data at transit and at rest
Enable 2FA for all logins
Enable federated authentication
Practice controlled access best practices
Protect against SQL Injections
Protect against cross-site scripting
Keep your users running on the newest software and hardware platforms
Conclusion
With these tips in mind, you should be able to write your own software projects for your company. The key is being realistic about what you can do and how much time it will take. You need to budget for the total cost of ownership so that when updates come around, you'll have enough money set aside to make them happen. And lastly, invest heavily in cybersecurity so that malicious programs don't infiltrate your system and bring everything down! If this sounds like something you want help with or just some more information on, we can put you in contact with a good software consultant. We don't take on a lot of custom projects, but we know great people who do.
Which part of writing code did we miss? Let us know below!