[HN Gopher] Low-Code Programming Models
       ___________________________________________________________________
        
       Low-Code Programming Models
        
       Author : mitchbob
       Score  : 80 points
       Date   : 2023-09-29 16:25 UTC (6 hours ago)
        
 (HTM) web link (cacm.acm.org)
 (TXT) w3m dump (cacm.acm.org)
        
       | runningmike wrote:
       | Low or nocode is imho not the holy grail for solving business IT
       | problems. Low code or mda like tools have since 1980 be promoted
       | using several names. have, e.g.:
       | 
       | Low code tooling No code tooling Model Driven Engineering (MDE)
       | Model Driven Design (MDD) 4GL tools
       | 
       | Low code tools are not strong on versioning and dealing with
       | multiple parallel development tracks and teams simultaneously.
       | Most tools are in fact based on a big design upfront paradigm,
       | like an overall data model. Versioning on models, meta data and
       | data of all created and generated software assets is poorly
       | supported, if supported at all. Common practices seen in mature
       | agile software development tools using micro services paradigms
       | and advanced distributed version control systems are often
       | lacking in the new low-code MDA family of tools. In large
       | companies it is not uncommon to encounter models with hundreds
       | (or even thousands) of entities / classes. That kind of models
       | not only doesn't help with developing software faster and more
       | cost-efficiently but even has an adverse effect.
       | 
       | Low code tools have a strong focus on initial productivity gain.
       | But a continuous fast changing business context with changing
       | requirements requires an approach and toolset that is suited for
       | giving long term productivity benefits.
        
         | eschneider wrote:
         | > Low code tools have a strong focus on initial productivity
         | gain. But a continuous fast changing business context with
         | changing requirements requires an approach and toolset that is
         | suited for giving long term productivity benefits.
         | 
         | The best "low code" tools absolutely meet this requirement and
         | best of all, don't _feel_ like programming to the users.
         | Spreadsheets are the most obvious example.
        
       | wizofaus wrote:
       | If ChatGPT is gonna disrupt any technology you'd think it might
       | be low code platforms.
        
         | rangledangle wrote:
         | It's really sad, because almost all of these platforms are
         | code-averse. They sell the idea that "code is the hard part".
         | Business folk eat it up.
         | 
         | Then you sit there like an idiot dragging blocks around when
         | you could have just asked GPT to bust it out in code in
         | seconds.
         | 
         | They're so bad for source control and documentation, too.
        
           | wizofaus wrote:
           | Sure but if it's just ChatGPT spitting out code that the
           | users don't really understand I can't see it being a workable
           | solution either. What I'm thinking is that low-code implies
           | something like natural language pseudo code that LLM tech is
           | able to accurately interpret and turn into executable code.
           | Of course the "accurately" part is still something of an
           | issue, but usually with a few rounds of "no that didn't work"
           | or "that's not what I meant" you can likely get what you
           | actually intended.
        
       | sremani wrote:
       | Low Code suffers from same problems DSLs suffer from. You need to
       | nail the abstractions down to be proficient in getting systems up
       | and RUNNING.
        
       | mlhpdx wrote:
       | I have been doing a lot of work with AWS StepFunctions lately,
       | everything from replacing cron jobs to implementing HTMX
       | backends. I think StepFunctions is an interesting case study (I'm
       | not really familiar with other offerings, other than spending
       | some time with the block-based programming like Scratch and
       | MakeCode).
       | 
       | To build solutions I have to use the Amazon States Language,
       | which is a learning curve and being as charitable as I can a
       | royal pain in the ass. Ultimately I end up with a JSON file that
       | is a "giant, flexible config file" for their runtime.
       | 
       | On the plus side, solutions using it are very nearly zero
       | maintenance. No runtime updates, no package updates, no manual
       | scaling, etc.
       | 
       | Another plus, it's zero cost when not in use. No VMs I have to
       | pay for hourly or monthly.
       | 
       | The downsides (for me) are obvious: It's difficult to learn; It's
       | very restrictive, and solutions often end-up needing some aspect
       | of more flexible services like Lambda or Fargate (containers)
       | when end-up adding cost and maintenance; It's proprietary and
       | there is nothing I can use elsewhere (no other company support
       | ASL as far as I know).
       | 
       | Overall, though, I love it. Why? I despise having to choose
       | between unpatched systems and the drudgery of constant patching.
       | With StepFuctions I don't have to choose.
        
         | rangledangle wrote:
         | I was so stoked to build stuff this way; I had the same
         | sentiments about the learning curve, but overall it seemed like
         | an amazing tool and pretty fun.
         | 
         | The problem is the people around me thought it was too
         | difficult, and couldn't see long term. So we implemented a low
         | code solution and now everything is in there and it's a
         | mess/nightmare. I hate my work now, and everything we build is
         | tightly coupled to this spaghetti platform that will inevitably
         | decide to raise it's prices on us and we will have no recourse.
         | 
         | Job hunting has been tough too, because very few places have
         | done this, so they ask "what have you been working on?" and I'm
         | basically setting record times for ending interviews if I tell
         | the truth.
        
       | TekMol wrote:
       | The problem with low-code is the same as with outsourcing code on
       | UpWork:
       | 
       | Security
       | 
       | You get something that works. But how do you know there is no way
       | to:
       | 
       | 1: Alter the code from the outside
       | 
       | 2: Access parts of the DB one is not supposed to access
       | 
       | Those can only be avoided by a programmer who knows about all the
       | weird edge cases that might lead to 1 or 2 and how to write a
       | complex system in a way that is structured to make bugs unlikely.
        
         | wonderwonder wrote:
         | A good low code platform will account for this and have role
         | and access management baked in
        
         | icoder wrote:
         | I guess this can be said about your entire stack, OS,
         | webserver, used libraries, etc.
        
         | Jtsummers wrote:
         | (2) is not a particular issue with low-code, it's just a
         | problem for everyone. I'm in a "high-code" environment and they
         | still managed to fuck up data access controls. You have to
         | bring on people (or give them authority) who understand how to
         | secure your data. Afterwards, high-code or low-code you're
         | going to be ok (maybe not great, but ok).
        
       | dang wrote:
       | There was a watercooler-style thread about this yesterday:
       | 
       |  _Tell HN: Enterprises spend 10x more to build no-code solutions
       | than coded ones_ - https://news.ycombinator.com/item?id=37689282
       | - Sept 2023 (178 comments)
       | 
       | But the current article is quite substantive so we won't treat it
       | as a follow-up the way we normally probably would (https://hn.alg
       | olia.com/?dateRange=all&page=0&prefix=true&que...).
        
       | hcarvalhoalves wrote:
       | I'm currently using a low-code tool for prototyping an app [1]
       | together with a team that has no professional software engineers
       | (although there are researchers capable of programming in
       | Python/R).
       | 
       | I found the tool super easy to use and we managed to have a
       | functional app in one afternoon, but when they tried to use it
       | themselves it wasn't as intuitive - the tool works best if you
       | already posses some intuition of relational model, CRUD patterns,
       | etc. Without this intuition the other members were having a hard
       | time understanding how to better structure the data for the app,
       | and started trying to "hack" it to make the app work the way they
       | expected instead of working with the abstractions available.
       | 
       | [1] http://appsheet.com
        
       | RajT88 wrote:
       | > Low-code enables domain experts to become citizen developers.
       | 
       | I have yet to see a single "citizen developer" successfully
       | building stuff using low-code/no-code solutions.*
       | 
       | > At the same time, low-code platforms should also strive to make
       | pro-developers (professionals with an education or career in
       | software development) more productive.
       | 
       | This is mostly what I see.
       | 
       | Occasionally, I see real developers sticking with the low-
       | code/no-code solutions far beyond what it should ever be used
       | for, to the detriment of the product.
       | 
       | What I do see a lot of is people with a long history in the
       | business aspect being brought in as program managers, QA testers,
       | UI designers, etc. They are generally very successful in those
       | areas.
       | 
       | *VB6 and Visual FoxPro I have seen business people building
       | production apps with. You may not consider those to be "real"
       | low-code/no-code solutions, but... I've seen business people
       | teaching themselves those to build their own stuff.
        
         | threatofrain wrote:
         | I've seen designers build pretty good websites without touching
         | code.
        
           | sarchertech wrote:
           | My mom was building pretty good websites in dreamweaver
           | nearly 25 years ago without touching code.
           | 
           | As soon as something went wrong though--watch out.
        
             | RajT88 wrote:
             | Exactly the problem with low code tools. As soon as you
             | have a small deviation from the framework (be it an issue
             | or just a wonky requirement) you are stuck.
        
         | amilios wrote:
         | Not sure if this counts, but many successful games have been
         | made with Game-maker-style tools, which I think would be
         | classified as "low-code". E.g. Undertale
        
         | Karrot_Kream wrote:
         | Excel sheets and now Airtable bases are another way to build
         | apps I see pretty often. The problem is when these things
         | outgrow their original platforms there's a huge step in effort
         | up from "simplify the formula/query" to "ingest all the data
         | into a database then write a view on top". My own wish for low-
         | code tools is to cross this chasm.
        
       | rahkiin wrote:
       | I am considering/designing/PoCing implementing a low-code (visual
       | programming like Unreal) system for a specialized ETL
       | (algorithmic) system. Both E and L would be nodes and the target
       | audience mostly uses math in the T.
       | 
       | Great advantage seems to be an ability to schedule jobs based on
       | algorithm needs, as everything is known in the graph. I also
       | think we can give some guarantees like infinite loop prevention
       | by analysing the graph. An alternative I see is a textual DSL
       | which may be even more work to implement and user discovery
       | becomes harder.
       | 
       | I'd love to talk and discuss about this with others; it is hard
       | for me to determine whether this is the way to go with so many
       | opinions in either camp.
        
       | zubairq wrote:
       | I remember after coding in C++ for 5 years and then doing Java
       | and thinking it was like low code as java was so easy because of
       | the memory management and gc
        
       | danielvaughn wrote:
       | I've long been interested in low-code, because it's one of those
       | things where the benefits _seem_ obvious, but become less obvious
       | the more you think about it.
       | 
       | In some cases the benefits are plain to see. For instance, if you
       | needed to represent a squiggly line in SVG, the natural movement
       | of a user's hand guiding a digital pencil is going to be far
       | superior than writing out each x/y position in a vector path.
       | 
       | But other use cases aren't so clear, and in fact, many tasks
       | could be made far more efficient with a textual interface.
       | 
       | I think the reason people assume that code is time-consuming or
       | complex, is because historically it's been used to solve complex
       | problems that non-technical users don't understand. So in other
       | words, they don't understand the problem domain. My theory is
       | that if they understood the problem domain, then they could
       | understand any formal syntax dedicated to the domain.
       | 
       | As an example, the following pseudo-code:                 begin
       | dishwashing:         gather(plates)         sink.load(plates)
       | each plate(rinse)         each plate(dishwasher.load)
       | dishwasher.on()       end dishwashing
       | 
       | Everyone understands the problem domain (how to wash dishes), so
       | even though someone may be unfamiliar with historical programming
       | conventions and syntax, they should be able to grasp what the
       | code does.
       | 
       | It's something I'm exploring with this language I've been
       | building called Matry: https://matry.design.
        
         | badtension wrote:
         | Tangentially I want to mention that rinsing dishes before
         | running the dishwasher is a known anti-pattern. The first
         | washing cycle is exactly that - a rinsing cycle. I know this is
         | off-topic but saving water is always a good idea.
         | 
         | In my experience visual tools like RoseRT can quickly turn into
         | an obstacle. I think it's super important to not only know what
         | the non-code solutions may be good at but also keep the
         | solution limited or at least be prepared to go back to code if
         | the problem domain is complex enough.
        
           | replwoacause wrote:
           | Not according to the condescending maintenance guy who was
           | replacing my broken dishwasher at the apartment I lived at
           | years ago. You should have been there for THAT lecture.
        
             | badtension wrote:
             | Just nod and smile.
        
           | vector_spaces wrote:
           | I'm always rubbed the wrong way by folks showing up with a
           | "well, actually" over this point about dishwashers because
           | this advice only holds in general if you're using a recent
           | model, which not everyone can afford -- in fact, probably
           | most people can't, so it becomes a question of accessibility.
           | True, it would reduce your costs over the long run to use
           | something more efficient -- but one of the insidious
           | realities of being poor is that you can't afford to think
           | long-term. If it's between paying my rent this month, and
           | maybe saving an extra $15/month over the long term, sorry,
           | but I'm going to make sure there's a roof over my head.
           | 
           | So if you're like me and have always lived in rentals with
           | older model dishwashers for much of your life, and find
           | yourself going crazy reading advice like this all over the
           | internet despite making sure the filter trap is clean and
           | taking full advantage of dishwasher pre-rinse cycles and even
           | adjusting the temperature on your water heater and
           | experimenting with different detergents, don't feel too bad
           | -- dishwashers become less efficient over time for the most
           | part, and hand-rinsing beforehand becomes a necessity. So go
           | ahead and hand-rinse beforehand if you need to. It's not an
           | anti-pattern unless you have a newer model.
        
             | dragonwriter wrote:
             | Even with a fairly recent model I've occasionally had food
             | debris from un-pre-rinsed dishes redeposited (and firmly
             | so, with a heated dry cycle) on _other_ dishes.
        
             | badtension wrote:
             | I've been washing dishes by hand my whole life and just
             | recently got a dishwasher. When washing by hand pre-rinsing
             | and soaking is essential so I kept doing that even after
             | getting the machine, only recently discovering that I am
             | wasting water this way.
             | 
             | Thanks for the tip about the old dishwashers.
        
             | sorokod wrote:
             | >one of the insidious realities of being poor is that you
             | can't afford to think long-term
             | 
             | aka Sam Vimes "Boots" theory
             | 
             | https://en.m.wikipedia.org/wiki/Boots_theory
        
         | WalterBright wrote:
         | There's a bug in it. Forgot to add detergent :-)
        
           | danielvaughn wrote:
           | I love that HN has pointed out two bugs in my trivial made-up
           | example, lol.
        
             | WalterBright wrote:
             | If you hadn't made the code self-evident, I wouldn't have
             | found the bug!
        
         | OkayPhysicist wrote:
         | The key problem that creates "low" or "no" code products is a
         | pattern that shows up in a lot of technical fields: non-
         | technical people run into the first hurdle, and assume it
         | represents the majority of the difficulty. In software, this is
         | sourcecode syntax. Somebody who's never written a line of code
         | in their life sees source code, can't read it straight away,
         | and assumes "We pay the software developers lots of money
         | because they can read the cryptic runes" and goes on to pitch
         | some "revolutionary solution" that eliminates this very minor
         | hurdle, assuming that it will make the whole thing easy.
         | 
         | You see the same thing in discourse about science and math: "If
         | we could just eliminate all the jargon and syntax, anybody
         | could understand a scientific paper". In all cases, they're
         | wrong, of course, since the syntax and jargon are such
         | negligible hurdles that by the time someone is technically
         | capable enough at the actual problem they'll come as second
         | nature, but the non-technical folk don't ever reach that level
         | of understanding.
         | 
         | Then this solution gets sold to other non-technical people,
         | who, falling into the same trap, integrate it into their
         | workflows.
        
           | danielvaughn wrote:
           | Yep, they misunderstand where the complexity lies.
        
       | intrasight wrote:
       | "Low-code is about creating instructions for a computer to
       | execute or interpret. These instructions form a computer program,
       | typically in a domain-specific language (DSL). For instance, low-
       | code is often based on search-based program synthesis, and
       | synthesis usually targets a DSL carefully crafted for the
       | purpose."
       | 
       | If that's the definition (and I agree that it is) then 90% of my
       | code is low code, as that's how much is XML, XSLT, and SQL. In C#
       | .NET 8, another 5% is Linq which is a DSL that I consider low-
       | code.
       | 
       | I have friends who work for a company that sells a million dollar
       | low-code data platform. Business is good.
        
       | TedDallas wrote:
       | Low code has been a thing in ETL data integration space for a
       | long time. Anecdotally the most consternation I have experienced
       | lately has been supporting buggy low code implementations which
       | seem to becoming worse and not better over the last 20 years or
       | so.
        
       | sien wrote:
       | Is there an open source Low-Code system that works?
       | 
       | Where I work we currently have 2 low code tools for automating
       | internal business processes.
       | 
       | Now a new executive has appeared and his answer to two of these
       | systems is to get a third. This time it will be MS PowerApps.
       | 
       | It seems that Low-Code is all high cost. The costs for licencing
       | these platforms is 1-2 developers per year for our organisation
       | of roughly 800 people.
       | 
       | No doubt making applications on the web that work with SAML
       | integration is harder than it could be, but the low-code tools
       | lack of versioning and the ability to do automated testing is
       | poor. Especially given the licencing costs.
       | 
       | Even a good web based GUI for drawing UI's would be useful. But
       | cost really is a factor.
       | 
       | Visual Basic was a low code tool that did enable non-coders to
       | create applications that were useful. It appears that the current
       | crop of low-code tools are not near VB's ease of use or utility.
        
         | wanderingmind wrote:
         | Budibase is pretty good and helps you build simple web based
         | solutions that can integrate with a wide range of data sources.
         | Definitely worth checking out.
        
         | rubenfiszel wrote:
         | you should try windmill.dev, semi-technical folks can use the
         | webeditor and the built-in versioning while more senior folks
         | can keep their IDE and version directly from github/gitlab.
         | 
         | The UI part is drag-n-drop;
        
       | atoav wrote:
       | IMO the problem with low code is, that the hard part about
       | solving most problems isn't usually the way you write or execute
       | it.
       | 
       | The hard part is avoding weird edge case logic errors, race
       | conditions, all these things good programmers will avoid by
       | having an intuition of complex systems with state spread around.
       | _This_ is what you pay software people for, and not for the
       | ability to crank out text in languages that look cryptic to
       | commoners.
       | 
       | Now I do think that such low code environments can provide
       | benefits in specific situations (e.g. when you use it as a highly
       | flexible "config file" within the framework of another system
       | that catches all those forbidden states).
        
         | anonzzzies wrote:
         | > highly flexible "config file"
         | 
         | ... which will almost always trigger Greenspun's tenth rule
        
           | albertzeyer wrote:
           | Never heard of this before.
           | 
           | https://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule
           | 
           | > Any sufficiently complicated C or Fortran program contains
           | an ad hoc, informally-specified, bug-ridden, slow
           | implementation of half of Common Lisp.
        
         | hyperthesis wrote:
         | There's a spectrum of difficulty (of problems, not just within
         | them as you note). Low code helps the low end.
         | 
         | I'm surprised TFA implies spreadsheets aren't still dominant.
        
         | ethbr1 wrote:
         | The corollary of this is that low-code is best when a reusable
         | component for a well-defined problem space exists.
         | 
         | As soon as you drop into customized complexity, you should be
         | building new low-code components with actual code.
         | 
         | Which I think is the main reason low-code is popular in the
         | API-to-API SaaS space: actions are limited and well-defined.
        
           | hinkley wrote:
           | None of these solutions are low-code though.
           | 
           | Low code is using post-it notes to run your project. What
           | "low-code" means is "someone else's code" and we already have
           | tons of that, in the form of open source libraries and
           | frameworks that avoid implementing tons of logic that is more
           | or less idiomatic.
           | 
           | This also includes SaaS solutions, where _I_ am not running
           | any code at all. You are, and I 'm paying your for it. All I
           | get are a palette of decisions I can make to alter how the
           | product runs. Just like a YAML based solution.
           | 
           | It's more snake oil, of an exact vintage that we already had
           | in the late 1980's. And if you don't know what we called it
           | then, it's because it was such a titanic flop that only
           | computer history buffs know. An evolutionary dead end.
        
       ___________________________________________________________________
       (page generated 2023-09-29 23:00 UTC)