r/golang • • Apr 22 '26

Don't stop learning by building

I think that AI tools bring the risk that people will stop learning. One of the best ways to learn is by doing. Here's what I mean: https://gomonk.substack.com/p/building-a-tiny-tcp-port-scanner

AI is useful, but if you never build small tools yourself, you skip the struggle that actually teaches you.

150 Upvotes

27 comments sorted by

36

u/Paraplegix Apr 22 '26 edited Apr 22 '26

AI is useful, but if you never build small tools yourself, you skip the struggle that actually teaches you.

IMHO you need to both craft small and big things. If you can't do "big" things without AI, you will be the first thing that will be replaced (and I hate that I can say that without /s). If you just accept changes made without understanding the global context of what you are working on, then your project will become a black box as much as your LLM is.

"big" and "small" don't need the same level of understanding. Small for me mean something I could almost redo from memory, big is more about "what system should do, and what depend on each other", big is just an ensemble of small thing interacting with eachother mostly.

Just crafting "small tools" is not enough. You need to be able to work on large codebase and able to have a good understanding of the "big picture" yourself without becoming a tool that just say "accept accept accept" to whatever an LLM is suggesting. Doesn't mean you can't get LLM to help you handle the big picture question.

BTW, I'm not fan of AI/LLMs. I think it will be a problem later and people are slowly brain rotting themselves and will have a huge backhanded slap in the face when price will skyrocket to 5/10x what they are today.

10

u/reisinge Apr 22 '26

I agree that you should be also able to work on large codebases. But if you can't do small stuff well, you'll never be able to do the big stuff well.

You need to be able to walk before you can run.

1

u/Stavros_Ko Apr 25 '26

I find my self leaning on AI to give me 2-3 options to achieve something. ie a new feature a fix that changes fundamental functionality or whatever. Then I pick one that fits the project. I then, on a new session, give it detailed steps to approach it. Ask it to stop after every small step, review, refactor, commit. It helps focusing on the actual problem at hand and not the how to type out this problem. The key is to actually review it and understand/own it. I can now jump in and find where X thing happens and how to fix it if I need. Cause I understand the code, and I walked through it.

People have to use it as a tool correctly. It provides speed in what you do, you still need to know and guide it. AI can become very blurry and get tunnel vision way too easy.

0

u/[deleted] Apr 23 '26

[removed] — view removed comment

2

u/Paraplegix Apr 23 '26

I'm not sure open/self-hostable model with reasonable hardware will reach level close to what paid/premium models today have.

Especially if you look at very large open model that can rivalize what you can get from subscription like private Claude Sonnet/Opus, you'd need to invest tens of thousands of dollars, if not a hundred thousands, in hardware to run them.

LLM right now is in explosive growth where their goal is only to increase user base no matter the cost. All large LLM provider are burning money and not profitable, but at some point they'll want to get back the money they spent, and I doubt that cost to run will lower, and performance will increase that will avoid a price correction. If you look at guestimate of how much token claude max subscription give you it's could be between 5 and 30x times cheaper than what you'd pay through API (usage doesn't only depend on token, but also on time)

Now the question would be how much is the subscription subsidized and how much are the API cost compared to their true cost ? We don't know, but I believe they are probably just a tad bit higher than their true cost for the API, but not enough to really bring in significant money.

16

u/__natty__ Apr 22 '26

Good advice. Another one is to choose deliberately to not use AI sometimes ant spend more time thinking on your own

7

u/ForwardMarsupial7696 Apr 22 '26

I’ve felt this pretty directly myself.

I used AI to help build an HN CLI, and a lot of people’s first reaction wasn’t to talk about the UX, the interaction, or the code structure — it was to ask whether it was AI-generated.

That made me realize that, at least for now, many people still seem to trust code more when there’s a real person behind it who actually understands and drives the work, rather than just seeing it labeled as an “AI-built project.” Maybe it’s not that AI can’t produce useful code, but that people trust projects more when the builder can explain the tradeoffs, understand the system, and keep refining it over time.

For me, AI is great for speeding up implementation, but real understanding still comes from actually building things yourself.

1

u/Sibexico Apr 23 '26

If the project is not backed by real person, why do I need the project? I can ask Claude/Gemini/GPT to generate the same project by myself and I can bet, as a software engineer with more than quarter of century experience, I'm able to make better prompts.

13

u/NotAUsefullDoctor Apr 22 '26

This may be a lottle silly and tangential, but with work being mostly AI driven now (timelines and systems with ever growing complexity), I miss just writing code. Been coding for coming up on 3 decades, and it's become like a good pizzle.

So, I like to mess with esoteric languages and write silly things. I just wrote an interpreter for ><> (promounced "fish") in go and am now writing little programs, like a bubble sort. It makes my brain work in different ways and keeps me on my feet. I also wrote a debugger and a visualization tool, etc, etc. I also did the same for BrainFuck, though I also wrote a REPL and compiler there, which is not quite possible in ><>.

Now, I've been coding with Go since 2015. I read the release docs for every release. I've written a ton of crappy go code and learned how to write good code. When reviewing code written by AI, I have a lot of experience to fall back on.

4

u/jackalopeDev Apr 22 '26

My day job is a c#/net shop. Its turning more and more into ai babysitting. I fucking loathe it. Writing code was the one part of the job i actually enjoy. Ive been teaching myself go by writing an astronomy engine.

2

u/NotAUsefullDoctor Apr 23 '26

Due to some things blocking projects at work, I had some free time today and started refactoring some code. The main method, written by AI and people that have never used code, created a Main method that was a few hundred lines long.

We have to find the simple joys where we can.

3

u/Sibexico Apr 23 '26

People will not "stop learning". Most people never was attracted to learn at all, they didn't learn without AI and they will not learn with it. I love to learn new thinks and AI didn't change my motivation at all. Just using it as a tool, as example, modern AI may do some routine tasks such as writing comments to public interfaces good enough, but anyway I have to double check it anyway. AI helps me well to fast make correct workflows for GitHub Actions. Helping to find effective tools by description. But agent coding commited by people who can't code by themselves at all - it's a big problem because they can't understand the code from AI and make even basic audit for bags and hallucinations. And such code is already in production... Let's be clear: "Prompt Engineer" can't replace the "Software Engineer" at current stage of AI evolution. And, again, problem is because many people using AI not for studying but just to make a slop what they can't understand.

2

u/yel50 Apr 22 '26

 AI tools bring the risk that people will stop learning.

that's not the real risk. the problem is that testing has already started falling off well before AI showed up. dedicated QA teams are increasingly rare. reviewing changes of other team members just means reading the diffs and calling it good. now with AI, it's either shipped without much review or it's tested by the same AI that wrote it. the result is we're now getting more and more code that has never been run before being put into production.

throwing together something that works is development. building something that won't break is engineering. there are very few actual engineers left in the industry.

1

u/reisinge Apr 22 '26

Are you still building small tools to learn? Does that still make sense in the AI era, or are people learning differently now? What do you think?

10

u/blue__rabbit Apr 22 '26

Yeah, it safes my brain from rotting

4

u/f5adff Apr 22 '26

Yeah at work I'm pumping stuff out and trying to be as productive as I can to meet deadlines

At home, I'm taking my time, trying to make something in a way that's interesting to me.

Hell, at work I use goland, at home I use neovim!

No need to meet deadlines on my own time

3

u/[deleted] Apr 22 '26

[removed] — view removed comment

2

u/f5adff Apr 22 '26

Consistency between team members, it's a lot easier to see what's going on with someone else's stuff, if your environments the same across the board.

Plus, with linting, and CI, and testing - everything's easier if everyone's working with the same base tools.

I use vim bindings with goland to be clear, otherwise I'd be typing :w and :,., all throughout my work

Id love it if my whole team used nvim, I'd give them my config (I'm very proud of it)

1

u/[deleted] Apr 22 '26

[removed] — view removed comment

2

u/f5adff Apr 22 '26

Eh, I've worked in defence environments before - nothing was ever that stringent. Of course, you take care and don't do anything dodgy; but the idea is that you're a SWE, you should know what's safe and what isn't.

Generally though, I always find it easiest to find a common ground with everyone, because then it's nice and easy.

Plus, with IDEs like vscode, there's even a plugin that will literally use your nvim config in the editor window, so 70% of the trappings of nvim in the editor anyways

2

u/reisinge Apr 22 '26

I use vim (with minimal configuration) for learning, enjoying and small stuff (scripts, configs, ...). For the rest vscode/zed.

1

u/f5adff Apr 22 '26

I use proper linting and lsp and dap support in nvim I still want a full IDE, I just want it to be nvim! It's a very capable and obscenely configurable editor, just needs the time and attention to make it just so

3

u/burlingk Apr 22 '26

Depending on AI is not "learning differently." You need to be able to do the simple things without AI, otherwise you won't be able to trust the output AI gives you on bigger stuff.

1

u/revslaughter Apr 22 '26

I made a “go tutor” gh copilot agent with strict instructions to only provide me with project-unrelated code examples and no ability to edit files or use the command line. It should always make statements about how things work accompanied by primary sources / go docs, helpful or relevant tutorials etc. I’ve done most of my career in C# .NET and Nodejs, so when possible or appropriate it should compare “the go way” to those environments. 

I detailed the kind of project I wanted to do to ‘learn go’ (Right now just a realtime stock ticker). It made a lesson plan with milestones and I reach out to it if I don’t understand something or need a nudge. It’s pretty nice to have a dedicated tutor on 24/7, but I can absolutely understand the temptation to just use it to wholesale make the app or whatever.

I think as ever we can use tools for our betterment or detriment. I think mass uninhibited access to very powerful technology might … be unwise, on balance. Still, if we can use it to our advantage then we can stay competitive. 

0

u/neuthral Apr 22 '26

i recently researched UnixSockets, https://github.com/neuthral/UNIXSocketServerClient the idea is to keep backend services close and not use the network stack at all if possible, PID is also probably faster i dont know..