Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

In the article, you mentioned that you've been writing code for 36 years, so don't you feel IDEs like cursor make you feel less competent? Meaning I loved the process of scratching my head over a problem and then coming to a solution but now we have AI Agents solving the problems and optimizing code which takes the fun out of it.


I feel like in the early stages of becoming a programmer, learning how to do all those little baseline problems is fun.

But eventually you get to a point where you've solved variations of the problem hundreds of times before, and it's just hours of time being burnt away writing it again with small adjustments.

It's like getting into making physical things with only a screwdriver and a hammer. Working with your hands on those little projects is fun. Then eventually you level up your skills and realize making massive things is much easier with a power drill and some automated equipment, and gives you time to focus on the design and intricacies of far more complicated projects. Though there are always those times where you just want to spend a weekend fiddling with basics for fun.


That should be when you move to more sophistcated (and also complex/complicated) languages that relieve you from as much of this boilerplate as possible.

The rest is then general design and archiceture, where LLMs really don't help much with. What they are really good for is to get an idea of possible options in spaces were you have little experience or to quickly explain and summarize specific solutions and their pros and cons. But I tried to make it pick a solution based on the constraints and even with many tries and careful descriptions, the results were really bad.


I think it is not the boilerplate of the programming language necessarily, but it is more to do with boilerplate of common business logic. E.g. even say form validation, I have done it countless of times and I can't be bothered to write out rules for each field again, but AI can easily generate me Zod schema with reasonable validation based on the database model or schema. It probably does better validation rules than I would do quickly on my first try.

Then I use these validations both in the backend and frontend.


There is nothing that stops a good PL from doing the same. In fact, that is why languages like F# support a concept called "type provider".


I'm talking about web/app UI validation, are we talking about the same thing?

Does F# provide ability to display validation errors with good UX to users using your app? How does it know what user friendly error messages look like?

Okay very simple example prompt that will generate 100+ lines of code.

"Give CRUD example using shadcn, react-hook-form, zod, trpc to create an example of a TODO app"

Which programming language would be able to replace the UI at this level of quality and how the UI looks?

Now this is very basic example, and it's a "todo app" without existing project, but I find it can give me a lot various different 100+ lines of boilerplate, from charts to sql explorers, to much else.

Also most web app developers and especially juniors usually have terrible error, loading, validation handling, and SOTA seems far superior to that, handling those cases everytime with ease and most intuitive error messages.

It will patiently always do "isLoading", checks for error, etc.


I'm not saying that this is a solved problem today. And yeah, llms are also helpul here.

What I meant is that this can be solved by a good language. But you would have to use F# (or another language with a feature like type providers) on the frontend.


It seems like F# is more like a type safety tool from arbitrary untyped data for developers rather than what I'm talking about though?

But even TypeScript can infer types in many cases?


Typescript can infer a lot of types, but you cannot read an SQL file at compiletime (with custom logic) and make it generate types that you can then use.

You have to generate those types as source code (like you basically do with the llm).

In F# and other languages, you can generate those types on the fly and use them. It can even go as far as describing errors with sql columns. Then, if there is any mismatch, the project won't compile. And if you add a new field, the code and validation will automatically work.


Completely agreed. Don’t be afraid to embrace this. You have to give it an active month until it starts to work in your hands though.


I’ve been using cursor for a while now and I think that if a problem is simple enough for an LLM to work out on its own, it’s probably not worth scratching one’s head over…


I dont think people need to think, that the AI is supposed to make complicated code

i think for the most part its meant to help you "get past" all the generic code you usually write in the beginning of a project, generic functions you need in almost all systems, etc.


I'm not sure that's a good heuristic? People love playing Tetris or solving crossword puzzles, and machines are much better at them than us.


People keep playing trivial or repetitive games because they enjoy it. People keep writing trivial or repetitive code because they have to.


…or maybe because they actually enjoy it the same as the games?


Agreed with added experience of mine: sometimes Cursos gives me a simpler yet perfect solution. And I am grateful for it.


I don't agree, in the initial stages solving problems without LLMs will give a good enough knowledge about the intricacies involved and it helps develop a structured approach while solving a problem!


For me it’s like riding an e-bike. More fun because I can go faster and see and do more.


And you get less tired. I can complete more work because I'm not always getting stuck in minutia. I can focus on architecture, structure, and refactoring instead of line-by-line writing of code.

I'm not saying that I don't like writing code. I'm just saying that doing a lot of it can be mentally exhausting. Sometimes I'd just prefer to ship feature-complete stuff on-time and on-budget, then go back to my kids and wife without feeling like my brain is mush.


"An e-bike for the mind" as Steve Jobs might have said.


I have compared AI to an emtb. Was riding one on slick rock trail in Moab which has some areas with consequences earlier this year.

If you don't know how to handle a bike, the ebike won't help you in these situations. (You might even get yourself in a tricky spot).

But if you know how to ride, it can be really fun.

Same with code. If you know how to code it can make you much more productive. If you don't know how to code, you get into tricky spots...


I have a motorbike, yet I prefer cycling because the exercise feels good and is good for me.


This is actually a great analogy. You get to accomplish a lot more, much faster, but you lose much of the benefit to your fitness.


> you lose much of the benefit to your fitness

If you're biking for the purpose of fitness then this is a downside, but if your goal is to see more and go further, then it's an acceptable tradeoff.

Similar to coding. If you're writing code because you enjoy writing code, it's less fun. If you're writing code to build stuff, AI will help you build faster


I think you are still thinking just on another level. E.g. you go on a walk, you fantasize about everything you are going to do, and it builds up in your head, then you come back, it is all in your head and AI will help you get it out quickly, but you have already solved the problem for yourself and so you are also able to validate quickly what the AI does.


yes this!!! Whenever I write a prompt, I tend to divide it into smaller prompts, and in this process, my brain thinks of multiple ways to solve the problem. So yes, it's not limiting my thought process. I didn't notice this thing until I read this.


Do they really solve the hard problems though? For me, the LLMs solve the low level problems. Usually I need to figure out an algorithm, which is the actual problem, and finally give some pseudo code to the LLM and surrounding code so it can generate a solution that looks idiomatic.

In some cases, LLMs act as a stackoverflow replacement for me, like „sort this with bubble sort, by property X“. I’d also ask it to write some test cases around that. I won’t import a bubble sort library just for this, but I also don’t want to spend any more time than necessary, implementing this for the nth time.


I don't find figuring out the syntax of a new language interesting. There's absolutely no fun in that. I know what I want to do and already understand the concepts behind it, that was the fun part to learn.


I do think that is a real risk, yes. I don't want to use LLMs as a crutch to guard against having to ever learn anything new, or having to implement something myself. There is such a thing as productive struggle which is a core part of learning.

That said, I think everyone can relate to wasting an awful lot of time on things that are not "interesting" from the perspective of the project you are working on. For example, I can't count the number of hours I've spent trying to get something specific to work in webpack, and there is no payoff because today the fashionable tool is vite and tomorrow it'll be something else. I still want to know my code inside and out, but writing a deploy script for it should not be something I need to spend time on. If I had a junior dev working for me for pennies a day, I would absolutely delegate that stuff to them.


For a lot of people the fun and rewarding part is actually building and shipping something useful to users. Not solving complex puzzles / algoritic challenges. If AI gets me in front of users faster then I'm a happier builder.


Was going to ask a similar question. Where in the experience of Cursor do you feel like you're losing some of the agency of solving the harder problems, or is this something you take in mind while using it?


I’ve “only” been coding for 20 years, but it’s the tedious problems, not the actually technically hard problems that cursor solves. I don’t need to debug 5 edge cases any more to feel like I’ve truly done the work, I know I can do that, it’s just time spent. Cursor helps me get the boring and repetitive work out of coding. Now, don’t get me wrong, there was a time where I loved building something lower level line by line, but nowadays it’s very often a “been there, done that” type of thing for me.


If I need an RNG rolled to a standard distribution, I can either spend 5 minutes looking it up, learning how to import and use a library, and adding it to my code, or I can tell Cursor to do it for me.

Crap like that, 100 times a day.

"Walk through this array and pull out every element without an index field and add it to a new array called needsToBeIndexed, send them off to the indexing service, and log any failures to the log file as shown in the function above".

Cursor lets me think closer to the level of architecting software.

Sure having a deep knowledge of my language of choices is fun, and very needed at times, but for the 40% or so of code that is boring work of moving data around, Cursor helps a lot.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: