Current challenges for traditional development as I see them…Having run a large software development department in the past, I know how challenging and expensive it can be to deliver software at the pace the business really wants.
Never having enough coding capacity to keep up with business demand is a real problem, constraining what you can actually do. The business wants to move at pace and is frustrated by the lack of progress on changes which to them seem simple, but take months or even years to deliver. At times it feels that all you are doing is dashing to keep up. The need to get code out quickly can lead to ‘work around’ stop gap solutions and result in increased technical debt.
From a resourcing perspective it has become really hard to obtain and develop and retain the right development staff. Programmers in particular are very much in demand and have their pick of jobs and many of them have ended up working contract. In recent years there has also been a push to reduce cost and increase capacity by offshoring development work, an approach which has proven challenging from both a QA and management perspective.
The rapid rate of technical change both in web or mobile App based development has also mean the skill sets you need today will probably be different from those that you require tomorrow.
Enforcing coding standards and ensuring adherence to design patterns can also be very challenging. High staff turnover and use of contract resource means a range of coding approaches may have been taken and coding quality may vary significantly. This may be further compounded by poor code documentation. Because of this when you need to make further changes at a later stage you may be forced into code rewrites or workarounds which weakens the code base further. This all makes the software difficult to support and maintain going forward.
This is where rapid application development tools such as Low Code come in. These tools can help you to quickly develop solutions and enable your teams to become far more productive. Because Low Code provides such a structured framework and the platforms are being continually updated standardisation and maintainability become much less of an issue.
What is Low Code?
You have probably heard of both ’Low Code’ and ‘No Code’.
No Code uses a visual development environment to allow a layman or ‘Citizen’ user to create apps without much technical knowledge.
Low Code uses similar approaches, but from the perspective of making your technical staff far more productive by taking away the routine aspects of creating applications. Low code platforms are more complex and therefore more difficult to learn. It probably takes a month or two to get truly competent in using these.
Low Code uses a visual design methodology rather than the code you see in traditional programming languages. Functionality is created by dragging and dropping components together and then configuring them. Anyone familiar with Microsoft CRM or Salesforce.com will already understand this approach to development. The difference with Low Code is that you can scratch build applications and use it as a wider development platform.
Very simple solutions can be automatically constructed in minutes, but do not be fooled a proper solution will require much more work. You will still need to perform proper requirements gathering, design, build and testing like any other software project. Having said that these tools are so rapid that you can actually work alongside business stakeholders in a highly agile fashion to create and showcase base solutions, potentially in real time. A minimal viable product offering can often be created in a matter of days.
From a support perspective you still need to document comment and use meaningful naming conventions in Low Code but the visual representations are much easier to interpret even to the uninitiated.
The kind of things you can do using these platforms include creating data objects, screens, processes and integrations. User management, email and SMS capability also come ‘out of the box’ and can be integrated with your company Active Directory for single sign on. Some platforms provide you with a kit of basic building blocks such as base CRM objects, which looks tempting, but creating new object is so easy you may not want to bother with this too much.
The platforms themselves are generally ‘Software as a Service’ and therefore will be continually upgraded and improved by the provider, with the platform only getting better as time goes on. The provider will also look after platform security, but of course you still need to make sure that your development practices are secure, but typically the platform will let you know if you are doing something inappropriate. Support should become substantially easier both from an application and infrastructure perspective.
In any evaluation you should ensure the platform is easily extendable. Ideally this would be using a non-proprietary programming language, so you can leverage existing in-house or readily available industry expertise. Finally pick companies who you think will be around tomorrow, they are out there.
Some platforms provide more secure hosting solutions as an option which is useful for people operating in more sensitive industries such as Financial Services or Healthcare.
How much will it cost me?
These platforms aren’t for free you are probably starting at about £60-70k per annum for the platform, but that includes a fully hosted and supported 24/7/365 service. Cost savings come through reduced development and maintenance costs and you can now run with smaller teams and deliver an awful lot of capability. The platform gets really interesting if you start to make them your core development platform for new applications and for redeveloping existing solutions.
Extending Applications Using App Stores
Most platforms also have an App Store where you can find ‘pay for’ or free ‘community’ created apps and code samples which you can plug into your solution to accelerate your development. You will probably need this because although the out of the box solutions are comprehensive they do not cover everything and if you need to do something out of the ordinary you can bet that somebody out there already has a solution.
The App stores offered by the platform providers are of a varying standard, but the more established platforms have a fairly comprehensive offering. Also look for platforms with an active User community you can leverage and partake in, using these will save you many hours of head scratching. You also need to find a platform that has a comprehensive set of up to date training materials, ideally video based.
Most platforms offer multi device support either via web applications and responsive design templates or using separate Android or IOS apps. My focus so far has been more on the web apps side and I have been able to create solutions which work equally as well on a phone, tablet and desktop, but at times this can get a bit fiddly. Many of the platforms also provide support for the development of native mobile apps, should you want to go that way instead.
Who Is Using Low Code?
Interestingly the UK market seems to have been slower on the uptake of Low Code than some other countries such as Holland and Portugal. This expansion is partly because they have their own indigenous Low Code platforms, but nonetheless it shows that we may well be missing an opportunity, as our European colleagues clearly see things differently. Having said that the industry is now starting to take Low Code much more seriously.
Where to Use Low Code?
Low Code development is ideally suited to front end business applications used in a B2B client or company user context. If you are intending to use the platform as a high-volume consumer-based solution you will of course need to discuss scalability with the platform provider in some detail. Integration capability is generally good which means you can link to back end applications either point to point or via a service bus or other integration tool. Scheduled batch jobs can also be run within the platforms.
Low Code will effectively allow you to increase your capacity at a moderate cost without increasing your team size or relying on lots of offshore resource. Over time the cost of ownership of your systems should also come down because they will be more supportable and can easily evolve alongside the business.
However, don’t go thinking that you will be getting rid of your developers any time soon, you will need these guys to do the truly technical value-added stuff like integrations, plug ins to the Low Code applications and BI etc.
What will my developers think?
It’s always easy to be cynical about these things but I am convinced that this kind of development has now matured to a stage where it is highly usable.
Let’s be honest it is probably still not going to be a hit with purist software developers, partly because ‘it’s not the way we do things’ and partly because it will be seen as a threat. They will also see that there are constraints which will limit their design freedom, due to the tight knit framework provided by the platform.
The more sophisticated Low Code platforms provide an IDE with full debugging capability and this set up will be will feel very familiar to programmers. Likewise deployment follows a DevOps style approach which would be long and complex to build for yourself.
As mentioned earlier you are still going to need your Dev guys to do the techy stuff, but you can probably do this just with your core in-house team rather than to have to go out for additional resource.
In some cases, Low Code providers try to promote the use of Low Code tools by ‘citizen’ developers. That may be true for simplistic solutions but for the kind of solutions most of you are after you need people who know how to design and build an application and that capability most likely sits in IT.
I would position Low Code as a real productivity tool enabling you to push sophisticated robust and secure applications out to your users far more quickly and help bust those development backlogs that we all have. With Low Code you can make changes much more quickly with fewer bugs and deploy quality applications rapidly on a continuous basis to your end users or customers
I think that over time there is a real opportunity to adopt Low Code as your main development platform rather than for just ad-hoc discrete projects and reduce your reliance on traditional coded development.
In the early days you might want to use a partner company, but when the applications are built, they should be easily maintainable by your staff into perpetuity.
I will keep you posted as I dive even deeper into Low Code…