Comment What problem are we solving with no/lo code? (Score 1) 197
With no/lo code, the question to ask is what problem is it trying to solve?
If the problem is enabling the citizen developer, there’s definitely a long way to go. The difficulty of the problem can be seen in that there are no citizen electronics designers. Even if you bundle up concepts like a timer circuit (with its transistors, resistors, and diodes, etc.) into an IC (i.e., a 555), you still need to know how to control it and include the surrounding components needed to use its timing capabilities. You can’t just (yet) connect it with other things as if it were lego.
For example, in Electronics All-in-One for Dummies (3rd edition, p91), there is a coin toss circuit. In essence, it flashes two different cooured LEDs, one for each side of the coin, for some period, before stopping on one of the colours. The circuit requires additional resistors and capacitors, in addition to the two LEDs, and a push button in exactly the right location to trigger the circuit. There is simply no way for a citizen designers to know that that’s what’s needed without a strong foundation in electronics.
Now, a solution might be to bundle up bigger circuits like these, but soon you have hundreds and then thousands of circuits in the marketplace and the problem is one of finding the one you want. Then, if you only find one that’s close, but not exact, you have the problem of how to modify that circuit to meet your needs. For example, what if you had a three-sided coin? Or wanted to extend it to 6, or 12 or 20 for different sided dice? Without that strong knowledge, the citizen designer has no chance.
If the problem is faster development for developers, a fundamentally important problem remains: What exactly do you want me to build? Just because you can build something quickly, doesn’t mean you’re building the right thing.
If you’re building something simple, then you can probably get away with the inevitable iteration that comes from a ‘build it and test it to see if it’s right’ approach. If it’s something complex, like core banking, then it’s not feasible to build it in this way.
Returning to the citizen developer, if we do have a decent no/lo code tool, and it has a rich marketplace, then we can solve part of the problem. If the citizen can describe what they want with sufficient clarity, then they may surface a module that does much of what they want. However, as with the electronics analogy, if the citizen developer wants to modify the module in some way, they will need a strong background in programming and application architecture in order to unpick, modify, and restitch-up the module in the way they want. I’m sure you’ll agree that this is a tall order without that knowledge.
The problem is actually with the requirements
What we need is to take a different approach to solving the problem of fast (and right) development. We can either focus on the building tools, or on the requirements capture tools.
The problem remains in software engineering that it is the only one of the five main disciplines that does not have a universally agreed process and visual blueprint for its products. In the absence of a visual blueprint, we have to rely on written requirements. But, ask yourself: Have you ever heard an engineer say ‘Absolutely! A thousand words is way better than a picture.’?
So, the real problem, in my view, is in the requirements. The solution is probably along the path of executable requirements. But I don’t mean code generation. We all know that it, at least at the moment, is rife with problems. I mean code deployment.
I’m working on a project with the express goal to solve the executable requirements problem. I’m not necessarily aiming it at the citizen developer, but more the intermediary people, including business analysts, business architects and UI designers. People in these roles generally have the necessary structured thinking to think through and design complex applications. The next step will be to make it relevant for the citizen developer.
If you’re interested in having a chat, reach out here: https://www.linkedin.com/in/cr..., or email me: craig.errey[at]solvegroup[dot]com[dot]au
If the problem is enabling the citizen developer, there’s definitely a long way to go. The difficulty of the problem can be seen in that there are no citizen electronics designers. Even if you bundle up concepts like a timer circuit (with its transistors, resistors, and diodes, etc.) into an IC (i.e., a 555), you still need to know how to control it and include the surrounding components needed to use its timing capabilities. You can’t just (yet) connect it with other things as if it were lego.
For example, in Electronics All-in-One for Dummies (3rd edition, p91), there is a coin toss circuit. In essence, it flashes two different cooured LEDs, one for each side of the coin, for some period, before stopping on one of the colours. The circuit requires additional resistors and capacitors, in addition to the two LEDs, and a push button in exactly the right location to trigger the circuit. There is simply no way for a citizen designers to know that that’s what’s needed without a strong foundation in electronics.
Now, a solution might be to bundle up bigger circuits like these, but soon you have hundreds and then thousands of circuits in the marketplace and the problem is one of finding the one you want. Then, if you only find one that’s close, but not exact, you have the problem of how to modify that circuit to meet your needs. For example, what if you had a three-sided coin? Or wanted to extend it to 6, or 12 or 20 for different sided dice? Without that strong knowledge, the citizen designer has no chance.
If the problem is faster development for developers, a fundamentally important problem remains: What exactly do you want me to build? Just because you can build something quickly, doesn’t mean you’re building the right thing.
If you’re building something simple, then you can probably get away with the inevitable iteration that comes from a ‘build it and test it to see if it’s right’ approach. If it’s something complex, like core banking, then it’s not feasible to build it in this way.
Returning to the citizen developer, if we do have a decent no/lo code tool, and it has a rich marketplace, then we can solve part of the problem. If the citizen can describe what they want with sufficient clarity, then they may surface a module that does much of what they want. However, as with the electronics analogy, if the citizen developer wants to modify the module in some way, they will need a strong background in programming and application architecture in order to unpick, modify, and restitch-up the module in the way they want. I’m sure you’ll agree that this is a tall order without that knowledge.
The problem is actually with the requirements
What we need is to take a different approach to solving the problem of fast (and right) development. We can either focus on the building tools, or on the requirements capture tools.
The problem remains in software engineering that it is the only one of the five main disciplines that does not have a universally agreed process and visual blueprint for its products. In the absence of a visual blueprint, we have to rely on written requirements. But, ask yourself: Have you ever heard an engineer say ‘Absolutely! A thousand words is way better than a picture.’?
So, the real problem, in my view, is in the requirements. The solution is probably along the path of executable requirements. But I don’t mean code generation. We all know that it, at least at the moment, is rife with problems. I mean code deployment.
I’m working on a project with the express goal to solve the executable requirements problem. I’m not necessarily aiming it at the citizen developer, but more the intermediary people, including business analysts, business architects and UI designers. People in these roles generally have the necessary structured thinking to think through and design complex applications. The next step will be to make it relevant for the citizen developer.
If you’re interested in having a chat, reach out here: https://www.linkedin.com/in/cr..., or email me: craig.errey[at]solvegroup[dot]com[dot]au