Archive for the ‘Custom Technology’ Category

Why is the Development of Custom Technology so Complex?

September 14th, 2021 by Heather Maloney

why is custom technology so complex to build

Or maybe you are asking, “why doesn’t the IT team, or the company from whom I bought my software, get it right the first time?”

The fact is, custom technology really is complex. You’d think that with the number of years we all have under our belts, creating custom solutions to run in web browsers and on mobile devices, that it should be really quick and easy now to create something new. But in fact, the opposite it true. So, let me help you understand why that is the case by taking you through all the different facets that need to be addressed by that simple piece of custom technology you have in mind.

User Interface Design and User Experience … the way it looks, and the way people interact with it
To be successful, there’s no doubt that your custom technology needs to look good – modern, delightful, familiar but also match your brand so that it doesn’t jar with how your organisation appears in other places. Familiarity is important, so that your user doesn’t have to think too hard about how to achieve a particular task, but you don’t want your software to look the same as every other application so that your users don’t remember which software they are using.

User Experience can be constrained by the platform on which your application is to run. Is it operating within the constraints of a browser, or the constraints of a mobile app running on Apple’s operating system? Browsers have always been a source of angst for software developers. They are (now) free, but they come from different creators, and so have their own nuances. They are meant to follow standards, and these days generally do, but some browsers have implemented more of the standards than others. So you may find that one piece of functionality works perfectly in browser x, but is broken in browser y. There are usually ways around the problem, even if that way is to degrade gracefully, but they all require effort to resolve.

User Experience also needs to cater for different types of devices – mobile devices with touch screens provide a different mechanism for users to interact with the interface compared to people using your software on a desktop computer. Watches, digital pens, tablets … they all have quirks that your software needs to be aware of if it is going to run successfully on those devices.

Caters for Every Scenario, and does what it is meant to do
One of the most difficult tasks in creating custom software is ensuring that it caters for every scenario. The person who describes how the software needs to operate has to think about not just the right way that a task should be done, but also all the variations that might occur, and how to handles those. For example, say you are building a To Do List application (because we absolutely need another one of those!), will your users want sub-tasks, will they always want to automatically tick off the main task once all the sub-tasks are done … the questions can sometimes feel endless.

When building software, it must help the user to know the right way to use the software, help them when, for whatever reason, they can’t follow the “right” way, and give them clear error messages and instructions on how to solve those errors when they get something wrong. We call this “data validation”.

Device and Platform Constraints
You may be of the view that whatever you can conceptualise can be built in software. That’s true to a degree, but unfortunately the device upon which your software will run comes with constraints. If you choose to have you software deployed as widely as possible, you might decide to build for both Apple devices and Android devices. These devices, particularly Apple, place many constraints on what the software can and can’t do. In some cases, only Apple itself can take advantage of some of the hardware features, so just because an app that comes on your phone can do a particular thing, doesn’t mean that you can achieve the same feature.

An example constraint is that you can only pair with a small number of other devices for the purpose of sending constant information between your mobile phone and the device you have paired with e.g. a watch, a watering system, a temperature thermometer. So if your software idea for a mobile device was resting on pairing with unlimited numbers of other devices, you wouldn’t be able to do that, and we would need to devise another way of achieving your idea.

There are many other constraints for not only mobile devices, the more common being:

  • screen real estate: how much you can fit on a screen and still be able to read / interact with it
  • memory: how much processing power at the disposal of your software before the computer appears to grind to a halt while carrying out a task
  • disk space: how much information you can store locally on the computer your software is using

Easy to Use
Ease of use was touched on above, but is an important characteristic in its own right. Ease of use is partly achieved by a familiar user interface design, and a well laid out set of interface components. But ease of use also relates to the task at hand, and how most people would normally think about a task they need to achieve via a computer screen. It may be impacted by the user’s environment, and also the information that they need or actions that they may have had to take before they needed to use your software.

Ease of use also considers factors such as whether the user can tab from one form field to the next, can use keyboard shortcuts, or whether they have to use a mouse to carry out certain tasks.

People have never taken in large numbers to reading help manuals, so strategically placed tool tips and text instructions / placeholder text are very handy ways to improve usability. Error messages, strategically placed, and delivered early (for example immediately after entering something wrong) will often help with usability.

Accessible (WCAG)
Accessibility, while not mandated, is a very important consideration. It takes ease of use about 3 steps forward, incorporating into your user interface a range of attributes that enable people with disabilities to use every aspect of your software just as if they didn’t have that disability. For example, transcripts for video or audio content provides those without hearing access to the spoken content in those digital assets. You can read more about accessibility in our blog post about the topic of accessibility in web browsers.

Caters for Future Uses
When we build custom software it is always important for us to understand the roadmap of features planned or hoped for a future version of the application. This helps us to cater for that future in the architecture of the first version of the software. That’s not to say that you can’t later go in a completely different direction, but knowing where you are heading means that we can allow for the expansion of the features to be more easily incorporated late.

This is most often felt in the area of the data and navigational structures of your application, where, without forward planning, your software can start to feel like a collection of functions that have been bolted together disjointedly … because that’s actually what happened!

Integrates with 3rd party solutions
Integration with other software solutions provides many benefits including:

  • you don’t have to build everything from scratch.
  • you can take advantage of the pre-existing user base of the software you are integrating with, potentially providing your software as an add-on to their toolset.
  • your software is more useful to your users because it is operating in an ecosystem.

Reasons why you might want to integrate with other systems include:

  1. marketing automation purposes – triggering email marketing to a new user, for example
  2. analysing the behaviour of users – what areas of your system are getting the most use, which ones are generating errors
  3. sharing data with other processes, your accounting function, for example
  4. adding data from other systems, such as the current weather, postcode and address lookups … the options are endless
  5. triggering additional processes, such as ordering components, setting up a meeting …
  6. notification purposes – keeping people involved in your work in the loop
  7. and much more!

Integrating with other software requires work, and careful thought. Where your integration involves 2 way data sharing, you need to identify where the master source of information is going to reside. You will also need to determine what happens when data comes back, if something has changed in the interim in your software? And there are many more questions to be answered with regard to integration.

Secure
The proliferation of cyber attacks on software means that security of your software solution is paramount. However, there’s a cost with the implementation of security, as well as usability trade-offs. It is important to understand upfront the level of security you need to build into your application, which will be different for a banking application compared to a To Do List application.

For example, secure applications interrogate every piece of data that is submitted into it, checking that it is of the allowed type, length and does not contain a malicious payload. Secure applications store and pass all data in encrypted form. Secure applications have a layered approach, adding extra checks for access between the layers.

An application that is secure one day may not be the next … hackers are continually looking for ways to break into systems. A code library that has been built into your software may tomorrow be exploited for the first time by a hacker, and then the creator of that code library (assuming they know about the hack) will need to close out the vulnerability and distribute a new version of their code library. It’s then up to the development team to bring in the new version of the code library, ensure that your software still operates correctly, and then re-deploy the new version. It’s a bit of a cat and mouse game unfortunately.

Keeping your application secure is one of the reasons that regular maintenance is required for all software applications.

Scalable
The ability for your software to be used by large numbers of people simultaneously also needs to be built into the architecture upfront, if that’s the intention. Scalability comes at a cost, although cloud application platforms such as AWS, Azure and Google Cloud have made it more easy to scale up your processing power, and distribute your solution across multiple servers and geographic locations, with greater ease.

Easy to Maintain
The first version of your software will not be the last. Usually a person with an idea for software determines the features that comprise their “minimum viable product” – enough functionality to inspire someone to use and pay for the software, or switch from a competitor product to yours – and then has that built and launched as quickly as possible. After that, continued investment is made in improving features to keep ahead of any competitive changes, and also to keep users happy that they can see improvements over time. Decades ago people were content with the software they bought on day 1 and didn’t expect (or want) any changes. Those days are gone!

Therefore, it is very important that your software is easy to maintain into the future. This characteristic is determined by things like: what language is my software written in – is that easy for developers, well-known in case I need more developers, as well as the platform that your solution is built and deployed on. Some platforms make it easy to make incremental changes and deploy those quickly.

You may also want to be able to update the content within your application – enabling this requires extra work to be done during the build of the application, as well as having security implications.

Documented
Finally, are partly to assist with some of the factors mentioned above, it is very important that your software is fully documented as it is being built. This can be a time consuming task, but it is vital for future ease of maintenance and enhancements. It will help you, developers and support teams to remember how the software is constructed, and efficiently deal with issues or correctly implement enhancements into the future.

As part of developing software, it is also important to keep version history on the development of your software overtime. This provides peace of mind that it is possible to revert to a previous version, should the need arise. Backups of the software are also important.

Solutions to the Complexity

The complexity described above means that creating custom software is not for the faint hearted! There is definitely a case for using pre-built / off-the-shelf software which you can read more about here.

There are also many ways to help reduce the effort required to deal with the above, for example:

  • Design frameworks. Material design is a prime example, where the team at Microsoft have created a collection of user interface components for icons, buttons, forms, cards and other user interface devices, which you can pick up and re-use in your own branding colours. These collections are often used as the starting point for a user interface design, with uniqueness added for more special functions of your particular application, as well as differentiation through your brand.
  • Code frameworks. Similar to design frameworks, code frameworks help for faster development by having commonly required features available pre-built. Things like standard animations, sorting elements, working with collections of elements. Without code frameworks the effort required to build custom software would be massively bigger. The choice of code framework employed for a particular software solution will depend on the type of application being built, and therefore the components likely to be the most handy to get the job done. Coding frameworks also assist in the implementation of security, with most frameworks being structured with maintaining security in mind.
  • Cloud development environments. This is similar to code frameworks, except that the development environment provide different types of pre-built component. For example, Amazon Web Services (AWS), Azure and Google Cloud, all provide a platform for hosting online software, along with components that are pre-built ready for use within your solution. Cognito is an example of a component available through AWS, which is used by many applications to handle to job of authenticating users into your application.
  • Integration middleware. To help integrate your software with another online solution, it might be expedient to use a middleware platform such as Zapier or Automate.io (there are others) to use their middleware to connect to the destination application. This will definitely be faster during an application prototype phase, even if it doesn’t get you everything you need into the future.
  • NO SQL / Document databases. These modern database platforms allow more flexibility to easily grow your data model to cope with any type of data you decide to add in future, which can require more work if you are using a relational database, although they have their place depending on your application.

If you are considering engaging a development team to build custom software for use by your organisation, or for the purpose of selling to other organisations (or maybe both!) please get in contact so that we can help you plan the successful development of your idea.

We’ve been designing and building custom software for more than 15 years, so we’re up for the challenge! Below are links to just a couple of examples of our work, if you would like to read more:
Scinogy Centrifuge Protocol Builder desktop application
Toll Group – Toll Transitions Pre-Removal Visit and Carrier Inspection Android App

Facebooktwitterredditpinterestlinkedinmailby feather

Custom Technology or Packaged Solution – which path should I take?

March 14th, 2021 by Heather Maloney

Contactpoint has always operated in the custom technology space, helping our clients with ideas for unique technology solutions to marketplace challenges, to make those ideas a reality. We are currently in the middle of building some significant pieces of custom tech, and we have just finished the complete re-build of a custom solution for Deaths and Funerals (we built the previous version of the solution many years ago, and the requirements had changed significantly).

However, not all of our work involves custom technology, and as much as possible we utilise pre-existing, proven technology and components to reduce the cost of custom development and ongoing maintenance. In addition, we are currently assisting several long term clients to move away from their own custom technology which we built for them, over to a packaged (aka ‘off-the-shelf’ solution). At the time when we built their original solution, that was the right option.

We recently discarded a custom technology that we had built for ourselves over many years in favour of a packaged solution – that technology is our project management software. On the other hand, we continue to support and enhance another custom technology solutionEnudge – which we built to service a very particular need in the marketplace, and of course we continue to use it for ourselves. You are probably reading this blog because we emailed you about it using Enudge.

All of the above begs the question: when should a business choose to develop a custom technology solution, and when should they choose a packaged solution?

To answer that question, I will take you through the advantages and disadvantages of custom technology.

Advantages of Custom Technology

Own the space
Creating your own custom technology, if successful, can allow you to be the dominant player in a particular market; that’s what I mean by owning the space. Your solution is unique to the particular problem you are solving, allowing you to do it better than your competitors, and therefore to stand out from your competitors. If you are using a packaged solution purpose built for your industry, then it will not be a factor in your market differentiation … you will have to look elsewhere for uniqueness.

Innovate
Most likely you will choose to build a custom solution because there’s nothing on the market that does exactly what you want – you want to innovate compared to what is already available because you have worked out a way to do it better, to achieve better business outcomes and better results for your customers.

Having control of the solution you are using gives you the opportunity to continue to innovate. Many of the packaged solutions that are available for your purchase were originally developed by a business who wanted to operate better, and then they realised that the solution they had made had widespread appeal for other businesses, so they pivoted (or spun off) into a software company instead of their original business.

Competitive Advantage
Innovating / improving the standard way things are done can give you a competitive advantage. Perhaps you can operate cheaper than your competitors, allowing you to perform the same service for a lower cost, and still achieve the same level of profit, or you can achieve a better / quicker result at the same price.

Where most businesses in a particular industry are using the same processes and technology solutions, then you can’t gain a competitive advantage from your technology.

A warning though: when your uniqueness in the marketplace is largely delivered through your software solution, you need to keep on your toes as many software solutions which just involve what is known in the industry as CRUD operations (create, read, update and delete) are relatively easy for a competitor to copy. In this situation, continually innovating will be essential to keep you ahead of your competitors.

Packaged solutions also continue to innovate, but every business using that solution will gain access to the same innovation at the same time. You might have the opportunity to pitch an innovation to the packaged software vendor, but they will have a very long list of planned features – whether your suggestion is ever implemented will be unknown. And if they do, all your competitors using the solution receive the advantage as well.

Agility in the Marketplace
The economic and legislative landscape in which you operate will change over time. Customer behaviour will change with fads and trends. If you control your technology, and if you have the funds, you can be the first to take advantage of a new opportunity that arises as the result of a new trend.

Reliability into the future
Finally, and something I expect businesses are thinking less and less about that the moment because of the largescale move to cloud technologies which force you to rely on the big tech companies, owning the technology, and having control over it’s future, gives you certainty for the future operation of your organisation.

I don’t expect the big tech companies to disappear anytime soon. However, what about the packaged solution you are using for, say, your project management. What would be the business impact of your organisation if that company decided to sell or close down? This is a factor you need to consider when choosing a packaged solution and is largely resolved by building your own.

Disadvantages of Custom Technology

Expense
There’s no getting around it; building your own software, even if you hired a teams of designers and developers directly, will cost considerably more than buying a packaged solution.

Nearly all software runs on hardware and/or platforms that are built and managed by other businesses. That means that your custom-built software solution will need to be continually maintained in order to ensure it will run on newer hardware and will continue to operate correctly when the platform is updated including web browsers (where your software is run through a browser).

When you are the only organisation using your software you may not be able to achieve the economy of scale that a packaged solution can. Selling the one solution to a large number of companies is a way to amortise the cost of the development and ongoing maintenance.

Organisations for whom we build custom software will often have the potential to apply their custom software to multiple businesses, or to a franchise, or are indeed intending to have a significant share of a large market.

An Ongoing Project

I’ve already touched on this under the topic of Expense, however, the other disadvantage of custom software is that you can’t just build it, and then enjoy using it. You have to be committed to the software over the long term. You have to be willing to dedicate time and effort to maintaining the solution to keep the benefits you have gained from your investment – this time and effort may be a distraction from your core business.

As a minimum, your software will need to be maintained to continue to work with new versions of the hardware and/or platforms upon which the software is running. You will need a good software partner (like us!) to continue to maintain and support your solution on an ongoing basis.

If you have moved into the business of delivering a software solution to other organisations, then you need to continue to innovate in order to stay at the top of the list of solutions. Similarly, if your technology solution is your competitive advantage, you will want to focus on ongoing improvements to keep your competitors at bay.

In conclusion …

By way of summary, the advantages are all about opportunity, and the disadvantages all relate to investment (time and money).

It is my view that you should embark on creating custom technology when both of the following are true:

  1. There is no well-supported packaged solution that fulfils all your most important requirements or complete ownership of the solution is vital for your competitive advantage, and
  2. You have the ability to fund not only the initial development but also ongoing maintenance and enhancements. This might include revenue generated from the sale of the solution if that’s part of your strategy, or it might be that your solution will reduce your costs, or enable you to expand into new markets without increasing your costs.

Where our clients are now moving away from their own custom technology to a packaged solution, it is because there is now available sufficiently robust solutions to meet their key requirements, and / or they no longer have a good enough reason to maintain their own solution. In addition their custom solution no longer provides a competitive advantage and is not their core differentiation in the marketplace. It may also be too expensive to maintain, or too distracting from their core business.

There is one other alternative that should also be considered for creating a custom technology solution: using a configurable platform, instead of building from scratch. A platform that enables you to combine components which, together with an underlying data store and workflow rules, creates your required technology. Often these platforms are low code or no-code solutions, providing drag and drop user interfaces to create the system. There are myriad models for such solutions. WordPress is a kind of this solution, whereby you can add plugins to your existing WordPress website to achieve additional functionality often without needing to write any code. Hosted form builders, including Microsoft’s Sharepoint combined with Power Automate and Power Apps, is another example applicable to organisations using Office365.

Cloud platforms such as AWS, Microsoft Azure, and Google Cloud Computing are also helping the development of custom software solutions more accessible to small business via the pre-built components they provide in their cloud platforms – we make use of these for many of our clients to reduce the cost of development of custom solutions.

Making the right choice of platform on which to build your custom technology solution, or choosing the right packaged solution, is a very important decision. Making the wrong decision can be very costly, either in opportunity and position in the marketplace or in dollar terms. If you would like to discuss your idea for custom technology, don’t hesitate to get in touch. We are invested in your success, whether that’s pointing you to a packaged solution or helping you create the technology to underpin your invention.

Facebooktwitterredditpinterestlinkedinmailby feather

Subscribe to our monthly

Contactpoint Email News

Our enews is sent out approximately monthly, and contains information on latest digital technologies, and how these can be used to help your organisation grow.

To subscribe, simply fill in your details below: