拒絕經驗過剩,「程式設計師的工作只能是代碼」?

2020-12-15 CSDN

似乎軟體工程師都有一個自然而然的成長過程:從缺乏經驗的新手,發展到中級工程師,進而成為經驗過剩的工程師。一旦軟體工程師進入經驗過剩階段,他們對代碼的興趣就會降低!那麼哪些跡象表明你已經經驗過剩了呢?

作者 | SeattleDataGu

譯者 | 彎月,責編 | 郭芮

以下為譯文:

奇怪的是,無論你在哪家公司工作,大多數經驗豐富的工程師都會體驗出一些相同的特徵。由於他們缺乏對代碼的關注,在設計上浪費的時間比寫代碼的時間還長,因此會拖累每位工程師編寫代碼的速度。

從新手工程師到經驗過剩的工程師的轉變並非一蹴而就。然而,經過多年甚至幾十年的磨練,這些工程師都會逐漸轉變成經驗過剩的工程師。幾乎每一家公司都是如此,而且不斷應對這些人的需求和不必要的忙碌工作真的很令人沮喪。

無論你是新手工程師還是經驗過剩的工程師,本文都可以指出經驗過剩的工程師的特徵,從而幫助你避免這種發展趨勢。

浪費時間重構

@techleadhd(https://twitter.com/techleadhd)是目前最活躍的工程師之一,他在最近的一篇Twitter帖子中表達了他對編寫代碼的真實看法。

很明顯,他不相信寫代碼,相反,他暗示刪除和重構代碼很有價值。他認為這種工作不應該被稱為軟體清理,而是應該叫做軟體工程。

我們應該設計代碼而不是維護代碼。

維護代碼的工作可以由別人勝任,就連實習生都可以勝任。

軟體工程師應該花時間編寫舊的低效代碼,而不是嘗試改進舊的基礎架構。為了保證系統正常工作,你甚至可以通過「膠帶」把這些代碼組織到一起,將來必然有別的工程師接管我們的代碼,在現階段我們無能為力。然而,經驗過剩的工程師總是覺得有必要維護舊代碼。

他們的重心放在了顧全大局而非代碼

在這裡,我只想澄清一點:顧全大局和業務並不軟體工程師的工作,我們的工作只有代碼!

經驗過剩的工程師習慣於重視大局勝過代碼本身。他們喜歡提出的問題包括:「誰會受到這個項目的影響?」,「最終用戶將如何與代碼交互」以及「我們將如何維護這些代碼?」等等。

他們浪費了大量時間來了解項目的範圍以及對公司的影響。有時,他們甚至會挑戰領導,認為自己有「卓越的解決方案」。如果他們一味地專注於「影響」和「優先級劃分」等諸如此類微不足道的事情,怎麼可能有時間寫完所有的代碼呢?

將所有時間都花在各種會議、統計指標和代碼審查上,我們只能眼睜睜看著寫代碼的時間一分一秒流逝。

經驗過剩的工程師對缺乏經驗的工程師沒有信心,對此我們一點也不會感到驚訝。缺乏經驗的工程師只會全力以赴寫代碼,並按照吩咐做事,即便範圍可能過於複雜。

這是因為優秀的程式設計師不會質疑他們的工作。相反,無論面對何種請求,他們都會低下頭寫代碼。無論何時,對公司產生的影響都應該留給業務去評判。我們作為程式設計師的工作就是實現代碼,而不是設法搞清楚哪些工作有價值,或如何適應公司的戰略。

我們需要提醒經驗過剩的工程師:你們是程式設計師,不是領導。

對他們來說,設計文檔不可或缺

出於某種原因,經驗過剩的工程師總是想要設計文檔。

無論項目的規模大小,不考慮設計文檔,全神貫注寫代碼可以快速推進項目。你大可不必糾結你需要哪些對象,或代碼需要實現哪些操作場景。

從我們的角度來看,我們發現將一切記在腦海中要容易得多。即使擁有數千行代碼,也並非難以管理。

我們不會用略微不同的對象或其他東西重複創建同一個功能。

我們不會使用多個對象創建重複的功能。

為什麼經驗過剩的工程師如此關心這些問題呢?

最後,如果我們不需要花時間思考設計文檔,那麼就可以將寫代碼的速度提高十倍,而且能夠更有效地工作。

他們不喜歡「過於複雜」和「過度設計」

有時,我認為有些工程師不會考慮其他人的代碼。

因此,在創建一個模塊的時候,你可以利用在學校學到的所有技術,將所有面向對象的概念都融合到一起,然而他們認為這種代碼屬於過度設計。

就個人而言,我認為他們只是不願認真思考別人出色的工作。

花點時間理解對象A繼承了對象B,而B調用函數C,而C又調用函數D,有時選項F或G會從配置文件E中獲取信息,而E會通過函數F解析來自資料庫G的數據,然後將日誌存儲在Hadoop,CouchDB和S3中,這很難嗎?

他們會抱怨說,這些代碼太優雅或過度設計。保留精心設計的代碼,易於維護的生產環境,這些不過是掩蓋他們懶惰的託辭。他們只想讓年輕的工程師編寫過於簡單的代碼。

雖然,簡單的代碼方便閱讀和理解。但作為工程師,我們面對的不僅僅是簡單的工作,我們需要面對複雜的問題,創建複雜的解決方案。

他們永遠在追逐未來

我只知道目前使用過的幾個框架,而且我只需要知道這幾個框架。

然而,經驗過剩的工程師花了大把時間學習新的框架和語言,或者新的設計原則。

這一切似乎都在浪費時間。作為一名工程師,在大學畢業後你就應該掌握所有的技術,之後的技術都不重要。有些人甚至還在leet code上做練習和學習,好像他們要去參加面試一樣。軟體工程師又不需要擔心失業。

難道不是每個人都會在大學學習程式語言嗎?

寫在最後

經驗過剩的工程師阻礙了整個社會的發展。

他們通過堅持重構代碼、追求設計文檔並不斷的學習,不斷推進軟體的進步。如果沒有經驗過剩的工程師,如今的世界肯定已經發明了飛行汽車,還有智力超越人類的機器人。然而,如今我們還在堅持使用280個字符的推文,還不斷被亞馬遜的廣告騷擾——自從上周從網上購買了一個馬桶蓋以後,這些廣告就一直在向我推銷同類的馬桶蓋。

原文:https://medium.com/better-programming/top-signs-of-an-over-experienced-programmer-22bbe0b57663

本文為 CSDN 翻譯,轉載請註明來源出處。

相關焦點

  • 學完IT只能寫代碼當程式設計師嗎?(下)
    學完IT只能寫代碼當程式設計師嗎?當然不是啦!可能學IT的學生關注的問題大多千篇一律:接下來我該學什麼語言呢?如何準備技術面試?你們公司招人嗎?諸如此類。但有一個問題直擊靈魂深處:如果我不想再當程式設計師了,該怎麼辦?
  • 寫膩了代碼、難再「996」 中年程式設計師拿什麼和年輕人拼?
    房貸、教育等開支「大山」,年齡增長帶來的高薪壓力,身體機能不可逆下滑,網際網路人才結構性過剩……有人自嘲,程式設計師的轉型就是離開,開飯館就是最好的轉型。這種看法似乎過於悲觀,在另外一部分人看來,程式設計師的競爭總是存在的,「活下去」的辦法就是學習。畢竟從大數據來看,程式設計師群體面臨低端人員過剩、高端人員不足的結構性問題。
  • 程式設計師的代碼行數越少越好?
    代碼行數越少越好?讀懂別人的代碼很困難?如何編寫出「完美」的代碼?每天要堅持8小時編程?......拜託,這些編程誤區程式設計師應該儘早知道!如果你從事數據科學工作,那麼就需要使用Python、R或Scala(也許是Java)。如果是一個業餘項目,那麼就隨心所欲選擇自己喜歡的。只有一條規則我覺得沒有商量的餘地:如果遇到的大多數問題都無法通過StackOverflow直接解決,那麼我會拒絕使用這種語言。不是說我沒有解決問題的能力,而是我覺得不值得花那麼多時間。
  • 淺談程式設計師的薪資和工作經驗
    我發現很多人都會問關於程式設計師薪資與工作經驗年限的內容,無論是在就業論壇的評論,還是作為網上流傳的指導性文章,都會涉及這方面的問題。
  • 1024程式設計師節,向用代碼改變世界的程式設計師致敬!
    在計算機的二進位世界裡,1024是一個有特殊意義的數字,而程式設計師們就像是這一個個1024,以最低調、踏實、核心的功能模板一點點地搭建起網際網路世界。1G=1024M,而1G與1級諧音,也有一級棒的意思。程式設計師,一群用鍵盤改變世界的人,加班、熬夜、996對他們來說都是常態,格子衫是他們的時尚裝扮,代碼表白是他們能想到最浪漫的事。
  • 程式設計師每天編寫3000行代碼是什麼水平
    每天寫3000行代碼在當前的IT行業內是很難想像的,即使很多早期從事外包開發的程式設計師也很難有這樣的工作效率,大部分程式設計師每天的代碼量都在幾百行左右,研發級程式設計師一天的代碼量通常不會超過300行,應用級程式設計師的代碼量也很少能夠突破500行。
  • 面試感悟:3年工作經驗java程式設計師應有的技能
    LZ認為一名程式設計師應該有幾個階段(以下時間都算上實習期):第一階段:三年我認為三年對於程式設計師來說是第一個門檻,這個階段將會淘汰掉一批不適合寫代碼的人。這一階段,我們走出校園,邁入社會,成為一名程式設計師,正式從書本上的內容邁向真正的企業級開發。
  • 以後程式設計師可能再也不用寫代碼了!你信嗎?
    一位來自阿里巴巴程式設計師的吐槽,說出了無數程式設計師的心聲。軟體進步靠研發,研發進展靠程式設計師,程式設計師寫代碼主要靠加班。據說,十個程式設計師裡有十一個都曾經歷過996,乃至007的工作節奏。程式設計師工資高是大家都知道的,而研發團隊又是主要由程式設計師組成,再加上硬體投入和運維成本,對於很多企業來說就是「天文數字」。無法通過擴招提高研發進度,就只能讓現有的程式設計師提高效率,也就造成了程式設計師行業常見的996工作制。而這只是第一關。
  • 天賦差的程式設計師,難道就只能半途而廢嗎?
    你明白不同的類型,還知道一些不同的術語,但大部分編程方面的經驗可能僅限於在一個編輯器中使用一種語言。你也可以編寫簡單的練習,但前提是有人給你解釋清楚。閱讀別人的代碼我作為新手的大部分時間都是在大學裡,我從StackOverflow上學到了很多東西。多看,多讀,注意別人寫代碼的方式。
  • 初級程式設計師如何順利閱讀成品軟體的代碼
    閱讀別人的代碼本身就是一件比較麻煩的事情,而且由於項目進展的要求,往往時間上也會比較緊張,這是不少程式設計師都會面臨的比較棘手的問題。不僅對於Java初級程式設計師來說這是比較困難的事情,對於經驗豐富的Java程式設計師來說,閱讀別人的成品代碼也不會感覺到輕鬆。
  • (面試感悟)一名3年工作經驗的程式設計師應該具備的技能
    LZ認為一名程式設計師應該有幾個階段(以下時間都算上實習期):第一階段—-三年我認為三年對於程式設計師來說是第一個門檻,這個階段將會淘汰掉一批不適合寫代碼的人。這一階段,我們走出校園,邁入社會,成為一名程式設計師,正式從書本上的內容邁向真正的企業級開發。
  • 差勁的程式設計師操心代碼
    本文從我的經歷出發,談談算法對程式設計師的意義。在我看來,解決各種算法問題的過程非常有成就感。和現在許多人的觀點一樣,那時我對算法的理解就是刷題,感覺對工作中編寫應用程式沒什麼用處,但當我在工作中接觸到應用軟體開發時,讓我徹底扭轉了對算法的看法。
  • 程式設計師一天工作量改了5行代碼,工作很輕鬆?
    領導安排張工跟進,接到任務,張工第一時間就是想重現這個問題,可是怎麼也復現不了,費了九牛二虎之力,終於從上萬行代碼中定位到問題所在,最後張工修改了5行代碼,問題解決了。這時已經快下班了。張工伸了一下懶腰,這時財務漂亮妹子過來了,找張工確認交通費用報銷的事情,見張工懶羊羊的。
  • 中年程式設計師的經驗談:21個慘痛教訓
    跌倒固然也能收穫經驗,但從他人之處汲取知識更易見效,年輕人要敢於試錯,但將珍貴的時光浪費在無盡的試錯上實在是暴殄天物。 軟體開發是踏上編程之旅的第一步,從業者將在其中不斷磨練自身技藝。程式設計師會遇到萬千挑戰,既可能提出真知灼見,也未嘗不會犯下大錯。
  • 1024程式設計師節:代碼改變命運 也有中年危機
    畢業後不久,她的表哥在深圳南山打來電話,得知了柳瑩的情況後對她說,要不你也來南山吧,跟我學寫代碼。那是柳瑩第一次聽說代碼和編程,第一次聽聞程式設計師這個職業。上學期間,她都沒有過一臺屬於自己的電腦。但柳瑩想,反正自己不喜歡當時的工作,去就去吧。可這一去,她什麼也不會,一切都得從頭開始學。
  • 求職經驗丨應屆畢業生,如何找到一份程式設計師工作呢?
    應屆生畢業找工作,一直有一個困惑:剛畢業沒有工作經驗,但是呢,企業又需要你有工作經驗,這該怎麼辦呢?你剛畢業找不到工作不可能有工作經驗,好像陷入了一個死循環。其實這種情況企業是不可能不知道的,所以工作經驗對於應屆生來說不是硬性的考察標準。
  • 對程式設計師來說最難的是寫代碼嗎?
    相信看到這個標題的同學們都有自己的想法,可能剛剛進入這個行業的同學們會非常認同寫代碼就是程式設計師的主要工作,然而當你工作一定時間之後,寫代碼將變得不是那麼「重要」了,在悟空問答中眾位大咖為這個問題提供了多種多樣的答案:    答案一:寫代碼是程式設計師最主要工作,但是卻不是最難的工作,最難的是踢皮球和吵架!
  • 專訪邱俊濤:高級JavaScript程式設計師代碼應結構清晰、模塊化良好
    一旦興趣培養起來了,那麼學習任何技術都會非常快,而且會使工作或者學習變得非常有意思。CSDN:你日常是如何學習其他的新技術的?經常看到你在博客上分享自己技術文章以及學習經驗,可不可以跟大家分享一下這方面的體會,對於初學者又有什麼建議?
  • 優秀而高效的程式設計師必需寫好代碼的10個技巧,
    作者丨Christopher Diggins譯者丨Teixeira10【譯者注】在本文中,作者介紹了10個寫好代碼的建議,以自己切身編寫代碼的體會和經驗來告訴開發者這10個建議的好處,並指導讀者成為一個優秀而高效的程式設計師。以下為譯文:那麼怎樣才可以使代碼變得優秀呢?
  • 離職程式設計師交接工作被同事懟:每行代碼都必須講清楚,要不然投訴
    一般來講,員工從公司離職都要走一個離職的程序,並且需要把工作給交接好。給負責交接的同事講清楚工作不是必須要做的工作,但也是職業素養的體現。一般來說,員工離職之前都會跟同事講清楚工作內容,可是有一位程式設計師在離職的時候被交接同事要求一行一行講代碼,不講就投訴他,這到底是怎麼一回事呢?