Scratch Changed My Perspective on Low-/No-Code Software Development Platforms (LCSDPs)

Do repost and rate:

Recently, I started watching Harvard's "This is CS 50" (an introductory course to computer science). I prefer the 2018 version to the 2023 version, since the former is a little more detailed and includes some things that explain later concepts and tools. The first lecture is on using Scratch (a low-/no-code graphical programming environment/language) to teach programming concepts to newbies, without also teaching them the specifics of a particular language (such as C or Python). While I am generally against using prebuilt toys (even educational ones) in a professional development environment for anything other than creating workable demos/models/wireframes (since they seem a bit Fisher Price to me), I can certainly see the advantages of using low-/no-code tools in this manner:

  • General software development/programming concepts are taught/learned, without being tied to a specific programming/scripting language
  • Students get to rapidly prototype their ideas and refine their designs, resulting in either executable programs or bugs that need to be fixed
  • The process of learning to develop programs is actually interesting, since it's not just dry theory alone, before getting to the point of creating anything executable (the thing we actually want to do).
  • Errors are mainly of a semantic (logical) nature, rather than syntactic, avoiding getting bogged down in minutiae. The focus is more on ordering steps correctly than on the implementation details or language-specific quirks of syntax. (Anything that bypasses issues relating to braces, parentheses, semicolons and significant white space is a good thing, IMO.)
  • Platforms such as Scratch and Snap! are pretty powerful, coming with a large toolkit of user-friendly puzzle pieces that snap together in order to allow the creation of pretty much any application (including games).
  • Platforms such as Scratch are extensible, allowing the creation of one's own functions, which can be built from existing puzzle pieces or custom-created ones.
  • Platforms such as Scratch (and Scratch Jr.) are accessible to anyone aged eight and up, significantly lowering the barrier to entry and making software development accessible to anyone whom owns a computer and has an Internet connection.

Since many development advocates (myself not included) are pushing for learning to write code being seen as as valuable as learning to read and write, I think Scratch suitably fills the gap as a step between laymen/newbies and professional developers using languages like C/C++. I also think that, ultimately, one shouldn't invest too heavily in low-/no-code development platforms. (If you want to do professional development, you will have to be able to write code in a language such as C/++, C#, Java, Python or something else at some point.) However, I will concede that low-/no-code platforms are not without merit in a professional development environment for at least three reasons:

  • Rapid application development (RAD) with regard to prototyping (possibly faster than with Python or another scripting language)
  • Demonstrating, explaining, learning or trying a new concept in an easily accessible way (particularly to non-coders, id est as other people in a business)
  • Getting non-developers to at least build some sort of application that does at least some of what they want regarding the particular problem they want it to solve. In doing so, they'll perhaps think more carefully about the nature of the problem and its solution, thus helping to clarify/formalise the design requirements and specification, rather than be vague and keep changing their minds, causing much frustration and time-wasting for actual (full-/high-code) developers.

COBOL/Logo 2.0?

Hey, at least it's not COBOL (a language undoubtedly designed by committee), right?

"Let's give non-developers a means of developing applications. What could possibly go wrong?"

Well, perhaps the fact that people generally don't know what they want until they have something and decide "that's not it" might give you a hint ...

I don't see it as a threat to me as a professional developer, since a limited set of prebuilt building blocks can only take one so far before experts/professionals are called in to do the job properly, to do what an LCSPD can't. (Ultimately, any language/tool has a finite limit on its core components, including Lego bricks. What makes them useful is the ability to combine them in adaptable, flexible and interesting ways to achieve the desired result. If they're well designed and useful, you don't even need a large number of them, as both Brainfuck and early C proved.)

Existing Low Code Software Development Platforms (LCSDPs)

This obviously begs the question, "What low-/no-code software development platforms (LCSDPs) exist out there and are any of them any good for real-world application development?". Let's see what we've got, shall we?

  • Well, obviously, there's Scratch (and Scratch Jr.), created by MIT. Scratch is intended primarily as an educational tool focusing on core development concepts as well as animation and games. As mentioned, it's complete enough that you can extend it with your own functionality in order to create just about anything. You probably won't see it used outside of an educational institution, though ...
  • A visual programing language based on Scratch, with many of the same goals/guiding principles
  • Mendix: Useful for prototyping and building mobile-first applications. "Mendix provides tooling for testing, building, and deploying applications through a low-code software platform." Mendix supports both private cloud and on-premises (offline) deployment.
  • VisionX: Useful in the domain of data science and engineering
  • Useful for building applications that do business process mangagement (applications that help businesses organize and optimize their business processes)
  • OutSystem: Useful for rapid application development. "Real-time performance dashboards and strong security measures are some of the prized features of the platform, along with the capacity for rapid development." Offers a limited "free forever" plan, which I think is worth investigating. The development environment looks very much like a mind map or flow chart (think Dia or yEd).
  • Quickbase: Useful for creating workflows and finding solutions to bottlenecks.
  • Zoho Creator: Zoho is an MNC that offers a number of business solutions (including email and a CRM tool). Zoho Creator is apparently a "minimalist and intuitive visual tool for low-/no-code development". Use it to build cross-platform Mobile-/Web-based applications.
  • KiSSFlow: Primarily used for process/workflow management, KISSFlow uses a "rule-based model [that] removes the need for custom coding, letting you add conditions to customize your workflow".
  • Salesforce Lightning: Anyone who has used or researched CRM software is likely familiar with Salesforce. "Salesforce Lightning is a component-based application development framework. The components in this scenario act as low-code visual pieces for app building."
  • Nintex is useful as "a low-code platform for process management and workflow automation".
  • Acceleo: This is a plugin for the popular Eclipse IDE. It generates Java/PHP/Python code from UML diagrams and other modelling languages. I'll likely give this one a look at some point.
  • Useful for generating databases and Websites
  • It's an open-source platform offered by the Eclipse Foundation (which makes the Eclipse IDE). With it, development "is largely replaced by a descriptive modeling of the desired software, while allowing developers to integrate their own source code". That description certainly inspires me to try it.
  • Spring Roo: Roo is "an open-source code generator for Spring Framework-based Java applications", using AspectJ mixins.
  • Visual LANSA: Use a visual IDE "to create desktop, web, and mobile apps, faster, easier, and at a lower cost than traditional methods". It allows "professional developers to create applications much quicker than traditional coding and with an amount of control much higher than usually seen in low-code platforms". Visual LANSA works on Windows and the Web.
  • JotForm: Cloud-Based/SaaS drag-and-drop multi-platform for building mobile applications. Targeted at small to large businesses. Has a "free forever" plan.
  • Useful for creating business intelligence (BI) and workflow automation/management applications, with no per-developer, per-user or per-application fees (flat fee plans, starting at $ 1 500 per month). Defaults to no-code, but allows for the use of low-code or even full-/high-code development. If it weren't for the high monthly price, I'd give it a try.
  • UI Bakery: "With UI Bakery you can visually build web apps for internal usage on top of existing data sources in a couple of minutes. Add code or custom components when you need additional control over your business logic." A trial version is available and plans start at $49 per month for individual use. Browser-based (Chrome and Firefox on Mac and Windows)
  • Strikingly: Web-based no-code platform for building Websites, similar to SquareSpace and Wix, the sort of clumsy/clunky toys I detest. (It's specifically targeted at non-developers). Offers a fourteen day trial version. Plans start at $8 per month for individual/limited use, billed annually. It strikes me as strikingly stupid and irritating, based on what I have read.
  • Retool: Rapidly build internal tools for leveraging existing databases and REST/GraphQL APIs, switching to writing custom code (in JavaScript) anywhere it is required. Offers a free version for developers, with plans starting at $10 per month per user. It offers the option to self-host on premises. I think this is another one worth investigating.
  • Other Options: The above list is neither definitive nor exhaustive. Feel free to find and try more LCPDs, should any of the above not meet your needs.

Disclaimer

I haven't used any of these LCSPDs, so cannot write a recommendation for any of them or state which one is best for a particular domain. However, I am certainly open to trying some of them, for the next time I have to build a prototype or demonstrate a concept/solution to management. Code generation tools are particularly useful, since they speed up the step of converting requirements and specifications into working applications, provided someone (not necessarily a developer) creates the relevant UML, a skill/task that can be learned by technically inclined non-developers in a DevOps environment

It's important to keep in mind that not every LCSDP will have all/exactly the functionality suitable to solve the particular problem(s) to which you might want to apply one, just as not every programming language can be used for every domain. YMMV, but pick one, try it and see how you fair. You might have to resort to extending a base platform or app with your own code/functionality or learning and using a specific programming language for added flexibility. At the very least, you'll have a base with some functionality that you can convert/translate to whatever language you choose. Frankly, that's far better than starting completely from scratch each time, right?

Into the Great Blue Yonder

If this is something in which you're interested or want to learn application/software development but have no idea where to start, I recommend trying Scratch before transitioning to something else, either another LCSPD (see the links in "Resources") or, better yet, an actual programming language such as C/++, Nim or Python. (After all, Scratch was literally designed and created so that a child can make something fun with it and share it. How hard can it be?) There are a number of books on doing development in/with Scratch (particularly for games), should you care to find them. Perhaps I might write a brief crash course/tutorial on Software Development Concepts Applied in Scratch (and publish it on LeanPub or Unbound) if there's sufficient interest.

Thumbnail image: Poster's own artwork.

Regulation and Society adoption

Ждем новостей

Нет новых страниц

Следующая новость