Quick guide about software engineering (not only) for low code / no code developers
Originally published at https://zoltansimon.me
The promise of Low-Code / No-Code platforms is simple. Create apps and bypass IT bottlenecks without needing to know what's under the hood. Despite the many layers of abstraction, you are on the journey to be a software developer creating applications to ease daily life in business. You might have received the title No-Code Developer or Citizen developer. Welcome to the world of software engineering.
Software engineering is yet another professional craftsmanship with rules, practices, tips and tricks and tools. You might think the whole point with Low-Code / No-Code is that you can ignore the many annoying IT-related things. But remember, you just have switched one element from the entire picture, a tool by choosing the path of Low-Code / No-Code. The software you produce many will depend on, and they expect the same experience and quality as they used to. A secure, reliable, well-performing application that is easy to extend, maintain and a joy to use.
Start with a quick recap from my programming teacher to set the scene:
A computer is following your instructions, not your wishes. The only valid measurement of code quality is WTFs/minutes.
THE INFAMOUS SOFTWARE DEVELOPMENT LIFECYCLE - SDLC
As in every profession, software development also has the barebone sequence of activities to ensure consistent production.
To create great software, you repeat these steps all the way down from product vision to day-to-day coding.
Atom comes from the word ἄτομος in greek and means indivisible.
There is also an essential concept in software development that cannot be broken.
There might be a difference in priority, size and complexity, but these steps are always there. The key is not skipping one or two with the illusion of saving time and/or money. You need all of them as an Atom to succeed. Splitting an atom is possible, but there will always be dramatic consequences. Here are the most common ones:
Here is a brief checklist to be better with these cycles:
You can Google about Agile software development, Behaviour Driven Development (BDD), Test-driven development (TDD), Domain-Driven Design (DDD) to learn more.
Recommended by LinkedIn
ALGORITHMS ARE THE VERY HEART OF PROGRAMMING.
The nerdiest part of software engineering is working with algorithms, and honestly, I love this part the most. It is basically applied math - where terms like Set theory, Category theory, Graph theory, B-Tree traversal flies around. But before you get dizzy, here is the thing: Most of the time, you will optimizing, automating business processes. These processes can be handled with a simple model, the Input-Output machine (I/O'mat)
Your application takes Inputs:
Data collected from another application. Then you have to do something with the data. Process it, aggregate it. Sometimes your machine has to remember (Store) what happened earlier to compare or collect information through time (State) Finally, you need to present it (Output) somehow.
Every process can be dismantled into these small machines working together. You can think of a form to fill out; a report to send an I/O' mat is the way to go.
The great thing with this approach you split a more significant problem (a process) into smaller chunks that you will be able to solve one by one. Another benefit is that you can focus on the Data flow, the essential aspect of the problem.
You can start the work by defining the Inputs and Outputs, the interfaces that will determine what and how you have to create to collect and validate the data. (Fields on the form, the columns in Excel, the x-y axis of a chart). With these, the data processing part will be a peace-of-cake exercise ;)
You might have heard the expression API first or Contract first from developers - Here you go, you've just learnt what they means!
SECURITY BY DESIGN? WHAT THE HECKS ARE THE NON-FUNCTIONAL REQUIREMENTS (NFRS)?
You might have been overheard discussions among developers about plumbing or seen a presentation from architects with buzzwords like secured by design, built-in performance, compliant to XYZ standard. These are well-proven properties for every application that must be reviewed to ensure success in production. They are called Non-functional Requirements or NFRs. Typical NFRs to look at are Performance, Security Usability, Reliability, Scalability, Compliance etc.
Here are a few highlights for starter:
This short summary barely scratches the surface but hopefully gives you some valuable insight. Now, you know the basics. Nothing can stop you from discussing the topic with software engineers and architects with confidence to get help. Together you will indeed deliver great apps, whether it is No-Code, Low-code or Code. Don't hesitate to contact me if you have any questions to get started or get over an obstacle. Happy No-coding!
Simple test: You are traveling home from a business meeting abroad and a guy with no pilot license but a bit of experience with Microsoft Flight Sim offers to fly you home at half the normal price. If you accept, low-code and no-code and citizen developers might be for you. If you take the regular plane with the trained pilot at full price then stick with trained developers as well <3