Fuck it, make it anyway

Fuck it, make it anyway

去他的,做就对了

I kind of crashed out this week. Not in an explosive, dramatic way, but an implosion, a collapsing of the self, my resolve and motivation crumbling into the mush you get when you put tissue paper through the laundry. I’m doing better now, and I wanted to write down my thought process in case anyone else is going through the same thing, especially, probably, sadly, future me.

这周我有点“崩盘”了。不是那种爆发性、戏剧性的崩溃,而是一种内爆,一种自我的坍塌。我的决心和动力像被丢进洗衣机搅碎的纸巾一样,化为了一滩烂泥。我现在感觉好多了,我想把自己的心路历程记录下来,以防其他人也正经历同样的困境,尤其是——很遗憾,大概率是——未来的我自己。

The reason for this is, I guess, all too familiar for anyone in a creative field: surprise, it’s generative AI. The ongoing devaluation of the work of artists and makers, chewed up and regurgitated back to us like a mother feeding a baby bird with a subscription model. I have some hope for my friends in other artistic fields; AI art is shit, kind of by definition anti-art, embarrassing to look at and cringe-inducing to be associated with. I hope that continues. On the programming front, where I mostly live, things look a little dicier.

我想,对于任何从事创意领域的人来说,原因都太熟悉了:没错,就是生成式 AI。艺术家和创作者的作品价值不断被贬低,被嚼碎后又以订阅制模式像母鸟喂食幼鸟那样反刍给我们。我对其他艺术领域的朋友还抱有一丝希望;AI 生成的艺术是垃圾,从定义上讲就是反艺术的,看着尴尬,与它扯上关系也让人难堪。我希望这种情况能持续下去。但在我主要深耕的编程领域,情况看起来就没那么乐观了。

Every programmer I know has basically gone insane over the last couple of years. This is the most turbulent time to be a software engineer I can remember. We’ve had it relatively easy up until now, but there’s an increased feeling that the whole craft is going through a huge shift and every individual needs to decide how they respond to it, which is very hard without the benefit of hindsight. I can’t really blame anyone who’s just gone along with things, despite the various negative externalities - peer pressure is very real, and LLMs are genuinely very capable at code generation now. Denying that is, I think, a race against a moving finish line.

我认识的每一个程序员在过去几年里基本都快疯了。这是我记忆中软件工程师行业最动荡的时期。在此之前,我们的日子相对好过,但现在有一种强烈的预感:整个行业正在经历巨大的变革,每个人都必须决定如何应对,而在没有事后诸葛亮的情况下,这非常困难。我无法责怪那些随波逐流的人,尽管这带来了各种负面外部效应——同侪压力是真实存在的,而且大语言模型(LLM)在代码生成方面确实非常强大。我认为,否认这一点无异于在与一个不断移动的终点线赛跑。

I’m not writing this to try and convince anyone of any particular position but here’s mine: even disregarding all the environmental and societal issues, I simply do not enjoy programming with a code assistant. It isn’t fun for me, the output doesn’t feel like mine, and I take no pride in what it produces. For the last couple of years it hasn’t been too hard to just stay in my lane, noodling away at my little projects, but increasingly it feels like a lot of this craft I’ve made a career and a hobby out of has vanished.

我写这些并不是为了说服谁接受某种立场,但这是我的想法:抛开所有的环境和社会问题不谈,我单纯就是不喜欢使用代码助手编程。这对我来说毫无乐趣,产出的代码感觉不像是我的,我也无法为它产生的结果感到自豪。过去几年,我还能安守本分,在自己的小项目里自得其乐,但现在我越来越觉得,我以此为职业和爱好的这门手艺,正在逐渐消失。

I love making doodads, little shell scripts, little helpers. I use my interactive git branch switcher every single day. I was very proud of that. Colleagues said nice things. Now anyone can just order that tool or anything like it off a prompt. Nobody cares about my doodads any more. It feels gauche to admit but I do actually need those head pats from my peers to feel fulfilled.

我喜欢制作各种小玩意儿、小 Shell 脚本、小辅助工具。我每天都在用我写的交互式 Git 分支切换器,我曾为此感到非常自豪,同事们也给予了赞赏。但现在,任何人都可以通过提示词(prompt)直接生成那个工具或类似的任何东西。没人再关心我的小玩意儿了。承认这一点显得很笨拙,但我确实需要同行的认可和鼓励才能感到满足。

This is happening in games, too. This week’s crashout was triggered by a thread from Zach Gage about how game making is moving to be more like music. I think it’s a good insight but I found it utterly devastating. I’ve spent years learning how to make games, and it’s been hard, and now it feels like that might have been a waste of time? I was bereft. Then I had a chat with Shad.

游戏行业也在发生同样的事情。这周我的崩溃是由 Zach Gage 的一条推文引发的,他提到游戏制作正变得越来越像音乐创作。我认为这是一个深刻的见解,但对我来说却是毁灭性的打击。我花了多年时间学习如何制作游戏,过程非常艰辛,而现在感觉这一切可能都浪费了?我感到万分沮丧。后来,我和 Shad 聊了聊。

Shad’s one of my faves. He’s a terrifically talented designer and engineer and an all-round great person. His current project is Uncamera, a camera app for iOS that uses raw sensor output with lookup tables - rather than a filter in post - to produce photos that genuinely look like film. It’s a beautifully made thing and I honestly think a contender for an Apple Design Award when it’s fully done. You should check it out. Here are some photos I took with it (I am not a good photographer). It also happens to be developed entirely without generative AI. Shad’s reasons for this are very similar to my own; a lack of joy or fulfilment in the making of the thing. His anxieties are also similar. The difference is that Shad has kept updating Uncamera in spite of those anxieties, while I wallowed in self-pity.

Shad 是我最欣赏的人之一。他是一位才华横溢的设计师和工程师,也是一个非常棒的人。他目前的项目是 Uncamera,这是一款 iOS 相机应用,它使用原始传感器输出和查找表(LUT)——而不是后期滤镜——来生成真正具有胶片质感的照片。这是一个制作精美的产品,我真心认为它在完成后有潜力角逐苹果设计奖。你应该去看看。这里有一些我用它拍的照片(我摄影技术不太好)。顺便提一下,它的开发完全没有使用生成式 AI。Shad 坚持这样做的原因和我非常相似:在创作过程中感受不到快乐或成就感。他的焦虑也与我类似。不同的是,尽管有这些焦虑,Shad 依然在不断更新 Uncamera,而我却沉溺于自怜之中。

Here’s the thing: I’m already doing everything the hard way. I decided to make my own game engine, in C++ of all languages, because I wanted to do it. If my goal was to make games as quickly as possible, to be able to “compete”, I’d be using Unity or Godot or Unreal. I wouldn’t be messing about trying to produce a faux-3D renderer like in the header image of this post. I do things the way I do because I enjoy doing it that way and because I learn a lot through doing it.

事实是:我本来就在用最难的方式做事。我决定用 C++ 语言编写自己的游戏引擎,仅仅是因为我想这么做。如果我的目标是尽可能快地制作游戏以进行“竞争”,我会选择 Unity、Godot 或 Unreal。我才不会费劲去折腾像本文题图那样的伪 3D 渲染器。我之所以这样做,是因为我享受这个过程,并且通过这种方式学到了很多。

Through chatting to Shad I came to realise there are only really three paths open to me. I can start using generative AI to feel like I’m “keeping up” or “competing”, but then I won’t enjoy the work. I could stop making things entirely, but as any creative person will know that’s never really an option. Or, I can keep making things the way I enjoy, keep learning, keep doing it the hard way, for no real concrete reason other than I want to do it. That’s why we make games. That’s why we make anything.

通过与 Shad 的交谈,我意识到我面前其实只有三条路。我可以开始使用生成式 AI,让自己感觉是在“跟上节奏”或“参与竞争”,但那样我就无法享受工作了。我可以彻底停止创作,但任何创作者都知道,这根本不是一个选项。或者,我可以继续以我喜欢的方式创作,继续学习,继续走那条艰难的路,不需要什么具体的理由,仅仅是因为我想做。这就是我们制作游戏的原因。这也是我们创造一切的原因。