如果想成為頂尖的工程師,搬來舊金山

Esther is a confused human being
36 min readDec 8, 2024

--

如果AI 大幅降低了學習門檻,幹嘛搬家?

自從 AI 程式工具出現,學習程式的門檻大幅下降,X 上面就出現很多連 10 歲小孩也能寫軟體的影片。Cursor 等AI 工具的出現,不只是降低的學習軟體工程的進入門檻,更大幅提升了學習體驗的滿足感。

Cursor 的創業團隊說他們在乎的用戶體驗來自 “fun = speed” 是有道理的,AI 提高速度帶來的快感,不只來自於不用再像以前一樣卡在一個 bug 卡很久,求師無門。現在寫程式,也不需要花時間計較編程語法的細節, AI 也可以根據目前代碼庫 (codebase),了解上下文 (context),根據同個文檔的資訊寫出需要的代碼。而這個快感也延伸到 AI 的程式的生成速度上,譬如說 Cursor 就會把整個代碼庫暫存 KV cache,因此 AI 就不用重跑變化不大的上下文,你問問題時也不需要給他相關的編碼,他可以自己搜尋。因此,從理解層次(解決問題、學習新的語言)到執行(寫出正確代碼),AI 都能一手包辦。

簡而言之,只要基礎概念足夠清晰,就可以和 AI 協作進行修正,通常讓高級的 AI 可以負責規劃,而基礎的 AI 負責執行,學寫程式變成一個更輕易試錯、迭代的歷程。那在這個人人都可以用 AI 的時代背景下,我們待在什麼城市,有什麼關係呢?

舊金山的工作工作工作文化,寫程式就像呼吸

除了大科技公司的員工多在意 work life balance,其他科技人通常工作及生活,有新創圈的朋友因為極端的工作主義被放上新聞。但即便撇除工作至上主義,很多人可能也都有自己的 Side project。

這位同學是真的很愛工作,他不工作會憂鬱

因此上班、下班其實沒有太大的差別,畢竟上班下班都在寫程式,然後週末去黑客松繼續寫。因為太多黑客松了,每個週末,我可能都得三個黑客松挑一個去,很多黑客松都是大公司像是 Openai、Anthrophic 贊助的,非常高級。

我的生日三個挑一個去

但即便是熱心人士自己在家裡舉辦的居家黑客松,舊金山也因為人才濟濟,會有神秘的名人現身,之前就在某家見到知名機器學習作家 Chip Nguyen 害我說話吞吞吐吐,如果你不能理解,你可以想像他是機器學習界的 BTS,然後你在某個人家家裡撞見他心跳加速的感覺。

因此你可以想像,在這樣生活風格下,可能每天都會寫程式,寫久了,就像是吃飯、喝水一樣令人習慣,也不覺得是在工作了。帶了一年後,寫程式之於我,就如同 Tiktok 之於現代人,是生活的預設的狀態,至於為什麼有這個文化,以下會做細緻的討論。

整個城市都是我的家庭教師

那如果我假設你不在新創工作,只以非常學習取向的方式來討論程式學習,也能夠很輕易地看出為什麼待在舊金山比在學校好得太多了,而以下會以人際網路的方式來探討為什麼舊金山的學習工程的速度是其他地方不能比的。

第一次學程式的困境:只有半個老師

就拿大學時,非工程學習,但修了一堂資訊課的我來說吧。說實話,我並不覺得自己有太多工程上的天份,更直白點說,應該是完全沒有天份才對。在台大上個給商學院學生的程式課學得亂七八糟。後來還主動學了四五次,都因為遇到卡關而作罷。

當時最大的困難,不只在於不明白程式語言、工程思維、連英文能力很差的情況下,連查個資料都很有難度。老師總是喜歡說「不會,就Google。」但我可是連把自己的問題,打成一個 Google 可以準確搜尋的關鍵句子都非常勉強。

當時唯一的學習管道,算是朋友 Reggie 吧!但我們的關係為非正式、非義務性、也沒有明確學習路徑的朋友關係,也沒有機會接觸資工相關的人際網路,有一搭沒一搭的學,學習動機容易隨著卡關下滑,自然沒多少進步。

轉戰資工系:也只有一個社群

那你可能會問,那如果是資工系的學習呢?畢竟加入系所,就是正式、義務的學習模式,也有同學相互切磋了吧。

在 Minerva 念 CS 的時候,確實是有一群同學和教授,有明確的學習路徑、學習時數、完成作業的義務。但即便如此,大部分的時候也只在課堂互動,或限於作業的框架範圍。教授為主要的資訊傳遞者,但也大概只有一週兩次下課加上 Office hour 的時候才能夠更深入的學習。如果想要擴增學習領域,從基礎演算法框增到學習 Duolingo 推播的演算法,還是要自己想辦法的。學習網路是有的,但只有一個,而且身邊同學的實力大同小異,大家常常卡在一起。

舊金山的學習:整個城市都是我的家庭教師

在舊金山有機的學習網路就比其他地方多上許多,我分成四個學習,工作、加速器、黑客松、科技活動來探討。

  1. 工作環境:當然會有資深工程師的指導,新創講究速度,非常有利於學習曲線的指數性成長,但如果我們現在假設你不在新創工作,那你還有接下來三個社群。
  2. 加速器環境:我的公司和前公司都在新創社群,簡言之,就是一個讓很多新創進駐工作的加速器,平常人如果找得到管道也可以進來。因此每天除了和公司內部人才的學習,也和身邊的其他新創學習,粗淺的玩其他公司做的機器人,深入的則是合作發展 SEO 策略,軟體新創的問題大同小異,有非常強的聚集效應。此外,會來的工程師很多也想自己創業,我在失業期就找到需要幫忙的工程師,他成為我的個人家教,讓我在幾週內快速學會前端工程。
  3. 黑客松:即便你沒工作,混不進加速器,那還是可以去黑客松,舊金山每個週末都有黑客松,而週末還會來寫程式的人通常也是對於寫程式充滿熱情,神乎其技的工程師。有些熟面孔每週都會看到,最後也都認識了,向大家學習。
  4. 科技活動:舊金山一週大該有 20 場 AI 相關的科技活動了,有些是工程師們去 Demo 自己的專案,有些是公司性的推銷活動或是講座。大部分不懂舊金山的外人會來參加大型活動,但我個人認為這些活動沒有實作、講的粗淺、也只是幾分種粗淺的認識人,學習效果最差就是了。

此外,AI 無法取代人的地方,是見解和哲學。AI 或許可以寫很多程式,但沒有辦法教你如何思考 debug 和某個語言的哲學,這只有遇見好的工程師會告訴你的,譬如説,為什麼 React 的 state management 這麼奇怪,其實就是因為 大部分的程式語言是 imperative ,你告訴程式第一步到第十步,但 React 是 declarative 語言,不在乎中間的流程,只在乎最前與最後的結果。這些更像藝術與哲學的思維與想像,我想都會未來最被重視的技能。他們的哲學,也讓我從害怕程式到出現真實的興趣,可以一輩子帶著走。

聚集經濟帶來的網路效應

大部分的人思考人際網路,可能會想到未來可以找工作的人脈等等。不過我想談的是舊金山工程人才密集帶來的網路效應 (network effect) 帶來的高速學習。

我觀察到的現象有 (1) X 變成快速累積篩選學習資源與社會資本的地方 (2) 天天交付程式 (ship everyday) 是舊金山人的驕傲,所有人都有自己的 Side project。

這樣獨特的文化推崇天天寫程式,也讓學習有很高的收穫期望值和快速的學習迭代,住在舊金山要不成為頂尖的工程師也挺難的吧。

X 變成快速累積社會資本與篩選學習資源的地方

社群網路 X 是舊金山人的 Linkedin,我的 X 充滿著新科技產品的影片、論文、和效能討論。實際上是,如果你有做出一些像樣的專案,你是可以一夕爆紅的,紅到吸引投資人。像是朋友剛到舊金山的時候,只有 4 個追蹤者,發了幾個月的機器人手臂之後,追蹤者暴漲,創了公司,知名的投資人也去密他。

另一個鄰居做的機器手臂,會餵你吃薯片喔!

舊金山的人才高度密集,讓你知道你和知名的科技人在 X 上真的只有幾步之遙,如果認識一些網路核心 (network hub) ,想要找誰其實都很快,也會被邀請進有門禁的特殊活動,或是 Apple 的發表會等。這和一般城市要慢慢向上爬完全不同,舊金山相信年輕人,有才就有機會,帶給工程師們非常強烈的學習動機,不會有花很多時間學習慢慢轉職成功,或是花很多時間終於有人看見你的專案等,收割遲緩的問題。

既然好的新科技很快就會在 X 上出名,平常見到的人也很快就會告訴你,篩選出好的學習資源自然容易,畢竟整個城市都幫你篩選好了。學習新科技遇到的問題常常是工具的選擇,選了一個不好用或是難學的工具,也找不到人求教。舊金山的集體智能都幫你選好了,好的工具在 X 上曝光,在線下的認識的人認可,是會聽到很多次,看到很多熟人轉發的,想不知道都有困難。

這就和菜市場不知道要買哪一攤的菜一樣,不需要每家都嘗試,認真審查,只要聽三姑六婆咬耳朵就差不多可以相信了。目前學工程的大問題其實不時資源不足,而是資源雜亂,不知從何下手,但如果社群已經幫你做出學習選擇,不但省時、省力,踩雷機率小,還可以在透過身邊的人的解釋大致了解工具的運用方式,在 X 上看效能,其實學習地圖自然而然就在腦海裡成行了,根本不需要大張旗鼓地做研究。也降低了學習卡關的阻力。

總結而言,X 與現實交錯互動帶來的外部肯定,與對學習資源的篩選效果都帶來快速學習的動機與成效。

天天交付程式 (ship everyday) 是舊金山人的驕傲,所有人都有自己的 Side project

如果談論社群的力量,就得談論社群所造就的文化。當工程師高度密集,AI 新創爆發性成長,大家在社群媒體評斷人的標準就已經不太是職位了,而是已努力寫程式。從開始寫到上架的速度,一週寫幾天都是賣弄的內容。許多人會炫耀自己的 Github 有多綠(推送了多少程式),很多新創招人廣告也會說:「如果你的 Github 是一片青綠,你就是我們想要的人才!」但在台灣根本沒多少人會管你的 github!

在這個人人都有機會的城市裡,Shipping fast 成為身份認同,超越職稱和畢業學校(畢竟這裡超多人輟學),是優秀人才的絕對指標。雖然看似愚蠢,但其實我所見過的優秀工程師,或是高度成長的新創,大家的 Github 確實是一片青綠,鼓勵大家天天寫程式,讓寫程式變成像呼吸空氣一樣自在,我現在也真的是天天都會寫,沒寫就覺得哪裡不對勁。

至於人人都有 Side Project 也是這樣文化下的產物,週間上班寫程式,週末在黑客松繼續寫。Side project 不只是愛好,他們也可能變成下一個公司,如果在黑客松贏了的話,很多是可以拿到投資或是新創加速器的座位,或是得到 X 上知名科技人的青睞,或是很多人使用,這和一般人想像自己做好玩,沒有人在乎的 Side Project 期望值完全不同。此外,因為高度密集的黑客松,Side Project 的回饋週期非常短,也可以找到其他人一起做,因此迭代速度可以非常的快速,專案的發展自然有好的動力。大家見面打招呼也變成 “What are you building?” 。

那如果一個學習環境以寫更多程式為榮,大家正業是寫程式,休閒副業還是寫程式,身邊見到的人也討論程式,任何一張白紙人才一送來舊金山馬上就會填上代碼的。

沒有的娛樂,專心致志的城市氛圍

除了網路效應外,先天的程式限制也會讓人成為好的工成師。因為舊金山沒、有、娛、樂,完全是工程師無人島。

我沒錢,所以更沒有娛樂。不像是在台灣,到處都有好吃的好玩的。而且舊金山晚上出門並不安全,還得很多人一起才敢出門,根本不可能有什麼夜衝,太陽下山了,大部分的時間就待在家了。即便想要探索科技以外的領域,像是文化與藝術,不但機會不多,品質也不高。

像是我去上了跳舞課,問了同學他們在做什麼。

「我是系統工程師。」

「我是機器學習工程師。」

「我是初級工程師。」

謝囉,全部都是工程師、工程師、工程師,我懷疑只有跳舞老師不是工程師。壞處是我感覺到自己科技領域外的探索有所受限,好處是沒有太多分心的事物,專心致志。

舊金山的破壞與創新

大家常說,舊金山開創新的紀元,紐約傳承舊世代的繁華。雖然舊金山除了科技以外,真的娛樂與享受都不多的城市,但它承載的破壞與創新,對我有著深深的魅力。在其他城市口出狂言,表達自己想要破壞的舊制度,想要創造的未來,可是要被取笑的,但在舊金山,我不再感到孤獨。看著隔壁桌的機器人手臂、知道 Sam Altman 就在隔壁棟演講、去黑客松也能見到 Andrew Ng,看見身邊一堆人進了富比世的 30 under 30,就知道自己離世界頂尖,並沒有想像中的遙不可及。也能明白能在人生二十來歲,在一個掌舵駛向 AI 帶來的世代的核心,不論是成是敗,這航道都一定精彩可期。

所以如果想成為頂尖的工程師,搬來舊金山吧!

Why move when AI has lowered the barrier of getting into programming?

Since AI programming tools emerged, the barriers to learning how to code have drastically decreased. On platforms like X (formerly Twitter), there are now videos showing how even a 10-year-old child can write software. The advent of AI tools like Cursor has not only lowered the entry threshold for software engineering but also significantly enhanced the learning experience.

The founding team behind Cursor says they focus on user experience with the mantra “fun = speed,” and there is a reason behind it. The thrill of speed brought by AI comes not just from avoiding long hours stuck on a bug without any guidance, but also from not needing to spend time worrying about the nitty-gritty details of programming syntax. AI can understand the context based on the current codebase and write the necessary code using information from the same document. This thrill extends to the speed of code generation itself. For example, Cursor stores the entire codebase in a KV cache, so AI doesn’t have to rerun unchanged contexts. When you ask it a question, you don’t need to provide relevant code — it can search for it itself. As a result, AI can handle everything, from understanding the problem and learning a new language to executing and writing correct code.

In short, as long as the basic concepts are clear, you can collaborate with AI to make corrections. Typically, the more advanced AI handles the planning, while the more basic AI handles execution. Learning to code becomes an easier process of trial and error and iteration. Given this AI-powered era, what does it matter which city we live in?

San Francisco’s Work, Work, Work Culture: Coding is Like Breathing

Aside from tech employees in big companies who care more about work-life balance, many in the tech community (especially startup folks) often make headlines due to their extreme workaholic mentality. However, even excluding the workaholic mentality, many people still have their own side projects.

There are those who are genuinely passionate about work — they get depressed if they’re not working.

So for them, there’s little difference between work hours and after hours. They code during work, then go to hackathons on weekends to keep coding. With so many hackathons happening every weekend, I have to choose one out of three, many of which are sponsored by big companies like OpenAI and Anthropic.

I chose 1 of the 3 to go on my birthday.

Even a home-based hackathon organized by enthusiasts can attract famous figures because San Francisco is full of talent. Once, I ran into Chip Nguyen, a well-known machine learning author, at one such event, and I became tongue-tied. You could think of him like the BTS of machine learning — meeting him at someone’s home felt like meeting a pop star and having your heart race.

You can imagine that in this lifestyle, coding becomes as habitual as eating and drinking, and it doesn’t feel like “work” anymore. After a year, writing code for me became like how TikTok is to modern society — a default part of life. Why this culture exists is something I’ll discuss below.

The City as My Private Tutor

If I assume you’re not working at a startup, and instead, you’re looking at programming from a learning perspective, it’s easy to see why staying in San Francisco is far superior to being in school. I’ll explore why the speed of learning software engineering in San Francisco is unmatched anywhere else by looking at four community-driven learning environments: work, accelerators, hackathons, and tech events.

The Struggles of Learning Programming: Only Half a Teacher

Let me give you an example from my university days, when I wasn’t studying engineering but took an IT course. Honestly, I didn’t think I had much engineering talent — in fact, I had none. I learned nothing in a programming course at National Taiwan University aimed at business students. Later, I tried learning on my own four or five times, but each time I got stuck, I gave up.

The biggest challenge wasn’t just not understanding programming languages or engineering thinking — it was also struggling with poor English skills that made even basic research difficult. The teacher would always say, “If you don’t know, just Google it.” But I couldn’t even form a Google-searchable sentence.

The only learning channel I had was a friend named Reggie. But our relationship was informal — there was no clear learning path, and I wasn’t connected to anyone in the computer science field. Our sporadic learning wasn’t enough to keep my motivation high, and as a result, there wasn’t much progress.

Switching to a CS Major: Still Just One Community

You might wonder, what about studying in a computer science department? After all, joining a department provides a formal learning path and the chance to collaborate with classmates.

When I studied CS at Minerva, there was indeed a group of classmates and professors with a clear curriculum, set hours of study, and obligatory assignments. However, most of the learning was limited to classroom interactions or assignments. Professors were the primary source of knowledge, but you could only learn more deeply during office hours or after class. If I wanted to extend my learning, for example, expanding from basic algorithms to the algorithms behind Duolingo’s recommendations, I had to figure it out on my own. The learning network was limited — it was just one network, and my classmates’ skills were all about the same, meaning we often got stuck together.

San Francisco’s Learning Network: The Entire City is My Tutor

In San Francisco, the organic learning network is far superior to anywhere else. Let’s break it down into four categories: work environments, accelerators, hackathons, and tech events.

  1. Work Environment: In startups, speed is key, which greatly accelerates the learning curve. But let’s assume you’re not working at a startup — there are still three other communities that can help.
  2. Accelerator Environment: My company and former company were both part of startup communities. Essentially, these are accelerators that host many startups, and outsiders can join if they find a way in. Every day, besides learning from the company’s internal talent, you also learn from others in the accelerator. You might tinker with robots made by other companies, or more deeply collaborate on SEO strategies. The problems in software startups are generally similar, creating a strong network effect. Many engineers in the accelerator also want to start their own businesses. During a period of unemployment, I found an engineer who needed help — he became my personal tutor and helped me quickly learn front-end engineering in just a few weeks.
  3. Hackathons: Even if you’re not working and can’t get into an accelerator, you can still go to hackathons. Every weekend in San Francisco, there’s a hackathon, and the people who show up are usually passionate coders and highly skilled engineers. Some familiar faces show up every weekend, and I got to know many of them and learned from them.
  4. Tech Events: San Francisco probably hosts around 20 AI-related tech events every week. Some are demos where engineers show off their projects, while others are company events or lectures. Many outsiders attend large-scale events, but I believe these events are the least effective for learning — they don’t involve hands-on experience, and the discussions are too shallow. At most, you might meet a few people.

Most importantly, though AI can write a lot of code, but it cannot teach you how to think, debug, or understand the philosophy behind a programming language. These are insights only experienced engineers can share with you. For example, why is React’s state management so strange? It’s because most programming languages are imperative — you tell the program what to do step by step, but React is declarative — it doesn’t care about the steps in between, only the end results. These kinds of philosophical insights into coding are what make the craft feel like an art form, and they’re likely to be the most valued skills in the future.

The Network Effects of a Concentrated Talent Pool

Many people think about networking in terms of job opportunities, but in San Francisco, the network effect created by the concentration of engineering talent brings rapid learning. The phenomena I observe are:

  1. X (formerly Twitter) has become a fast way to accumulate and filter learning resources and social capital.
  2. Shipping code every day (ship everyday) is a badge of pride in San Francisco, and everyone has a side project.

This unique culture of coding every day leads to high expectations for learning and fast iteration. It’s hard to live in San Francisco and not become a top-tier engineer.

X: The Fast Lane for Accumulating Social Capital and Filtering Learning Resources

X, like LinkedIn for San Franciscans, is filled with videos of new tech products, papers, and performance discussions. If you’ve made a notable project, you can go viral overnight and attract investors. For example, when a friend first came to San Francisco, he had only four followers on X. But after a few months of posting about his robotic arms, his follower count skyrocketed. He started a company, and prominent investors were reaching out to him.

Another neighbor’s robotic arm can feed you chips!

San Francisco’s dense talent pool makes it clear that you’re only a few steps away from top-tier tech people. If you know a few key players, you can quickly find anyone you need, get invited to exclusive events, or even Apple’s launch events. In other cities, you have to slowly climb the ranks, but in San Francisco, if you have talent, you’ll get an opportunity. This gives engineers strong learning motivation without the slow process of switching careers or waiting for someone to notice your project.

Shipping Code Every Day is a Badge of Pride for San Franciscans: Everyone Has Their Own Side Project

When talking about the power of community, one must also discuss the culture that the community fosters. In a place where engineers are highly concentrated and AI startups are growing explosively, the criteria for judging people on social media have shifted. It’s no longer just about your job title, but about how much effort you’ve put into writing code. The speed at which you can go from writing code to shipping it, or how many days a week you code, has become a way to show off. Many people proudly display how green their GitHub is (how many commits they’ve pushed), and many startup job ads say: “If your GitHub is a sea of green, you’re the talent we’re looking for!” But in Taiwan, no one really cares about your GitHub!

In a city where everyone has an opportunity, shipping fast has become an identity, surpassing job titles and alma maters (since so many people here have dropped out of school). It’s the absolute indicator of top-tier talent. While it might seem silly, the best engineers I’ve met, or the fastest-growing startups, all have GitHub profiles full of green. They encourage everyone to code every day, making it as natural as breathing. Now, I too code every day. If I don’t write code, something feels off.

Having a side project is also a byproduct of this culture. During the week, you code at work; on weekends, you continue coding at hackathons. Side projects aren’t just hobbies — they could very well become the next company. If you win a hackathon, you can get investment, an accelerator seat, or attract the attention of well-known tech figures on X. Many people might start using it, which is very different from the typical side project expectations where you build something for fun that no one cares about. Additionally, because hackathons are so frequent, the feedback loop for side projects is extremely short. You can also find others to collaborate with, which accelerates iteration speed and keeps the project moving forward. When you meet people, the greeting often becomes: “What are you building?”

So, if a learning environment values writing more code, where everyone’s main job is coding, their side hustle is coding, and the people around them are discussing code, you’ll find that any talent who arrives in San Francisco will immediately be filled with lines of code.

The Entertainment-Free, Focused Atmosphere of the City

Apart from the network effects, the inherent limitations of the city also help shape good engineers. Because San Francisco has very little entertainment, it’s essentially an engineer’s deserted island.

I don’t have much money, so there’s even less entertainment for me. Unlike Taiwan, where there are tons of great places to eat and things to do, San Francisco isn’t very safe to go out at night. You need to go out in groups, so it’s not really possible to have a “night out.” Once the sun goes down, most people stay home. Even if you want to explore fields outside of tech, like culture or art, there are few opportunities, and the quality is often lacking.

For example, I took a dance class once and asked my classmates what they were doing.

“I’m a systems engineer.”

“I’m a machine learning engineer.”

“I’m a junior engineer.”

Thank you — everyone was an engineer, engineer, engineer. I suspect the only person who wasn’t an engineer was the dance instructor. The downside is that my exploration outside of the tech field feels limited, but the upside is that there are fewer distractions, allowing for a highly focused atmosphere.

San Francisco’s Disruption and Innovation

People often say that San Francisco is where new eras are born, while New York preserves the wealth of the old world. Although San Francisco is truly a city with little entertainment outside of technology, the destruction and innovation it embodies have a deep allure for me. In other cities, if you talk about disrupting the old system and creating the future, you’ll likely be mocked. But in San Francisco, I don’t feel alone anymore. Watching the robot arms at the next table, knowing Sam Altman is giving a talk in the building next door, attending a hackathon and meeting Andrew Ng, seeing so many people around me on Forbes’ 30 Under 30 — it makes me realize that the world’s top talent isn’t as out of reach as it might seem. I understand that being at the core of a generation steered by AI in my 20s — whether successful or not — this journey will undoubtedly be exciting.

So, if you want to become a top-tier engineer, move to San Francisco!

--

--

Responses (1)