The wonderful thing about custom software is that it is tailored to the needs of your business. But what happens after you have designed and built your application? What if your business needs change? Can your custom software be upgraded later?
If you own your source code, the good news is that your software can most likely be enhanced to grow and change with you. For those just starting out, here are four things to consider when building custom software to ensure your application lasts and continues to provide value.
Software technologies change rapidly. New technologies are introduced each and every year. When you design and build an app, you want to make sure you are choosing technologies that both fit your business needs and will serve you long-term.
The last thing you want to do is build your software with a technology that is not supported or no one wants to work with in the next 3-5 years.
Below are a few leading indicators that will assist you when making your technology selection:
- How many job openings are there in your area for developers for your chosen technologies?
- How active is the development community on blogs, forums or meetups?
- What are local universities and code schools teaching?
- What are the common technologies that local custom software firms offer most?
Although architecture is not something most people understand, feel free to ask your team about their approach. Architecture is a critical piece in building a scalable and a robust system, as well as a system that can evolve over time.
The goal with software architecture is to create your application so that it can:
- Be easily and consistently developed
- Be easily supported
- Be stable and reliable as the number of users and transactions grow
- Be easily extended in the future without the fear of breaking other code
- Provide long-term value
The way these goals are achieved is by writing code in tiny autonomous units. In techno-speak, this is known as Separation of Concerns.
Writing code in tiny components not only simplifies your design but it also promotes reuse which will shorten the development timeline as well as keep the behavior consistent throughout your application.
A modular architecture is like building software with Legos. You build the legos and then you stack them in the best way to build the software you need. If you need to change a component, you update a block without touching the other blocks.
The opposite of a modular architecture is writing code in large chunks. At first, the insides of your application looks good, but after awhile, it becomes overly complicated and entangled with knots – kinda like a ball of string.
When you pull one piece of string to change something, it affects the entire system. There is also very little reuse. Software developers use the term “spaghetti code” to describe this scenario.
Stylized and Responsive User Interface (Web Specific)
By a stylized user interface, I mean a website that uses CSS stylesheets to handle the look and feel of the application. Using stylesheets is like developing with a modular architecture, but for the front end.
A stylesheet allows you to describe all of your fonts, colors, layout and styles for each component (headings, subtitles, quotes, buttons, links, navigation, sidebars, author bi-lines, etc.) in one place. If you decide to update your branding, the task of changing your logo and color pallet is no problem. Without stylesheets, it is a big deal as you will have to change each and every page.
Beyond the look and feel of your website, make sure your web application is written with Responsive Design. The purpose behind responsive design is to allow your web application to look and work great on the hundreds of different screen sizes that are available now and in the future.
Responsive Design is well described by its name. It allows your web application to respond to each user’s specific screen size. Pictures and text may be resized, content moved around, items shown, shortened or hid, all based on the specific screen and the user’s device. The goal is to keep the most important information and functionality in front of users with smaller devices and then layer on additional information and functionality as the screen gets bigger.
Application Programming Interface – API
APIs are a way for your application to interact with other applications in a pre-defined and controlled fashion. An API can be as simple as providing information about a customer, or receiving information about an order. Or an API can be complex, such as figuring out the best route between points A and B.
Having an application that can integrate with other systems in incredibly powerful and is a smart way to grow and extend your software over time. Not only can you share data between applications, avoiding duplicate data entry, but you can leverage the logic, algorithms, and business rules that are already written and tested rather than re-writing them yourself.
Likewise, your application can offer data and functionality to others making your software and business relationship “sticky.”
Custom software can do almost anything and can continue to grow with you if it is designed and written well from the start. If you are looking to have software built, consider talking to your software partner about these key points so that your application is set up for long-term success from the start.
The 5 Pillars Of A Successful Software Project
We want to help every software project begin on solid ground. In The 5 Pillars Of A Successful Software Project we share the five essential ingredients of every software project.