Where Low Code and No Code actually work
One theme I keep seeing consistently when people talk about successful projects based on LCNC solutions is that successful projects aren't ACTUALLY based on these platforms.
I wrote a post recently about why LCNC isn't really good for citizen developers and these stories of "successes" really just back that up.
How can a "success story" prove that LCNC doesn't work in this sphere you ask? And I suppose the answer to that depends on perspective. These stories are success stories, and they are success stories for LCNC AND they are even traditionally being used by people with little or no prior development experience. Sounds like a clear cut win, right?
However, the common thread is that these projects either never went live on the LCNC platforms or they were forced to rewrite after the fact. Companies in both groups required the hiring of real developers to come in after the fact and write the final solutions in traditional languages and frameworks.
Where the LCNC fit in and works well is prototyping. You may be able to prove out a concept in such a platform first, and do so MUCH faster than you would be able to otherwise. Heck, you may even be able to get a small business off the ground and get funding first. Which is a real plus.
Ignoring some overly simplistic examples, ALL of these success stories ran into limitations forcing them to pivot away from the very platforms they credited with their success.
And, while it would be remiss of me to simply write off why they credit LCNC with their success, I think that these success stories just "muddy the waters" and lead people to believe that these solutions are a silver bullet.
The reality is that software development and software engineering are about a lot more than spitting out code which does a thing. It is about understanding what that thing does and how it does it so that you can write tests to verify that it does the thing correctly and that future updates do not interfere with it's ability to do that thing. It is about writing that thing so that it does it's job efficiently enough (to whatever metric is important to your business) so that it doesn't crash, or ensuring it can scale if it can't. It is about understanding how your design decisions will affect your future projects and your past changes before you start writing them.
Overly generalized tools don't do these things. And they can't. At least, not feasibly. And if they could, well, it would just mean that the same advantages would be available to your competition, thus eliminating any competitive advantage in using the tooling in the first place.
So, what it means is that these niche areas are where tradition software development will still bring differentiation. And ultimately, it is why most successful products which use LCNC will only use it as a stepping stone. If you're smart, LCNC will show you the value software can bring. And it can help you solidify your vision before the real work begins.
All of that being said, there is one other place where LCNC makes a ton of sense; ecosystem applications. These are scenarios where you're building an app within an existing ecosystem. Typically this would be done by a partner, a particularly savvy customer or perhaps even a services or support team member to expand upon an existing offering.
In these cases, the scope of the application is already limited by the platform. And there is a real team of developers who has a vested interest in your success beyond simply using the tools who need to worry about how reliable and performant the tools are for you. Otherwise you won't adopt them, and then in turn may either not help sell their solution or not offer any tangible benefit for the efforts.
But, this is a double edged sword. My experience is that companies which make these tools also have a tendency to foist them on internal teams as well. And that leads to a decrease in the technical proficiency of your teams. You tend to end up with one or two teams loaded with skilled developers, and the other product teams just wither away.
LCNC is, after all, not a strategy aimed at developers (aside from maybe prototyping or helping with more menial tasks). To keep developers skilled up and proficient they need to be regularly working with REAL programming languages and Platforms which extend beyond one company's niche use case.
All of which doesn't happen unless your "ecosystem" is something as broad as Apple's App Store, or the Google Play store. Most other ecosystem don't have enough scope to keep developers interested and don't offer broader career opportunities.
Partners make some or all of their business off of your Platform, so they are willing to invest in skilling up their to buffer their own business. Skilled customers are willing to learn for their own competitive advantage and Support and Services often need solutions supported by the core development team without the learning curve associated with onboarding a full-fledged developers.
So, outside of these niches, it is hard to see a world where low or no code thrive.
My conclusion is not that they are a waste of time/money. But rather that the scope of their useful is FAR exceeded by the claims.
Comments
Post a Comment