抛下我
Leave Me Behind

原始链接: http://androidessence.com/leave-me-behind/

回顾十年安卓开发历程,作者认为软件工程的真谛不在于最终产品,而在于过程中建立的人际联系与社区纽带。从通过共享资源学习,到在黑客松中协作与辅导同事,作者在软件构建过程中所经历的挣扎、试错以及协作中的权衡中获得了深刻的成长。 作者将大语言模型的兴起视为对这种协作精神的威胁。虽然人工智能可以自动化任务并生成代码,但它绕过了定义职业成长的批判性思维与指导。通过将解决问题的过程外包给“黑箱”,工程师有失去从人际互动中获得的技艺、韧性以及深度理解的风险。 在作者看来,软件是一种艺术形式,是一门由奉献与社区支撑的技艺。由于人工智能缺乏共同挣扎、欢笑及建立真诚联系的能力,作者选择拒绝一个仅由人工智能辅助开发所定义的未来。他们总结道,如果保持软件工程中的人性意味着被人工智能革命“抛在身后”,那么这是一个他们非常乐意做出的权衡。

这篇 Hacker News 的讨论围绕文章《将我抛在身后》(Leave Me Behind)展开,文中反思了人工智能对人类劳动的替代。作者对开源人类协作时代的终结流露出悲伤与怀旧之情,并将大语言模型(LLM)视为仅仅是统计意义上的“预测机器”,认为它们威胁到了工程师传统的学习与交流方式。 评论区呈现出截然不同的观点。批评者认为作者的担忧是“主角综合征”或拒绝适应行业必然变革的表现,并指出这些工具是人类能力的进化,而非编程的丧钟。支持者则展开了更宏观的哲学探讨:有人援引马里奥·萨维奥(Mario Savio)关于不要成为“可恶机器”中齿轮的经典警告,也有人认为作者只是陷入了“沉没成本谬误”。总之,这篇讨论捕捉到了坚守以人为本技艺者与拥抱 AI 技术实用性者之间的张力,凸显了开发者社区在面对软件开发未来时的深刻矛盾。
相关文章

原文

“If you don’t learn how to use AI, you’re going to be left behind.”

So leave me behind.


I learned to build Android applications in 2014. I was in college taking a Java programming class, when a classmate shared a free online course to learn Android development. The goal was short: build a todo list app with local storage.

When I completed the minimum requirements, I unplugged my phone from my laptop and went over to my parents to show them what I built. I often refer to this as my “lightbulb moment”. Here in my hands was a real, tangible piece of software that I built and could interact with. It wasn’t the first time I programmed something, but it was the first time I had an application on a device that I could carry over and show someone. The app lived in my pocket, always available when I needed it, to help me stay organized and productive.

Immediately, I realized a sense of purpose in my work. I was learning the skills necessary to give people direct access to a tool that can create a truly positive impact. I fully experienced this first hand in 2018 when I found myself working on the very dating app I would use to meet my wife.

After taking this first course, I would spend the next decade honing my skills as an Android developer. I helped maintain a number of applications with real world, tangible benefits for others - whether that’s finding their special someone, gaining easier access to their medications, or supporting them to travel and see all of the beauty this world has to offer.

As I look back on this journey so far, it’s not the outcome of these applications that I cherish most. It’s the people who have made it all happen.


In the beginning of my journey, my goal was to consume as much information as I could. I would sign on every week to my course and learn everything the professor could teach me about Android. I would take another course where Googlers taught me how to build a weather app, and I couldn’t get enough of these experiences. I would sit down and work on the weather app in between every class, or even instead of taking a proper lunch break. I was in awe of the depth of knowledge of the people behind the camera, and their willingness to share it publicly for others to benefit from.

The next few years would be spent practicing by building. I attended over a dozen hackathons, connecting with hundreds of other enthusiastic budding software engineers who were just as enamored with the spirit of building. I’d hop in a car with a couple of friends and drive anywhere from two to eight hours, where we’d spend three days getting about as many hours of sleep building social apps, pet trackers, and even NFC tag capture the flag games. We’d amp ourselves up with caffeine, argue over tech stacks, and spend a weekend full of laughter, friendship, and the unbridled pride of building something as a team. It didn’t matter what we built, it didn’t matter if we won a prize, the reward was in the experience.

Upon graduation, I found myself working at a digital marketing company. I started my first day as a professional Android developer so inspired to take everything I had learned and bring my skills to new heights. I met the teammate who would sit next to me in the office, and one of his first questions was “What do you know about RxJava?”

I panicked instantly. I had never heard of it.

Without any hesitation or judgement, he began sharing his experience with me. He taught me everything I needed to know about reactive programming, how it fit into the context of the app we would be working on together, and suggestions for getting up to speed. He and I would go on to be the office clowns, filling the room with contagious laughter and cackles, while still having such a deep passion for our work and growing together.

It also happens that this teammate would be the one to bring me to my first Android conference at Droidcon NYC. Awestruck doesn’t begin to describe how I felt in that environment. Hundreds of engineers with the same niche passion as me. Dozens of speakers volunteered to share their knowledge with the world. I knew without a doubt this was the guiding principle of the current stage of my career. Those heroes inspired me to get up on stage and share my expertise with the next generation of Android engineers coming in behind me. I look for every opportunity I can get to help another engineer, and pay forward all of the ways others have helped me.

Throughout all of these experiences, and so many more than I have time to share, it was the human connection that made it special. The laughter that helped me get through a hard problem. The sleepless nights that reminded me I was not alone. The selflessness of others to get on stage or behind a camera and teach people they didn’t even know, often for little or no cost, just so that others would be enabled to build and have an influence.


Suddenly, LLMs hit the mainstream and threatened the current style of software development. A simple promise - you no longer need to learn to code, you can simply prompt what you want and it will generate the code for you.

Initially I was excited - I’m a software engineer, of course I’m excited about prospective new technology. After trying it though, I realized it wasn’t quite there. It hallucinated and suggested methods that didn’t exist, or introduced obvious bugs, or in worst cases didn’t actually compile.

There was a new promise that it would get better, so recently I tried these tools again. It had certainly gotten better. It wrote code that compiled, it analyzed stack traces and suggested fixes, and it even reviewed my code for me.

It also depleted the human experience.

If I encountered something I didn’t know, I would ask the AI what to do, and rely on the first answer that worked to achieve my goal. Previously, I went to Stack Overflow and learned from another human being who had already experienced the same struggle, and shared their information in the open to help others. On Stack Overflow, engineers would not just help but push back and challenge my assumptions to set me up for future success. Just as well, by taking the time to research my struggles, review the information that was out there, and see community votes to understand the general approval (or disapproval) of a solution, I was enabled to fundamentally comprehend the problem and solutions to grow the muscles needed to solve it again in the future.

If I was asked to build something, I would delegate to the machine instead of using the skills I’d spent a decade perfecting. Engineers love automation, but it serves us best for the menial, repetitive tasks. When we automate critical thinking, we begin to lose our own skills to build resilient, lasting software. Some argue LLMs actually enhance this - by producing code quickly, it allows us to think critically about the systems we’re building. In my experience, this argument missed another fundamental building block of learning software development - trial and error. Trial and error is not simply whether your app works or crashes; It’s trying different architectures, libraries, patterns, and styles to find what best helps you achieve your goals.

If I wanted feedback on my solution, I would ask a black box instead of sitting down with a colleague and making a case for my implementation while having a real conversation about the trade-offs that were made. Those trade-off conversations were not just theoretical, but often based on the other person’s lived experience of what did and did not work in their own projects.

Finally, I snapped out of it. This was not the life I wanted.


These LLMs are prediction machines. They are text generators that are ultimately a bunch of fancy statistics, trained on the years and years of dedication by brave engineers willing to learn and build in the open. Building in the open meant we were not gatekeeping technology, but creating tangible examples for young engineers to explore, understand, and learn from.

They don’t laugh with me when my code fails to compile after I swear “this is the one.” They don’t help me develop an understanding of my software, so that when someone says “how does this work” I can pour my heart out with passionate explanations. Most importantly, they don’t turn their head and smile and participate in the inexplicable elation of saying “we built this!”

I desire to connect with people. I long for the days where I was vulnerable and shared my struggles with engineers who charitably stepped up to support me. I miss taking what I learned from those struggles and sharing them back out as a blog post or presentation, encouraging the next person to overcome the same challenge.

It will take me a while to get back into these habits that have been weakened from AI use, but it is a necessity to maintain humanity in software development. It is sincerely an art form; A craft that takes dedication, perseverance and especially, a strong community to endure. Software was built by humans, for humans. If it’s not built by humans, then who is it being built for?

If that experience of building with AI is truly the future, then you can leave me behind.

联系我们 contact @ memedata.com