編碼的世界 / 優質文選 / 文明

作為一個非天才型選手,普通程序員如何升級打怪?


2022年7月24日
-   


作者 | keypressingmonkey
譯者 | 孫薇,責編 | 夕顏
出品 | CSDN(ID:CSDNnews)

非天才生存指南  
承認這一點很難,我的正式簡歷上也不會有:我是一名普通的程序員。我了解(大多)代碼,但.Net核心並非我的夢想。因為Ruby代碼寫得不夠,無論Ruby、Gem還是寶石都和我無緣。我還沒能建立自己的框架,在編程語言中切換時,我只找成本最低的。
 
這不意味著我不喜歡代碼。事實上,我非常熱愛它,要不了幾分鐘我就想換工作。我情緒激昂地痛恨敏捷方法論,因為總有人覺得這是什麼全新的概念,需要我們額外再針對訓練。對於技術世界裏我這個小角落出的錯,我能抱怨好幾個小時——更別說整個世界了。
 
但是,晚上上床的時候,我很高興有這樣一份熱愛的工作,能讓我保持足夠理智卻又瘋狂地度過整天時間,而不用非得把熱蠟滴在手上才能感覺到什麼。這是相對美好的生活,本文我想給大家展示一下我是如何以及為什麼學會享受它,並上手自己的工作的。

從不討厭你的工作開始  
想要喜歡甚至愛上你的工作,可不是一轉念的事情,但不討厭它還是可以做到的。我進入編程行業純屬偶然——我很擅長計算機,因此,盡管對於編程知之甚少,我還是發了些應用,然後不知怎麼的就獲得了學徒身份。跟我一起當學徒的還有許多人,他們是自己選擇這份工作並努力修煉技能以期吸引雇主的。單編程來說,他們的技巧就遠勝於我,且以後還將領先我數光年。
 
程序員的生活還有其他方面。之後我們會討論到,不過現在我要總結一下工作中那些可愛、古怪和有趣的小細節。
 
即便在我的學徒生涯期間,我對數據庫的訪問權限也相當奢華。而且,由於經常獨自探索,我開始研究統計數據。我們的客戶裏,有多少擁有這個、那個或者還是這個?大眾客戶會寫多少封郵件?通常聯系我們的原因是什麼?
 
最後,我有點像數據庫偵探了,可以隨時在有人需要數據時快速進行研究,或者執行批量更新以節省客服支持人員大量的時間。這從來都不屬於我的正式工作職責,但當你利用閑餘時間幫助他人時,沒人會抱怨。
 
與我平常的工作不同,我不討厭這些事情。事實上,這些事很有趣,有時我還能在桌上發現表達謝意的巧克力棒。同時這也會讓其他碼農喜歡你——即便我不喜歡巧克力,只會把巧克力送給有需要的同事。

在你的工作上“更進一步” 我一直遵循的普適規則就是,在某個領域成為專家,還不如在多個方面下功夫——編程方面更是如此。
 
想要做好工作,方法很多,或通過努力工作,或只是憑借經驗,比別人更快地修複bug。假如你設法堅持一會兒,就會看到看到地平線上的光,並開始理解系統運作的方式,從而發現那些讓別人滿頭大汗,感覺要出錯的問題,在你這裏能找到小小的變通區域。
 
我的部分工作還包括諸如“生產數據庫測試”的粗暴行徑,關於這項工作,我針對實時數據庫進行了一系列操作,包括繞過、欺騙、反轉和編輯,以修複那些我無法測試出的嚴重錯誤,因為數據庫每周只複制一次,還永遠碰不上需要的時候。“祈禱並承諾”,我喜歡這麼說。可能發生的最壞情況是什麼?
 
這可能會使工作中的純粹主義者陷入小型身份危機,特別是考慮到沒有辦法對此進行單元測試,而且,畢竟我是唯一在系統裏操作的人,沒有人來批准我的pull請求,因此我會直接進入管理員分支。繞過這些愚蠢的規則花了我好些時間,才被允許登入管理員分支,我為此驕傲。絕望的時候需要絕望的措施。
 
上面這些意味著在編程世界中,關於“好”有許多方面。即便那僅僅意味著在事情突然以驚人的方式出現時你在那裏,成為那種願意承擔自己錯誤並處理後續的人。
 
我深陷於“混亂善良”的角落,但正如我找到自己的利基縫隙一樣,在你的整個系統有序的情況下,任務都該死地井井有條,甚至連毫無編程技巧的人都能在需要時取代你的工作,所有工作都分配了合適的故事點,你可以反向思考,尋找你的利基縫隙。設計專業的用戶故事(user story),在沒有法則的世界中對法則進行優雅的展示——所有這些都會讓你的領導在夢中看到你的面孔。
 

用你的技能做些有趣的事(並學習新技能) 編程是一項工作,在提出挑戰的同時也會賦予你能量。如今,我們幾乎可以用開源工具和語言來構建一切,教程涵蓋了幾乎所有你可能的愛好範疇。
 
因此,使用你的技巧並開始吧,構建一些類似隨機報價生成器之類的傻玩意兒,或者類似網站這樣為大家解決問題的實用方案(還能讓你從訂閱費用中獲取收益),或者任何只是些看似有趣的項目。我曾經花費了大量時間用PHP構建了一個性愛故事生成器,因為我喜歡自虐,在極其討厭PHP為時很久之後,我想要了解它。現在回想一下,這個項目可能還得就其自身寫篇辯白,可真是太詭異了。
 
這裏的要點在於:大多情況下,你只需要花費時間,而不必花費金錢,並且有很多教程可以幫助你成長。

意識到編程不僅是寫代碼 我花了一陣子才意識到,同時人們也花了些時間才相信——我是有責任感的,但一點點地,我將整個工作變成了與最初完全不同的內容。如今我寫代碼的時候相對較少,事實上我寫的那點東西也只夠讓自己記得我是個程序員。
 
相反,最終我成為了公司裏一個相當複雜而重要系統的唯一維護者。我組織自己的工作,與團隊和普通同事溝通,參與會議並提供專業知識和意見,並盡我所能來解決問題。
 
盡管壓力很大,但我非常喜歡這種工作方式。沒有一天是相同的,而且,由於我處在所有煩人事務的接收端——從小bug引發的大問題,到各種會議,我都不想錯過——我總是很高興待在辦公室裏讓自己保持忙碌。
 
我還喜歡和其他工作狂一起在辦公室裏熬到深夜,那些令人放松卻又專注的奇妙時刻,各個部門的人聚在一個房間裏,肩並肩地工作著,因為就要到deadline了。我喜歡參與這樣的並肩合作——被接納,受到歡迎。花費兩個小時在一個連續SQL query中尋找一個丟失的空格很糟,但如果你旁邊的人也必須對抗自己的噩夢,這件事倒也沒那麼難以忍受了。

理解你公司的架構和生態系統  
前幾周,我們遇到了嚴重的系統宕機——不是我維護的系統,但原本的維護者和他的臨時接替者,還有另一個可能了解情況的人要麼生病,要麼出國。
 
我對這個程序的工作原理有個大致了解,於是由我介入,再加上兩個跟我一樣幾乎一無所知的人。但最終,我們設法將錯誤縮小到單個服務器故障,並與出售給我們系統的第三方公司協作,最終在周六清晨讓一切恢複正常了。
 
當然,對於公司一半的人來說,那天是浪費了。但原本是要浪費的是兩到三天。這很容易帶來漲薪,因為為了查明錯誤,我們對於系統的協作運行機制有了大體概念,並深入瀏覽了日志文件。
 
老實說,這是最近記憶中最為瘋狂的時刻之一,同時也是最有趣的之一。我甚至還收到了部門領導的郵件,寫著“乾得好”,而他也在偶遇時短暫認識了我。幸運的是,不會一直如此,之後我還可以回歸無名氏的角色,謝天謝地!

溝通  
在公司的有段時間裏,我離被炒僅有幾步之遙,讀到這裏的你很容易理解原因——同樣,也是因為我最近受到表揚的那些工作。說來話長,我總結一下,就是溝通使得我的工作被大家知曉,從而產生的區別。
 
處理所有無用的瑣事,比如在別人發現錯誤並通知你時寫感謝信,在bug修複時回應,而且無論別人是否在乎,都要寫個簡短的一分鐘說明,第一時間解釋錯誤發生的原因以及修複的方式。當我這樣做的時候,我不僅發現大家(人數令人驚訝)喜歡我這樣做,還發現這個循環運行起來,最終結果又反饋到了我身上。應答、回應、預期、准備,每天花一個小時單純跟人們聊天。
 
在這件事的過程中,我拾起了如今的座右銘:向傻瓜解釋一切,看著他們成為人類。

結論  
希望你們喜歡這篇文章,甚至會覺得有用。它確實保住了我的職位,還讓我能在樹林裏買了間小屋,遠離技術的喧囂。感謝閱讀!
原文鏈接:
https://medium.com/better-programming/how-to-thrive-as-an-average-programmer-1dd202540ac
本文為CSDN翻譯文章,轉載請注明出處。
END 更多精彩推薦 ☞同期兩篇Nature:運行溫度高於1K的量子計算平台問世!
GitHub 標星 10,000+,Apache 頂級項目 ShardingSphere 的開源之路
港科大鄭光廷院士問診未來,揭露 AI 最新應用與實踐
☞20萬個法人、百萬條銀行賬戶信息,正在暗網兜售
☞以太坊2.0中的Custody Game及MPC實現
很用心的為你寫了 9 道 MySQL 面試題,建議收藏!

你點的每個“在看”,我都認真當成了喜歡

熱門文章