寫給職場新人|從迷茫到屢獲殊榮的技術人成長之路

在這個時代,技術的每一次飛躍都在重塑我們的工作方式。借Up技術人專欄活動寫了這篇文章,回望一下我和計算機打交道的這幾年,希望能給學生或職場新人們一些幫助。

1.錨定方向:學生生涯的一次探險

如果用一個詞語概括我的本科階段,那大概就是“迷茫”。大三前,我一直在尋找自己的熱情所在,自動化專業課程內容太過理論,在個人層面沒法落地。恰巧在大三Python Programming這門課中,花幾個小時就能開發一個軟件,並被很多人使用,這對於一個結果導向型的人來說是件非常有成就感的事情,這件事也堅定了我轉計算機的信念。在那之後便開始了自學,通過較爲高效的自學方法論,在自學一年後便順利拿到大廠的實習offer。

“自學”這件事貫穿了我的學生生涯,或許是這種不甘現狀的心境需要我去攝取外界的知識,這也逐步鍛鍊了我的自學能力。在自學計算機的過程中,先是築基期,通過書籍、技術博客、視頻的方式快速學習理論基礎,在築基3個月後便開始結合實踐學習。前期學的比較雜,最先接觸的是Python,然後又學了C和Java,涉獵的方向有爬蟲、網絡攻防、前端,後端等,並且每個方向都伴有相關的落地項目

後來考慮到缺乏在工業界或標準流程的場景中工作的經歷,於是主動郵件聯繫Python Programming這門課的教授,申請爲他在實驗室的工作幫忙。教授聽說我出於興趣願意來幫忙非常開心,起初給了我一些數據處理類的工作,主要是在Jupyter Note裏寫Python腳本處理數據集,例如數據清洗、結構化,可視化等等。由於每次任務都快速且高效交付,教授後續也讓我參與了核心的網絡協議項目,這是我編程能力突飛猛進的一段時間。

到了大四畢設,我自然也選擇了計算機相關的課題。與導師溝通後敲定了“基於點雲的3D動態手勢識別算法”這一方向,這是一個極具挑戰但又令人激動的選題。當時英國疫情嚴重,同學紛紛申請遠程畢設,中國的同學更是跑路回國,我再三猶豫下決定“反向跑毒”,成爲了實驗室唯一的一個本科生。



 

 

英國的冬天總是天黑的很早,又天亮的很晚,每天去實驗室前都可以在家欣賞一場日出,每次頂着夜色走回家的路上都不止一次感受到了科研人的孤獨感。在實驗室的閒暇時間會和隔壁的學長們一起聊一聊他們科研的難題和生活的瑣事,也帶來了一些稀薄的慰藉。算得上是一段可遇不可求的難忘經歷。

畢設的方向是偏算法類的,意在把學術界現有的點雲識別模型復現並優化。看到實驗室資源實在豐富,我主動跟導師提出了加入engineering相關的內容。最終完成了程序開發、算法優化、模型訓練、部署,機器人控制系統開發的全流程。先是自學C++,開發了一個通過Kinect攝像頭錄製點雲的程序,配有各種點雲過濾功能(已在Github開源),再用這套程序錄制了一個點雲手勢數據集,又在學術界較爲知名的PointNet網絡的基礎上做了優化,將點雲目標升維,配合多幀融合,實現了由3D圖像識別到3D視頻識別的轉換,最後又自學了ROS操作系統,控制機器人電機轉動,將模型部署到機器人最終實現了手勢操控。最終成功發表了論文並拿到了全系第一的成績。



 

 

2.華麗轉身:職場新人的野蠻生長

2.1 角色定位:後端開發是一種藝術

入職後,本以爲工作內容基本以寫代碼爲主,但實際發現需要將大部分的時間放在需求評審、設計、聯調、代碼評審、測試等環節上。這些是公司內必不可少的環節,也是和個人開發者明顯的區別。我很快便適應了這種模式,同時也讓我重新審視了後端開發工程師這個崗位。

後端開發不僅僅是編碼的技術行爲,它更是一種將複雜業務需求轉化爲可靠、高效系統解決方案的藝術。在完成系統功能的同時需要兼顧複用性、穩定性、可拓展性等因素,這些能力也是區別普通後端開發工程師和優秀後端開發工程師的關鍵因素。這也就是大家常說的“要有架構思維”。何爲架構?百度詞條是這樣解釋的:“架構是人們對一個結構內的元素及元素間關係的一種主觀映射的產物”,既然是主觀映射,那也就意味着不同的人可能會對不同結構有不同的架構理解。這個“結構”可以是一個系統,那就應該由架構師這個崗位定義系統的高層結構,包括軟件組件、組建間關係以及它們與環境交互的方式。但這個“結構”同樣可以是我們的項目、需求,乃至於每一行代碼,所以我們每個人都應該承擔自己的架構職責。

2.2 角色延展:生活不只有酸湯餃子

從業務開發到研究類開發的狀態切換是我最難忘的一段經歷。隨着AIGC的興起,架構組需要研發資源來幫助做AI相關方向的探索。我憑藉過往經歷和自學能力成功獲得工作交換的機會。在架構組工作期間我提出了較多創新性的建議,並且得到資源支持並逐一落地取得了極佳的效果。



 

 

DevBooster的第一張架構圖

新技術的探索道路總是崎嶇的,團隊從一開始對GPT一無所知,到後來研究簡單的Prompt Engineering理論、開源產品、AI Agent範式,再到現在提出了自己的大模型技術架構,並落地了衆多AI提效工具。

我們正式推出的第一款產品是自動化單元測試生成插件DevBooser,意在幫助研發提升開發效率,並降低測試成本,保障線上質量。爲了推廣產品,我們舉行了一場大部門內部的“單測挑戰賽”,參賽隊伍使用插件生成單測,並統計合併到master分支上的單測代碼行數,同時開放提示詞微調入口,讓全員都可以參與大模型的“微調”。我負責單測大賽的全流程,包括賽前的開發,給Tech Leader們宣講賽事細節及系統接入方式,還有賽後的數據統計。最終,在一個月的時間內,幫助內部數十個核心應用提升了數百萬行單測代碼,同時每人日均新增代碼行數遠高於行業標準,極大的提升了研發的效率。

完成這一切的團隊起初只有四名成員,2位架構師和2位研發。這種扁平化的團隊層級關係也給了我一個新人更大的發揮空間,在每次激烈的技術討論中,我的想法都會收到重視並獲得資源支持,使我的達能力和創新能力得到了極大的鍛鍊。同時,我們身兼數職,除了研發之外還擔任產品、運營、UI,無數次跳脫出自己的職能邊界和認知邊界去解決問題,同時我們也很享受這個過程。

就像都梁在《血色浪漫》裏有段描述陝北農民的文字:

鍾躍民驚訝地發現,在如此貧困惡劣的生存狀態下,村民們卻很少愁眉苦臉, 他們始終很樂觀,他們最喜歡談論的話題是飲食男女。在飲食方面,由於他們沒見 過更好的食品,所以堅持認爲酸湯餃子和油潑辣子是天下最美味的食品,如果有人提出世上還有很多更好喫的東西,那大家會一致認爲此人太沒見過世面,這驢日的八成是沒喫過酸湯餃子,纔在這兒胡咧咧.

正如酸湯餃子不一定是頂級美食一樣,後端開發也不是最牛逼的工作。任何一個優秀的項目都需要不同的角色共同完成。如果僅僅將自己侷限在程序員這一角色,長此以往未免會有坐井觀天的狹隘。作爲開發者,我們既可以向上探索, 去分析用戶痛點、挖掘業務價值, 又可以向下延伸, 去參與測試編寫、產品發佈和運維監控等工作。通過不斷擴展自己的能力邊界,我們能更全面地掌握產品知識,從而在開發者的道路上走得更遠。

3.自我迭代:優秀後端的制勝法寶

3.1 終身學習

程序員被裹挾在技術演進的洪流中,往往感到身不由己。作爲程序員,不但要非常紮實的掌握基礎知識,還需要具備快速適應新技術的能力,以及一種積極主動、永不停息的學習態度,而後者可能更重要。

培養終身學習的能力看似簡單,但對於習慣了應試教育的我們來說並不容易。應試教育最終的考覈指標是分數,所有不能提高分數的行爲都不被視爲學習,即使是可以提高創造力的行爲。長期規訓的結果是,這種長期的教育方式讓許多人對“學習”這個概念的看法變得狹隘。即使新技術的出現減少了我們對學習的抗拒,我們仍需努力擺脫舊有的學習習慣,重新塑造自己的終身學習能力。這一步是最困難的,不僅要去掌握抽象層次更高的認識論、符號學、數學建模,批判性思維等內容,還要克服長期養成的習慣。但十多年的應試規訓對一個人的影響太深遠,很難在一朝一夕改變。每當我們想學習時,就會條件反射式的等待別人的教授,別人的總結,很少思考知識到底是怎麼來的。例如很多人意識到要學習使用ChatGPT時腦中閃過的第一件事,就是找本書或買個課,這或許可以讓我們快速上手,但瞭解原理和摸索的過程恰恰是讓我們不斷自我反饋和思考的過程,也是培養學習能力的過程。

讀書是緩解此類焦躁心理的途徑之一,建議每天抽出半個小時到一個小時來讀書,週末可以多讀一些。讀書之外,還可以在線學習一些教程,比如Coursera和edX等,研發同學可以多參與到開源項目的建設中,學習外界的優秀編程思想和產品思維。

3.2 技術分享

將一個創意、複雜概念或者想法簡潔而準確的描述出來是一個非常重要的能力。技術分享不僅僅是將知識傳遞給他人,更是對自己所學知識的一次重構和鞏固。在準備分享的過程中,技術人不得不將知識點系統化、條理化,這本身就是對所掌握知識的一次深度梳理。同時,爲了能夠清晰地表達自己的觀點,通常需要對知識點進行更深入的研究,這更是加深了對技術的理解和掌握。定期分享還可以促進團隊內的知識交流和思想碰撞,並打造個人影響力。



 

 

3.3 work hard, play hard

職場新人在忙碌的大廠工作中應該尋找並保持個人成長和內心充實,同時對工作之外的宏大目標應抱有期望,比如個人興趣的追求、身心健康、社交和個人生活的豐富。就我個人而言,我喜歡音樂,每次彈鋼琴或吉他都可以讓我放鬆心情,開闊思路。涉獵不同的領域也是對人廣度的一種拓寬,可以幫助我們成爲更好的開發者,畢竟架構能力和解決複雜問題的能力來源於知識的深度和廣度,只憑所謂的“編程”知識解決不了世界抽象的問題。當然,play hard的最終目的是實現工作與生活的平衡,並找到工作之外的意義和價值。



 

 

4.技術反思:挑戰與機遇並存的時代

AI的發展引發了對後端架構複雜性的重新審視。這一轉變同時帶來了挑戰與機遇,後端開發者必須不斷學習新的編程範式和工具,以適應智能化的發展趨勢,尋求在AI輔助下的創新工作模式。

然而在工作中會發現一些現象,人們會下意識對於新技術如AI產生抗拒心理,這種心理可能來源於害怕被取代,又或是對新技術的不信任。這種抗拒體現在,人們會專門將ChatGPT用於其最不擅長的領域,突出其缺點或用最頂尖的標準突出其不足。很明顯,目的就是要否定它,有種“錘子無用,因爲他沒有手靈活”的感覺,然而,很多人卻害怕錯了對象,把矛頭指向了ChatGPT這樣的一個工具。可工具無法取代人,只有會用工具的人取代不會工具的人,即使沒有這一輪AI技術的爆發,這種“取代現象”也會隨着其他新工具的出現而出現,也不會因爲人們的害怕和牴觸而消退。

所以暫且放下永恆正確卻於事無補的悲觀主義,擁抱工具的革命或許將要引發的工業革命。積極思考隨之而來的社會生產力與生產關係的質變,並做出快速響應。要知道,這可以是最好的年代,也可能是最壞的年代。The days are long but the decades are short.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章