8 ms·
> there's something that I'd call a "complexity cliff" in the software business: if you want to compete in certain spaces, you need to build very complex softwa
by Aurornis 1y ago
> there's something that I'd call a "complexity cliff" in the software business: if you want to compete in certain spaces, you need to build very complex software (even if the software, to the user, is easy to use)
I recognized something similar when I first started interviewing candidates.
I try to interview promising resumes even if they don't have the perfect experience match. Something that becomes obvious when doing this is that many developers have only operated on relatively simple projects. They would repeat things like "Everything is just a CRUD app" or not understand that going from Python or JavaScript to C++ for embedded systems was more complicated than learning different syntax for your if blocks and for loops.
The new variant of this is the software developer who has only worked on projects where getting to production is a matter of prompting an LLM continuously for a few months. Do this once and it feels like any problem can be solved the same way. These people are in for a shock when they stray from the common path and enter territory that isn't represented in the training data.
- sfn42 1y agoI'm in that boat, everything is just a crud app. I've worked on some fairly complex apps but at their core they were crud apps and most of their complexity were caused by bad developers overcomplicating and fumbling things. That's not to say something like Figma isn't on an entirely different level, but most apps aren't Figma and don't need to be. Most apps are simple crud apps and if they aren't it's usually because the devs are bad. It's also worth noting that a crud app can be quite complex too. There can be a lot of complexity even if the core is simple. I also think that those of us who can recognize simple apps for what they are and design them simply are also the people best equipped to tackle more complex apps. Those guys who can make a simple crud app into an incomprehensible buggy monster certainly can't be trusted with that kind of complexity.
- pixl97 1y agoSometimes complexity exists because what you're doing is complex and their is a minimum to how simply it can be abstracted.
- sfn42 1y agoYeah, but based on my own experience, most of the time complexity exists because devs suck. I know because I've simplified lots of code written by others, because rewriting it is simpler than maintaining their huge mess.
- SoftTalker 1y agoOr because they used the project as an excuse to learn a complicated but (in this case) unnecessary framework or technology stack as an resume enhancer.
- trcf22 1y agoWhy wouldn't figma be considered a crud app? It’s still basically adding and updating things in a DB no? With some highly complex things like rendering, collab and stuff. (Fair question btw)
- airstrike 1y agoIt's very, very far from a CRUD app or "just updating a DB". GUI-heavy apps are notoriously hard to get right. Any kind of "editable canvas" makes it 10x harder. Online collaboration is hard, so that's another 10x—there are known solutions, but it's an entire sidequest you have to pour a massive amount of effort into. Custom text editing and rendering is really hard to do well. Making everything smooth and performant to the point it's best-in-class while still adding new features is... remarkable. (Speaking as someone who's writing a spreadsheet and slideshow editor myself...among other things)
- dpark 1y agoIt is a CRUD app, though, which is why that classification isn’t generally meaningful. CRUD basically just means the app has persistent storage.
- zdragnar 1y ago"Having CRUD operations" and "Just a CRUD app" are very different things. The custom text rendering bit alone should have been a good cue for this distinction.
- Aurornis 1y ago> Most apps are simple crud apps and if they aren't it's usually because the devs are bad. I heard this a lot from candidates who had only worked on software that could be described as an app. They bounced from company to company adjusting a mobile app here, fitting into a React framework there, and changing some REST endpoints. There is a large world of software out there and not all of it is user-facing apps.
- airstrike 1y agoI agree 100%. IMHO this is the software that is vibe-codeable, by the way.
- jasode 1y ago>I heard this a lot from candidates who had only worked on software that could be described as an app. Similar to that thinking, I made a previous comment how many developers in the "L.O.B. Line-Of-Business / CRUD" group are not familiar with "algorithms engineering" type of programming: https://news.ycombinator.com/item?id=12078147 https://news.ycombinator.com/item?id=12078147 Vibe coding is easiest for CRUD apps. However, it's useless for developing new scientific/engineering code for new system architectures that require combining algorithms & data structures in novel ways that Claude Code has no examples for.
- h3half 1y agoI can attest to that. I was using Gemini to help with some spherical geometry that I just couldn't figure out myself. This was for an engineering system to define and avoid attitude deadzones for a system that can rotate arbitrarily. About 75% of the time the code snippets it provided did what it said they did. But the other 25% was killer. Luckily I made a visualization system and was able to see when it made mistakes, but I think if I had tried to vibe code this months ago I'd still be trying. (These were things like "how can I detect if an arbitrary small circle arc on a unit sphere intersects a circle of arbitrary size projected onto the surface of the unit sphere". With the right MATLAB setup this was easy to visualize and check; but I'm quite convinced it would have taken me a lot longer to understand the geometry and come up with the equations myself than it actually took me to complete the tool)
- throwaway7783 1y agoWhat makes Figma more complex?
- sfn42 1y agoCollaboration and the whole editor UI in general is a much more complex task than your average glorified PDF with some dynamically rendered data. It's not the Pinnacle of complexity, just more complex than your average app.
- tracker1 1y agoI'd say the multi-user aspects and level of scale add quite a lot of complexity in to the mix.
- trenchpilgrim 1y agoCheck out their old blog post on how they got real-time collaborative editing without conflicts to work: https://www.figma.com/blog/how-figmas-multiplayer-technology-works/ https://www.figma.com/blog/how-figmas-multiplayer-technology...
- bawolff 1y ago> It's also worth noting that a crud app can be quite complex too. There can be a lot of complexity even if the core is simple. I suppose technically a database is just a CRUD app
- sfn42 1y agoYeah, that's essentially what I mean when I say crud app. It's basically a web api written in something like C# or whatever you prefer, which receives HTTP requests and translates them into DB operations. CRUD and views basically. For this type of development you want the DB to handle basically all the heavy lifting, the trick is to design the DB schema well and have the web API send the right SQL to get exactly the data you need for any given request and then your app will generally be nice and snappy. 90-99% of the logic is just SQL. For the C# example you'd typically use Entity Framework so the entirety of the DB schema and the DB interaction etc is defined within the C# code.
- tracker1 1y agoI prefer to just use Dapper for most DB interactions with C#... EF (and ORM tooling in general) can come with a lot of gotchas that simply understanding the SQL you are generating can go a long way to avoid.
- sfn42 1y agoDapper is nice, but what you don't get as far as I know is migrations. With EF the app just spins up the whole DB from scratch which is great for onboarding or when you just needed a new laptop etc. Also EF is fine as long as you know what you're doing, or at least pay attention to what you're doing.
- tracker1 1y agoI use grate for migrations. I prefer a more manual, hands on approach to that as well.
- chihuahua 1y ago
- ben_w 1y ago> I'm in that boat, everything is just a crud app. I've worked on some fairly complex apps but at their core they were crud apps and most of their complexity were caused by bad developers overcomplicating and fumbling things. Far too much of my recent work has been CRUD apps, several with wildly and needlessly overengineered plumbing. But not all apps are CRUD. Simulations, games, and document editors where the sensible file format isn't a database, are also codebases I've worked on. I think several of those codebases would also be vulnerable to vibe coding*; but this is where I'd focus my attention, as this kind of innovation seems to be the comparative advantage of humans over AI, and also is the space of innovative functions that can be patented. * but not all; I'm currently converting an old C++ game to vanilla JS and the web, and I have to carefully vet everything the AI does because it tends to make un-performant choices.
- munchbunny 1y ago> I try to interview promising resumes even if they don't have the perfect experience match. Something that becomes obvious when doing this is that many developers have only operated on relatively simple projects. They would repeat things like "Everything is just a CRUD app" or not understand that going from Python or JavaScript to C++ for embedded systems was more complicated than learning different syntax for your if blocks and for loops. I agree and disagree here. IMO the sign of experience is when you understand which details really matter, and which details are more or less the same across the different stacks, and also when they don't know enough yet to differentiate and need to ask someone else.
- bodhi_mind 1y agoSaying everything is a CRUD app is a reflection on the level of abstraction a developer usually works in. Someone who worked more in embedded systems may say something like “everything is ‘just’ a state machine.”
- rhines 1y agoIt's also IMO valid. CRUD isn't derogatory. It's also not particularly illuminating though. Almost everything is a CRUD app. If you get the fundamental data structures, access patterns, and control flow right for those CRUD operations, you have the foundations for what can be a successful app. And then you enhance it further - games add nice graphics, collaborative workspaces add good conflict resolution, social media sites add addictive recommendation systems. The core is CRUD but that doesn't mean the work stops there.
- SAI_Peregrinus 1y agoEmbedded systems using memory-mapped I/O are just dozens of CRUD apps, each "register" in the memory map. You don't even need to worry about the C & D parts, just read & update. We can structure each peripheral's access via a microservice… Everything is a CRUD app if you're high on buzzwords.
- nomel 1y agoWhat’s the endpoint for the interrupt service? Does it use OAuth?
- araes 1y agoNot actually critiquing the comment, just somewhat for my own memory and ref, there's several other "verbs" attached to a lot of those systems. B / L / S - Browse / List / Summarize, M / T - Move / Transfer, C / R - Copy / Replicate, A / E - Append / Expand, T / S - Trim / Subtract, P - Process, possibly V / G / D - Visualize / Graph / Display There's probably others that vary from just a Create (POST, PUT), Read (GET), Update (PATCH), Delete (DELETE) the way they're interpreted in something like REST APIs.