by Imustaskforhelp 3 days ago

(I am currently 18 so you have actually been coding since more than two times my whole lifetime so y'know there's that.)

I wish to ask you for some feedback and clarity and further concrete resources because I feel a little confused/lost regarding the whole vibe-coding situation, I wish to say thanks in general though as nonetheless your comment finally made me concretely express all the nuances brewing in my stomach about vibe-coding and how I often nowadays feel as if I may be falling behind if I don't know how to do it "accurately", I would love and really appreciate to get a more in-depth response if possible.

I have said the same thing as you have said as well sometimes if not mostly that AI is a tool which should be used sensibly (as I think that this is what you are intending to say as well)

Within the contexts of vibe-coding though, I would really appreciate it if you could explain to me in more depth about the whole process and workflow that you follow if possible and how much drastic change has that been in. I would love some concrete examples or repositories or just some pointers that I can help to improve myself further.

Here are some other thoughts that I have on the matter:

When you mean design review, are you just architecturing suggesting it the main architecture itself, for example. I mostly do "create me a golang web application which uses htmx/templ/modernc sqlite about XYZ" and then create a more detailed prompt from it which I then pass onto the agent to complete and give me a single binary at.

Most often than not though after this point, I haven't felt the need to change the architecture after the first initial setup and afterwards I point the changes that I wish to be done like "I want X1 Y1 Z1 changes" and if it breaks something then just showcasing what breaks, and taking feedback then "it just works"

The architecture sounds solid to me, I love golang as a language and I run multiple such apps on same 500mb/1gb ram servers and use cf tunnels in the middle.

For styling, I mostly prefer monospace-web theme because that's what I personally really like a lot but recently I found that giving first prototype to chatgpt and asking it to generate image then it can create a decent UI as well.

An example website that fits the pattern: https://mirror.forum

So what are the things which I should do though now? Should I attempt at reading the code and trying to understand it completely (I think that golang's mostly standardized method of doing things helps in reading AI code) or should I treat myself as thinking more about (seams?) or other technical terms that I found described within obra/superpowers or matt-pocock and other skill driven development oriented stuff.

Can I learn these stuff through AI itself as well and I wish to generate my own projects as well because I still believe that there's some joy in that as well as I find vibe-coding to be sometimes a bit hollow[1] [not sure though as the atmosphere has changed, earlier people used to be extremely critic of it whereas now more accepting]

I can be wrong, I usually am but what I am finding the most shocking is that although we are constantly seeing new tools and I try to be more well aware of them and always curious about it, yet I don't know at the same time where to actually proceed because the projects are just being built enough yet I don't know if I am doing standardized practices enough or how to really meaningfully improve such practice if vibe-coding is really such valuable then I would prefer to learn the more technical way of doing so and how experts within the field actually do vibe-coding.

Thanks and have a nice day and I would love to hear your/the community's response.

[0]: https://github.com/owickstrom/the-monospace-web

[1]: https://news.ycombinator.com/item?id=47264945

corysama 3 days ago

Greybeard coder here. There are two separate problems you get to solve. 1) If AI writes your code, you didn't learn anything about the code. 2) If you don't use AI, you won't learn how to use AI. You need to learn how stuff works and how to code well. And, you can't do that passively. If you didn't type it with your own fingers, you didn't learn it. And, that includes learning "How to use AI?"

You want to learn web dev? Start typing HTML and JS. You want to learn how to use AI? Start typing specs and prompts. You'll need to learn both. But, you can't learn web dev by typing specs and prompts.

You can learn using AI as a research assistant, a tutor, a reviewer, a critic. You can use it to bang out quick tools, prototypes, deal with the hassles that are not your focus at the moment. But, whatever you are trying to learn, you need to do the actual implementation manually. There is no such thing as passive learning.

  • Imustaskforhelp 3 days ago

    Thank you for the response, I have a few questions that I would like to ask now as well which jumped on top of my head which I would like to ask though to get more clarity at the same time.

    What is the exact learning of the topic that I have to do in it, for example. I can (and I will) learn webdev about valuable if vibecoding becomes the norm (as it is becoming nowadays)

    Now I will learn the basics, then intermediate, then expert. Where exactly do you think that the value lies in?

    ie. are the advantages put within getting from beginner -> intermediate or to complete beginner -> intermediate -> expert

    Another thing is the level of fields that you have to be in or the whole question could perhaps be framed as being the jack of all trades or the master of one? Is this going to be like typing speed [90 wpm vs 130 wpm is somewhat negligible effect] or like chess [ 2100 vs 2400 isn't negligible and becomes exponentially harder when you become expert yet the difference will have genuine real impact maybe?]

    Also within the process of vibe-coding, what is the actual value that I am adding given that I have learnt the skill, what I think might be is that I can actually verify if its good or not instead of asking a chatbot [which might be sycophantic or might miss the devil in the details], and say its okay.

    Also, how do people naturally move away from the natural tendency to just... not read what AI is saying (when I tried obra/superpowers etc.), this video[0] tries to showcase what I am suggesting perhaps but I feel as if its still quite a slippery slope.

    I hope that this question can be taken in good faith (because I like learning about CS for the sake of learning itself) but aside from that, why learn HTML/CSS is still a question that I can perhaps ask, similar to why learn assembly[1], and to what level, and will it help me in getting a job and if that helps in what I will actually do in job, and if so, then how? if the job done via vibe-coding as well. [I think this might tie to the previous questions that I have asked]

    I do agree with the overall premise and learning can't be passive granted. Learning requires some form of active involvement which includes the phase of struggle (I think), yet that struggle is done for something meaningfully better and has a purpose. What AI does to many is question that purpose, why learn?

    The issue I find which is why I am coming to this again and again is this, I am unable to find how the improvement within this corresponds to actual work/job or in actual terms how so.

    Also, what happens if suppose the difference between an expert person with extreme knowledge and a normal~ish person is that it might take normal person is some more time/prompt/tokens to debug the issue with the models itself. Like it might take 2-3 more prompts to fix the issue.

    I am finding people with varying opinions on how even the most expert people on some topic are agreeing that most AI can do it good enough already with vibe-coding, whereas some generalists who might not know the other language are porting their projects in it with vibe-coding.

    In general, when approaching learning as well, I am not sure which to approach first: the thing which might be approachable (so for example: after HTML/CSS/Js Python, Django [thanks @simonw], golang's complicated full stack application)

    and what if I might not like JS so much and python only enough but golang the most ideologically but my skill level still matches mostly python and its what I am most proficient in writing by hand?

    I am personally going to go the learning path (the hard way?), I don't know if its the hard way or not but I wish to learn programming quite deeply even if just for the sake of itself and making my brain think about problems better

    but my mind does still wonder if people on the other side could be right as well, does everyone need to learn deep ends of programming if programming becomes simpler or operates via just words, similar to how in previous times we used to have a lift operator and now we have all become a lift operator with the press of a button.

    My opinion on vibe-coding has been this for quite sometime now: I do vibe-coding not for learning but for if/when the end results/prototypes matter more than the process but I absolutely DO NOT want to do vibe-coding if learning is the goal. before college, I didn't even have time to properly pursue the learning phase but I will now have the time and I will chose the learning path.

    Also, when someone suggests that vibe-coding is all good if done right and alright when you do it this particular way or that particular way which causes my mind goes to this chain of thought and I feel a little confused.

    As such, many of these thoughts float into my head when someone mentions this and it makes me wonder what should I do to achieve that and the other goal as you mentioned which was learning itself, it makes me question both sometimes if I am feeling p(doom). Learning as in, for all the reasons that I explained above and vibe-coding as in feeling shallow and hollow.

    I am extremely sorry if I am being unable to succintly convey what I am trying to say and for the longer post. I really don't know how to express this particular thought because its all over the place. I hope that it's okay though and I might not have wasted the time and thanks for commenting and have a nice day.

    [0]: https://www.youtube.com/watch?v=ZumXpZzDsgo

    [1]: (although there are still good reasons to learn assembly imo, I recently vibe-coded/[vibe-forked?] a scratchpad application in assembly as a way of messing around with AI.): https://github.com/serJaimeLannister/rhunpad

    • corysama 3 days ago

      I write a lot of C++. A long time ago, I learned the basics of writing assembly. Even though I haven't written much assembly, it still helped me a lot over the years. I understand how it works. I can read the assembly output of my compiler and judge how well my C++ translates to machine actions. I can debug individual assembly instructions when stuff isn't going as planned or the C++ is not available.

      I write a lot of high-performance code. To do that, I had to learn the details of how devices (drives/NICs/GPUs) work, how buses (PCI) works, how RAM, CPU caches, instruction pipelining work. Now I know how to structure data flow to work well with the machine instead of against it.

      I write a lot of APIs. In doing that, I had to learn the hard way about how different API trade-offs drive client decisions. How to foresee problems in the future stemming from interfaces I'm writing now. How to argue with clients to get them what they need in the long term and not just want they want for the next milestone.

      At all of these levels, I had to learn how each level works by doing it. By trying it lots of different ways. And, by optimizing it all the way down from "More productive client discussions" to "More performant assembly instructions" :P

      Now whenever I do vibe-code, it's because I know exactly what I want and I can get AI to type it faster and with less RSI (carpal tunnel). Or, I know I want to prototype a few options rapidly before committing to implementing one design for realz. In neither of these cases am I telling the AI "Make it performant and easy to use." Because I know how I want to structure the code to make it performant. And, I know how to set up the API to make it easy to use. So, I'm telling the AI how to structure the data flow and how to set up the API. Because, if I didn't, I'd just be generating a big ball of noisy mud that's neat to gawk at, but has no long-term value.

      So, what should you learn? You need to learn how the stuff you are interested in actually works under the hood by experimenting with it manually. Not just "Hey chat, make it work somehow..." You need to focus on architecture and systems thinking because otherwise you won't know how to prevent AI from holding your hand deep into a maze neither of you can escape from. And, you should be spending the majority of your tokens on step-by-step refactoring, never one-shotting. One-shotting is for AI tech demos. Not for learning or production.

    • mindwok 2 days ago

      It sounds like you're maybe in a bit of analysis paralysis, trying to find the optimal way to move forward. If you stay in that frame of mind, you'll spin your wheels for hours trying to find the best way to approach it, and then never actually approach anything.

      My advice would be, as hard as it might seem, let yourself go slow and just do things. Spend a few weeks on webdev, or learning aseembly, or playing with AI. As long as you are engaged with whatever you're doing, that is enough. You will, via repeated exposure to smart people doing hard things, learn how to navigate and overcome all kinds of problems.

      I actually disagree a little with the previous commenter about learning how to use AI. While that is useful, AI becomes second nature once you have been exposed to all these other things.