Exactly one year ago, I set out to build a new startup from scratch using only no-code and low-code tools. I did this for all the reasons any entrepreneur founds a new company, but I added one extra goal: to show how anyone can create a working, profitable business using only no-code.

Over the past 20-plus years, I've been hands-on at the "from scratch" stage of 14 startups, and every one generated a ton of lessons that I took with me to the next. This new startup is different, of course, but just like all the others before it, standing it up has been a journey of new, valuable, actionable lessons.

These are the most important learnings I can share after 12 months spent wrestling a real business into profitable reality without writing a single line of code.

1. No-code isn't for everything.

Even with all the advancements in no-code and low-code technology over the past few years, experience tells me that these tools and platforms shouldn't be the engine or the unique differentiator that your product is built on. Instead, no-code and low-code tools are more appropriate for core-adjacent tasks -- functions like user management, billing, and the delivery of static information.

For example, a no-code platform is great for taking input and delivering output. But whatever work you're doing to generate the results of that output should happen off of the no-code platform. That work might be a manual service, a physical product, or even a technical solution developed with real code.

That's not to say these no-code and low-code tools aren't powerful. In fact, you can indeed build a Twitter clone on the Bubble no-code platform. 

The problem is, so can everyone else. Your unique competitive advantage needs to originate somewhere else.

2. Learn coding concepts.

You don't have to be a coder to build incredible things with no-code. You don't have to know the first thing about syntax or specific commands. But having a handle on what makes good code good helps significantly.

I've been coding for longer than I care to admit. Now, I will absolutely agree that the beauty of no-code and low-code is that you don't have to know how to code -- at all -- to make the tools work.

But the more you know about coding concepts, and the more you apply those concepts, the better your "code" is going to be. Designing efficient flows, handling exceptions and errors, and practicing good data management are three foundational pillars that you'll want to invest time learning as you go.

3. Versioning and documentation are a must.

You'll need to practice good versioning and write clear developer notes. Even though a lot of developers will admit that they skip these steps, they're much more critical when you're not using syntax. And they're even more critical if your product links together one or more no-code/low-code tools. 

I've launched more than 200 versions of my app to production over the course the past year. It adds up and sneaks up on you. But I don't just rely on the provider's versioning system. I take detailed notes of not only what I'm changing, but also of both the before and after states of the change. I also back up elements before I start making riskier changes. I record the date and time of every change.

I've had to revert to previous versions more than a dozen times over the past 12 months. Having previously documented exactly where I was reverting back to and what changes had been made was essential to be able to move forward again.

4. Don't get comfortable.

Just as with real code, you're limited only by your creativity and persistence, so don't get comfortable leaning on what you've already learned. At some point, you'll probably start reinventing a function that's already been invented for you.

For example, I spent a ton of time trying to use what I had already learned about Bubble's data management tools to fake my way to an OR clause (select both this data OR that data) before realizing the platform already did that quite elegantly. 

5. Don't guess.

I'm usually pretty adamant about not pushing something to production unless I understand how it does what it does and why. But I still fell into the trap of shrugging and launching when something just worked without my understanding exactly what the platform was doing. Later on, several things broke because I was using functionality in a way it wasn't supposed to be used.

6. Responsive design is mandatory.

Implementing proper responsive design is hard, but you need to learn to love it. When you're adding and changing functionality as often as you do with no-code, you don't want to have to redesign your entire UI each time to add or subtract screen space on multiple different screen sizes.

Put your fancy design aesthetic away and build simply and responsively. Keep function a priority over form. You can hire a professional design firm once you're generating revenue.

7. Stay in your lane.

Sometimes, limitations are exactly what you need to build a better and more elegant product.

For a former coder like me, no-code and low-code was extremely limiting at first. I knew how to do what I wanted to do, but I had to learn how the platform wanted me to do what I wanted to do.

To counter this, I learned to not try too much at once, and stick to building only what was directly related to creating customer value, realizing revenue, and delivering a great user experience. The bells and whistles can come later.

Once I learned these lessons and stuck to them, using no-code became a joy. The beautiful thing is, not only am I going to get better at using these tools, the tools themselves will improve over time as well.