You are correct regarding CMS. Same story with e-commerce and other things.
In fact fundamentally the architecture is built around the idea of not having those things built-in but rather providing APIs for others to create integrations with any data source: CMSs, Databases, E-commerce etc.
Webflow and others with built-in CMS have a massive amount of problems, because there is no one CMS that fits all.
Even harder is e-commerce.
So yeah, we are not going to compete on that because we are not building any of it, but instead focusing on architecture to support integrations.
There is a serious knowledge gap between what you just wrote and the actual reality out there. I don't want to convince you of anything, just share the knowledge of what's actually happening. Why tools like Webflow have $4bln valuation and why there are millions of webflow developers.
1. You are looking at it in black/white. Coder vs nocoder. That's not how it is in reality. There is a seriously big amount of people who understand enough of coding to use webflow comfortably but not enough to write code by hand and/or wanting to do so.
2. Designers are used to visual tools. They find their way when tool allows to experiment without first studying how to code and then gradually learn css/html basics if they need to.
3. Building layouts, styling, html structure etc is actually faster with webflow once you understand how it works and learn all the shortcuts.
If you actually care to learn about it, go talk to some pro webflow devs. Some of them will tell you they actualy know how to code, but its less efficient for a lot of use cases.
4. Handoff. A huge problem with building websites is wasted time between a designer and a developer. There is just too many things to consider and a static design in figma is never complete. Webstudio and Webflow aims at solving or at least reducing the handoff by either building directly in Webstudio/Webflow or by keeping figma design low-fidelity just for initial communication with the customer and then moving on to building.
5. This industry has come a long way and these days several tools are also integrating with git-based developer workflows. The goal is to let designers and visual developers to build visual components and design systems in the builder ui and provide those components to developers for further integration.
6. There is a clearly steep learning curve with Webflow. Lots of things are not easy to get. Its not a tool to build a website in 5 minutes, its a tool to learn html/css visually and become pro visual developer. Once you are there, the typical landing sites and marketing pages, even large one are built significantly faster and more presize from design perspective than with coding. I am saying this as an engineer who started building for the web in 2004.
This is not meant to start an argument. Just pointing out a lot of stuff that is understandably not clear to many.
Totally reasonable response, and thanks for taking the criticism well - I hope it didn't come off as too harsh. I mostly agree with everything you wrote, just one thing I'd say:
Designers may be used to visual tools, but IMO it's a hangup. It's like someone telling you that they find it easier to click File > Copy > File > Paste because they're not used to typing "ctrl c > ctrl v". I get the psychology of it, but it's objectively wrong - a keyboard shortcut will always be more efficient and everyone who learns them is better off for it. Code is like that but on steroids. If there's an efficiency gap then it's an issue with dev tooling (which IMO is 100% true in lots of cases), not inherently with code.
Pro webflow developers use keyboard a lot. In fact with Webstudio we took the keyboard accessibility very seriously, still A LOT to improve.
Visual development is a mixture of mouse and keyboard. Some things are faster with the mouse, some with the keyboard.
The reason some people prefer mouse is not just that they are used to, even though it is true. Its because they know how to be efficient with it very well.
"code is like that but on steroids" - again it can be true in certain use cases, but there is a massive amount of use cases where this is not actually true.
Most of them are around layouts, styling and configuring components.
Visual development is basically declarative programming - its configuring things.
We are actually thinking deeply about the gap between typing and visually manipulating stuff at Webstudio and the plan is to allow a lot of the same UX patterns that you have with text-based coding: copy/pasting things like styles, box shadows, gradients, instances of components etc.
Ability to paste gradients is already there, box shadows comes soon. Writing component code inline will most likely come at some point as well. Linked CSS editor - similar to chrome dev tools for css is also planned.
As you can see there are ways to close the gap and when needed write code.
The most frustrating thing with code is the build tools, compilers etc. These days nobody writes just simple html and css, things are complex. So the benefits of writing code are often completely destroyed by the amount of complexity to deploy the site.
Ha, I was back-and-forth on editing a response to my own comment with a caveat - there are indeed times when I've found UI editing to be more efficient. There are probably a lot of factors that go into it, but the main one I've noticed is when there are a lot of concrete values that are both numerous and difficult to know ahead of time.
An extreme example is a squiggly line in SVG. Click on a canvas and drag, super easy. Or try typing it out and discover your inner masochist.
So, I definitely see your perspective, thanks for sharing your thoughts!
I really enjoyed this back-and-forth -- so much that I agreed with all of the comments on both sides, as I read them! (Not an intellectually consistent position, I admit.)
Glad you enjoyed it - it's two people who are very passionate about the same topic. I didn't mention it beforehand but I've been working on my own solution to this problem - I've been going back and forth between drawing board and prototype for years and it's become an obsession for me. I love this problem.
Developing better HCI and UX is not a "hangup". Accessibility (in the broader sense) is incredibly lacking in technical spaces.
Also, your example is a poor one, because in your example, both a visual method and a quicker keyboard method exist. Very often, the visual method doesn't even exist. In your analogy, its more like there is no way to move text from one app to another except for ctrl-c / ctrl+v, so the guy trying to do this just gives up and can't do it because they only know how to use file - paste. It's not even about shaving off .5 seconds, its about not even accomplishing the thing they want to do.
Finally, no, there's no such thing as one method being "objectively" wrong. You're making the mistake to think that efficiency between navigating screens and work is all about being fast. It's not. There's a lot of people (actually the majority) who don't give a shit about being faster at keyboard shortcuts and shaving 2 seconds off whatever. If you're a copy-writer, you might copy-paste once or twice and then the rest literally never leave a word editor and email.
This attitude is one of the biggest problems in HCI and development today. The tinkerers and developers like ourselves who love doing this stuff are unable to understand how actual users and clients work with systems, and when told that our designs suck and are inaccessible we scoff and say "lol just learn linux".
Finally, I have no idea whether or not there's an audience for this, but I will actually say that I'm probably one of the audiences for it. HTML, CSS and even JS isn't actually all that complex. But guess what. The real annoying shit that I have no interest in dealing with is the insanity of web development these days which involve build/compile and webpacks and frameworks and blah blah blah.
If I had a platform that let me dip into CSS/HTML/JS but had security guardrails, deployment fully setup and had some basic capability to whip up a docs page, or a simple website that still looked good, I would absolutely use it in a heartbeat.
In fact, I'm currently using a dinky-ass no-code app builder (lmao, in ESRI's ArcGIS Enterprise no less) to make a simple CRUD app. Why am I using it? Because none of the shit is documented at my workplace for deployment, I'm not interested in learning to use kubernetes just for a simple-ass website, and I have zero interest in figuring out how to configure HTTPS and deal with JWT tokens and whatever. I'm a data analyst who works in jupyter notebooks, python and SQL.
"Should" I be making this god awful no-code app? Hell no. Do I want to? Hell no. But do I need it? Yes, very much so. Otherwise, the people I rely on to populate a referential / look-up table update their reference documents in word and the table only gets updated manually when someone bugs the DBAs to manually update it, so these tables are always out of date. I could go with a straight-face to our over-worked web devs and ask them to stop working on their enterprise-wide/big-client project, but they would either hate me forever (fair) or ignore me because they're doing way more important things. Or I could go to the policy people who update these tables who can stare at me with a blank face when I explain that even if they just make an Excel table instead of a Word table then it would improve so many things, but to them its "whats the difference? im putting text in one table or another."
Instead, we have this dumb thing that's a drag-n-drop Bootstrap page maker, and with it comes built in auth, login and even exposes a simple REST API.
If I narrowly focused down on whether or not making this app with a drag-n-drop tool vs just writing an SSG, ofcourse the latter would be easier and faster. But, just writing the code for an SSG is not the hard part here. It's everything else that web devs live and breath so they forget how stupid of a workflow it actually is to make a React-Nuxt-Next-Babel-Webpack-Vite-tailwindCSS-whatever monstrosity, when 90% of people's needs could be served with the equivalent of a web-deployed version of Excel with some neat animations.
It's the same reason why UX designers and shit like figma exist. We let developers be in charge of designing an app, and they built unironic versions of userinyerface[1] and when told their shit sucks, they shrug and say whatever, "it'd be faster if they wrote X in markdown anyways."
I love thoughtful pushback as well as a good rant, so thank you (really). I completely empathize with the use cases you listed. Only thing I'll point out is that I'm only quibbling about the mode of interaction (UI vs text), I'm definitely not advocating that designers or non-devs should know or care about react/webpack/tailwind/blah/blah. Agreed that a nicely integrated design tool would hide all incidental complexity.
As someone who transitioned from flash to webdev a decade ago, I wholeheartedly agree with this. A lot of folks who started their careers with current state of webdev workflows don't fully understand how amazing a fully integrated design solution that generates production ready artifacts (while retaining programmability) can be.
Thank you for succinctly summarizing this - I couldn't have done it better.
This is true. There are standard use cases like landing/marketing sites, blogs etc that can be done fully visually, and there are custom once where coding is not avoidable.
We have designed it to work for both by providing API and CLI to integrate with the custom app and git-based workflow.
People should stop looking for a silver bullet. If you are using react + relay, you must be building a very complex solution, where the overhead for such abstractions is justified.
If you are at a point where your task doesn't justify these abstractions - don't use them.
I've found that the benefits in terms of developer experience, and being able to build good UI quickly, start accumulating almost immediately, even on tiny projects.
My initial reservations about the amount of boilerplate in setting up Relay, were in large part due to the server-side half of the equation. Since switching to building my backend in a different language (now using Elixir with absinthe, rather than node and graphql-js) I've found my productivity has skyrocketed.
At this point the overhead in terms of file-size (and the still pending support for server-rendering) are the only things giving me pause for thought.
I think its great that you try new ideas in this area. Don't listen to those who didn't event try to create better tools, but rather just crying around that all the "css in js" solutions are bad, ignoring the fact that the current traditional CSS is bad for lots of cases too.
What I understood from descartes is that you are trying to make styles dynamic by allowing listeners. So that when user interaction happens, styles can change accordingly, while the logic for it is contained in the style itself.
Webflow and others with built-in CMS have a massive amount of problems, because there is no one CMS that fits all.
Even harder is e-commerce.
So yeah, we are not going to compete on that because we are not building any of it, but instead focusing on architecture to support integrations.