我花3个月时间用旧方法编程。
I'm spending 3 months coding the old way

原始链接: https://miguelconner.substack.com/p/im-coding-by-hand

## 编码静修与重拾基础 2026年3月,作者在布鲁克林的Recurse Center开始了为期六周的编码静修,在巴塞罗那的Aily Labs构建AI智能体后重返美国。此前,作者沉浸在快速发展的LLM世界中,甚至预见到了像Anthropic的智能体研究这样的趋势,但这次静修的重点是基础编码技能,源于一种真正*理解*工具而非仅仅使用它们的愿望。 作者观察到,过度依赖AI编码助手可能会阻碍深入学习和代码理解。Recurse Center提供的协作、免费的教学环境是解决这一问题的理想场所。他们的目标包括从头开始训练一个LLM,提高Python熟练度,并更全面地理解计算机科学原理。 进展包括完成斯坦福大学语言建模课程的作业,在老式硬件上用BASIC编写代码,以及参与Unix安全挑战。至关重要的是,与经验丰富的开发者结对编程被证明非常有价值,促进了快速解决问题和巩固基础技能。这次静修强调了编码中“深度工作”的价值——为了真正理解所需的精神努力,并旨在为作者未来的AI开发提供更坚实的基础。

一个黑客新闻的讨论围绕着一位开发者决定用“老方法”编写代码三个月——似乎没有过多依赖人工智能工具。这篇帖子引起了一位最近完成类似编码密集型训练的评论者的共鸣。 然而,一个关键的争论点浮出水面:专注于传统编码是否是时间最有价值的利用方式。 几位评论员认为,目前掌握人工智能代理管理才是最大的杠杆所在,并指出在这一领域熟练的团队成员之间存在显著的绩效差距。 虽然承认与人工智能合作会让人感到疲惫,但他们认为这项技能将保持至关重要。 一位评论员戏谑地建议水管工是一个更具未来保障的职业,如果追求长期的相关性的话,而另一位则强调了基础编程知识和“品味”对于真正有影响力的工作的重要性。
相关文章

原文

I decided to move to Brooklyn for a coding retreat.

There were some personal reasons that brought me back to the US. But rather than heading immediately back to work, I wanted to take some time to focus on coding things mostly without AI — at precisely the time when many successful programmers are saying programming is a solved problem.

Given that I’m now six weeks through this retreat, I’ll also take some time to explain what I’ve been doing in that time.

For the past two years, I’ve been building AI agents at Aily Labs in Barcelona alongside some super talented engineers. One of my first projects was building a web search agent we could use internally in early 2024… almost 6 months before Anthropic’s Building Effective AI Agents article came out and a year before OpenAI’s DeepResearch came out! We were also early on Cursor, early on using LLMs to make knowledge graphs, and constantly testing out new approaches for our use cases.

One of my favorite parts of working at Aily was leading a weekly journal club. I chose to present papers that described how open source LLMs were built, including DeepSeek R1, Ai2’s Olmo 3, and Meta’s Llama 3 paper. All of these helped us understand the evolving tradeoffs between training models internally or building workflows around SOTA closed models. I was already hooked on LLMs since the first time I tried them in 2023, but I found my curiosity kept bringing me back to learning about how they worked and how to apply them.

At the same time as I was learning about LLMs and agents, I was also using them to code. I learned that when writing code “by hand” I was actually doing two things: writing what I wanted and learning the code base. When I used a coding agent however, I would get exactly what I specified in my prompt, for better or worse. By this I mean that if I didn’t know what I wanted exactly, coding agents would be happy to make many assumptions for me. This almost always meant that I didn’t learn as much, and that I wouldn’t have a good grasp of the codebase.

At the exact same time, coding agents helped me iterate quickly and ship software that worked well (after some dutiful testing, of course). They were also, I found, excellent tutors.

Cal Newport, a computer science professor and writer of Deep Work and other popular productivity books, recently wrote about this tradeoff in a way that resonated with me. In the article, he makes an analogy between the relationship of exercise to health, and the relationship of thinking to craft:

Your writing should be your own. The strain required to craft a clear memo or report is the mental equivalent of a gym workout by an athlete; it’s not an annoyance to be eliminated but a key element of your craft.

I think the same applies to writing code. At Aily, the people I worked with who were amazing programmers were in most cases also amazing users of AI. Their deeper knowledge simply gave them more leverage over this tool. In the day to day of shipping agents into production, I didn’t stop learning. But I did have a growing list of coding and computer concepts that I was always too busy to learn about.

So when I needed to head back to the US, I realized it was the perfect time to focus on this at the Recurse Center.

Recurse Center (RC) is a self-directed, full-time programming retreat in Brooklyn. After an application and a coding interview, Recursers arrive with ideas for what they want to program, and then spend 6 or 12 weeks programming. One of the highlights of RC is that it is collaborative: you enter with a cohort of other programmers, many with decades of experience, and with radically different expertises. Another highlight: it’s free!

Coming into RC, my goals were the following:

  1. Train an LLM from scratch. This includes pre- and post-training, and I want to do this mostly from scratch; not just fork a premade codebase but write a Transformer myself.

  2. Get better at writing Python by hand. I’ve been working in Python for a few years now but I know there’s still so much for me to learn. I want to get to the point where I need to reference documentation or ask LLMs as little as possible, and have good intuition for how to set up various projects.

  3. Understand computers better. Admittedly a broad goal, I know that computers are extremely complicated machines that operate at many levels of abstraction. Given that I never had a formal Computer Science education I want to build a better mental model of these layers and how they work together. I don’t have a super concrete plan here, but I think RC will be the perfect place for this.

So how is it going?

I’ve done the first assignment from Stanford’s CS336: Language Modeling from Scratch course, without coding help from an LLM. For context, it was a 50-page assignment, but working with another Recurser, we wrote an optimized tokenizer in Python, and then built out an upgraded GPT-2 style architecture in PyTorch. We ran multiple ablations to tune hyperparameters on the Tiny Stories datasets, and then used those hyperparameters on the ~9 billion tokens of the OpenWebText dataset.

My plan is to do the other assignments in CS336 as well: optimizing our language model, estimating and computing scaling laws, converting raw text data into pre-training data, and finally post-training a model. I’ve already started the second assignment which involves profiling GPUs and implementing FlashAttention2 in Triton. There’s a lot to do, but ideally I can run through the meat of these assignments and then post-train my own model.

I’ve been writing a lot of small agents and neural networks in Python or PyTorch to practice. But by far the most helpful thing was pair programming with people who have been working in Python for 10+ years, and just watching them work or having them watch me work.

For example, a nice thing I picked up from someone I pair programmed with: when this guy was writing code and didn’t quite remember the syntax or operations, he would often just quickly open up a terminal and type a super simple example to rapidly iterate. He was usually able to work it out and verify if it worked correctly in less than a minute, and he didn’t have to google anything and comb through search results or ask an LLM. This technique might seem obvious to some, but making this process muscle memory has helped me become unstuck much faster.

I want to keep moving in this direction, doing simple projects or even just problems like Advent of Code while pair programming. Working with someone else live was initially a bit nerve-racking, but precisely because of this I’ve noticed a lot of progress.

Here are a few examples of things I’ve done which I’d classify as helping me understand computers better:

Even just hearing from people about their projects and careers has been incredibly valuable in helping me understand the space of problems computers can solve.

Soon I’ll be shipping agents to prod and running evals with a whole new bag of tricks and skills. But for now I’ve got 6 more weeks left at RC, which I’m beginning to worry is not enough time to finish everything on my list. And it won’t be. But that’s what makes RC so great: it’s not as much about crossing everything off my list but about spending time coding.

联系我们 contact @ memedata.com