0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

7個編程習慣,養(yǎng)成后年薪30萬不是夢

朱老師物聯網大講堂 ? 2024-03-30 08:09 ? 次閱讀

我和很多杰出的軟件工程師們一起工作過,他們有的來自FAANG之類的大公司,有的來自正處于創(chuàng)業(yè)階段的小公司。

這些工程師中有人自主創(chuàng)業(yè),也有人在大型科技公司領導了數十億美元的項目。在我與他們一起工作的時間里,我注意到他們絕大部分人的一些共通的編程和工作習慣。我想,或許正是這些習慣讓他們成為了行業(yè)金字塔中最頂尖的那1%。

01

成為一名工程師,而不是碼農


工程是為了解決問題而誕生的。最好的工程師將代碼視為達到目的的手段。雖然寫代碼是一種樂趣,但沒有目的地寫代碼是沒有意義的。代碼應該用于為用戶設計解決方案。某種意義上,編程是一種創(chuàng)造性的追求。創(chuàng)造力在約束下茁壯成長。添加要解決的明確問題的“約束”,允許工程師以他們認為合適的方式自由地探索和創(chuàng)建解決方案。我所知道的最好的工程師都是有產品意識的:首先考慮為人類解決問題。說到這里,就引出了下一點。d2b63e3a-ee29-11ee-9118-92fbcf53809c.png

02

為人而不是為機器編寫代碼


“任何傻瓜都可以編寫計算機可以理解的代碼。優(yōu)秀的程序員編寫人類可以理解的代碼?!?

代碼是為人類編寫的,而不僅僅是為計算機編寫的。

代碼是為團隊中的工程師準備的,他們會閱讀、維護并在代碼的基礎上進行構建。

代碼是為用戶準備的,

不管是用手機的孩子,還是調用API開發(fā)者,或者是你自己。

d2c5eef2-ee29-11ee-9118-92fbcf53809c.png

我認識的最好的工程師總是為所有受眾評估他們代碼的價值。

如果他們沒有打動某個受眾,則該代碼就不會投入生產。

d2b63e3a-ee29-11ee-9118-92fbcf53809c.png

03

與代碼本身分離

優(yōu)秀的工程師不依附于代碼本身。

即使他們已經完成了90%,如果改變意味著最終的結果會更好,那么他們不害怕刪除代碼并重新開始。

代碼不是個人的,所以反饋是從容的。

代碼并不完美。沒有人關心完美的代碼。他們關心的是帶來變化的代碼。

教會自己不依附于代碼的最好方法是認識到,在20年內,你的大部分代碼很有可能成為技術債務、被棄用或被重寫。

d2b63e3a-ee29-11ee-9118-92fbcf53809c.png

04

使用一致的標準

編寫代碼時,請堅持一致的編碼標準和風格。一致性使代碼更容易被未來的你和你的團隊成員閱讀和理解。

一致的風格指南可以讓團隊和代碼庫更容易擴展。這就是為什么Meta和Google這樣的公司能夠快速發(fā)布如此多的代碼,而不會隨著時間的推移使代碼庫變得不可讀和不可維護。

d2d46f4a-ee29-11ee-9118-92fbcf53809c.png ? 我認識的每一個優(yōu)秀的人都內化了團隊的代碼標準,并盡可能嚴格地遵循它,洞悉它的好處。

d2b63e3a-ee29-11ee-9118-92fbcf53809c.png

05

寫簡單干凈的代碼


我認識的每一位精英工程師都編寫了一些代碼,這些代碼編寫起來可能很復雜,但最終閱讀和理解起來都很簡單。我能想到的最好的詞就是他們的代碼很美觀。

他們的代碼干凈、有條理、合乎邏輯。在他們的代碼中做出的每個決定都是有意義的,當有些事情沒有意義時,它會在代碼中被很好地記錄下來。

編寫干凈代碼的一個好方法是遵循原則,比如SOLID原則。雖然它們最初是用面向對象編程(OOP)設計的,但它們可以擴展到通用編程:

  • 單一責任:一個類只能有一個責任。
  • open-closed:軟件對象(類、模塊等)應該開放擴展,但關閉修改,允許可預測、可維護的代碼。
  • Liskov 替換:子類型必須可替換其基本類型,而不會影響程序的正確性。
  • 接口隔離:代碼不應該依賴于沒有使用全部接口的大型接口。相反,包應該包含并允許更小的、特定的接口被導入。
  • 依賴反轉:高級模塊不應依賴于低級模塊;兩者都應依賴于抽象,從而促進更靈活和解耦的系統(tǒng)設計。

這方面的一個例子是命名。好的命名沒有神奇的值、明確的區(qū)別、描述性的函數名稱和可理解的變量。

d2b63e3a-ee29-11ee-9118-92fbcf53809c.png

06

不要讓意外發(fā)生

代碼不應該產生意外。這是通過遵循代碼原則和編寫適當的測試來實現的。

好的代碼是可預測的。

測試強制代碼清晰和可預測性。他們提供信心。良好的自動化測試允許團隊對代碼進行更改,而不必擔心會破壞一些看不見的東西。

d2e5dc6c-ee29-11ee-9118-92fbcf53809c.png?

一些類型的測試包括:

單個組件和獨立功能的單元測試。

用于多個組件之間交互的集成測試。

端到端測試,從用戶的角度評估整個系統(tǒng)的功能

測試應該很簡單。

在閱讀失敗的測試時,應該很容易識別出哪里出了問題。

知道什么不應該測試也很重要。

例如,如果端到端測試的工作量超過了程序的實際收益,那么測試將被周全的文檔、監(jiān)視和向正確的人(例如代碼所有者)發(fā)出警報所取代。

測試也不應該測試代碼中的實現細節(jié),比如測試前端代碼中的某些CSS選擇器,而不是使用數據屬性或只是屏幕截圖測試。

d2b63e3a-ee29-11ee-9118-92fbcf53809c.png

07

經常溝通


偉大的系統(tǒng)不是單獨建立起來的。優(yōu)秀的工程師會進行設計審查,征求反饋,并繼續(xù)對他們的初始設計進行迭代。 每個人都有知識盲區(qū),可以由其他人來填補。新的視角通??梢詭椭a變得更清晰,或者提供以前可能沒有想到的新方法。 最好的工程師既善于溝通又善于合作——為了更好的最終結果,他們不怕花時間一起工作。 這可以很簡單,比如讓團隊成員快速檢查文檔,或者為重要的拉取請求添加額外的代碼檢查人員。d2b63e3a-ee29-11ee-9118-92fbcf53809c.png

08

慢,即是快

我所知道的最好的工程師通過慢編碼來快速完成項目。聽起來很奇怪,對吧? 其實,上述所有這些原則和習慣都增加了首次編碼的時間。但它們允許工程師一步一步地推進項目的進展。 通過花時間使用標準、適當地測試、使用原則和經常溝通,從長遠來看,他們可以節(jié)省更多的時間。當我還是一名實習生和初級工程師時,我親身經歷過另一種選擇,我相信很多人也有過這種經歷,那就是向前沖3步,撞到一個障礙物,然后不得不后退5步。d303b264-ee29-11ee-9118-92fbcf53809c.png

09

不要盲目循規(guī)蹈矩


以上的“規(guī)則”和“原則”只是指導方針。并不是所有的東西都能很好地符合指導方針。

有時候,你寫的代碼是一個正方形,不能放進那個圓圈里。沒關系。

d307598c-ee29-11ee-9118-92fbcf53809c.png

在這種情況下,請確保記錄代碼以某種方式編寫的原因。

如果你不這樣做,那么有人,比如未來的你,可能會在未來看到當時的代碼時覺得“哇,我當時真笨。為什么不符合我們的標準呢?”

然后,他們會花20個小時重新編碼,以符合標準,只是為了得到和以前相同的結論。聽起來是不是很熟悉?

軟件開發(fā)的現實是,并不是所有的代碼都是干凈的或完全遵循規(guī)則的。

但是,它可以是一致的、干凈的、可理解的、可測試的和有價值的。

d303b264-ee29-11ee-9118-92fbcf53809c.png

10

寫在最后

此外,我還注意到,這些工程師的行為模式還包括:至少在一個領域有深厚的領域知識。我所記錄的每一位工程師如今都是各自領域的頂尖人物,因為他們專注于某一領域,并成為了該領域的專家,無論是前端基礎設施、分布式系統(tǒng)還是簡潔的UI。

經常適當地推銷自己。這些工程師并沒有藏匿于幕后。他們團隊中的每個人以及與他們一起工作的每個人都知道他們的價值和專長。這是通過適當地營銷自己和從事高影響力項目的結合而實現的。

本文轉載自公眾號|嵌入式Linux那些事

如有侵權 |聯系刪除

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    88

    文章

    3521

    瀏覽量

    93276
  • 代碼
    +關注

    關注

    30

    文章

    4671

    瀏覽量

    67771
收藏 人收藏

    評論

    相關推薦

    養(yǎng)成良好的labview程序編寫習慣

    斜線(\)、斜線(/)、冒號(…等。6. 使用標準的擴展名,如*.vi、*.ctl。7. 如果檔名是英文的話,第一字母請用大寫(養(yǎng)成良好的習慣)。8. 在Files VI Prope
    發(fā)表于 05-06 00:58

    15編程習慣

    15編程習慣(15 Good Computer Programming Habits)   編者按:這是國外程序員Al katib總結的一些編程
    發(fā)表于 03-15 18:14

    【eBox生態(tài)圈】連載四:養(yǎng)成良好的編程習慣

    養(yǎng)成良好的編程習慣及其重要性寫代碼要做到達則兼濟天下,窮則獨善其身,如果你是一在做一教程,代碼要保證有良好、統(tǒng)一的風格,這樣讓用戶看著舒
    發(fā)表于 09-29 18:29

    嵌入式編程養(yǎng)成習慣

    是最復雜的東西,是需要用智力去把握的智力產品。良好的格式能使程序結構一目了然,幫助你和別人理解它,幫助你的思維,也幫助你發(fā)現程序中不正常的地方,使程序中的錯誤更容易被發(fā)現。內容介紹就到這里了,我想對于每位嵌入式工程師從業(yè)者來講一好的嵌入式編程
    發(fā)表于 01-07 16:36

    Linux入門必須養(yǎng)成的七大習慣

    Linux入門必須養(yǎng)成的七大習慣 對于很多Linux初學者來說,在剛開始使用linux系統(tǒng)時會感到很多的不適。這里為大家整理了自己以前l(fā)inux入門時別人告訴我的七習慣。我相信如果你
    發(fā)表于 04-02 16:16

    在硅谷的老美眼里,年薪12是怎樣一種體驗?

    在世界上其他地方,年薪12美元聽起來是很不錯的工作。然而在硅谷,瘋漲的房租和喪心病狂的生活成本,讓“年薪12”只是平均水平,盡管這已經
    發(fā)表于 06-22 10:19

    雷達天線設計射頻工程師招聘30-50萬年薪

    雷達天線設計射頻工程師招聘30-50萬年薪工作地點:上海學歷:碩士以上主要針對車載雷達24ghz或者77ghz天線設計職位:射頻工程師tel: 13 228 228 992
    發(fā)表于 06-08 09:57

    西安安泰儀器維修----如何養(yǎng)成正確使用示波器的習慣呢?

        當一件正確的事情成為我們習慣的時候,對一人的影響是正面且長期的,意義也很重大。養(yǎng)成使用示波器的習慣對一工程師的影響也是一生的,而
    發(fā)表于 03-04 15:04

    高效能人士的7習慣

    高效能人士的7習慣:文化決定你的觀念觀念決定你的心態(tài)心態(tài)決定你的行為行為決定你的習慣習慣決定你的未來  冰山理論 &n
    發(fā)表于 05-07 23:08 ?0次下載

    養(yǎng)成使用示波器的習慣

    養(yǎng)成使用示波器的習慣,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 09-18 17:15 ?0次下載

    DIY:三大自制WiFi天線 30KM不是(圖文)

    DIY:三大自制WiFi天線 30KM不是(圖文)
    發(fā)表于 02-08 11:36 ?118次下載

    30萬元年薪仍招不來芯片人才的原因究竟是什么

    國內IC業(yè)人員的平均工資為月薪9000元,但同時國內知名大公司年薪30元招不到一合格的IC人才?!
    的頭像 發(fā)表于 12-01 09:45 ?4194次閱讀

    PLC編程需要養(yǎng)成良好的編程習慣

    VB編程中關注的是事件,不強調主程序和子程序的觀念,因為VB主程序的工作是由PC的操作系統(tǒng)完成的。PLC則不然。PLC程序是以主程序為主干的,CPU不斷的循環(huán)執(zhí)行主程序,只有觸發(fā)條件成立時才會調用子程序或中斷程序。
    發(fā)表于 03-24 16:32 ?955次閱讀

    Python的良好編程習慣

    Python的良好編程習慣分享。
    發(fā)表于 05-28 10:11 ?8次下載

    C 語言編程習慣總結

    編程習慣的培養(yǎng)需要的是一長期的過程,需要不斷地總結,積累,并且我們需要從意識上認識其重要性,一良好的編程
    發(fā)表于 01-26 17:15 ?0次下載
    C 語言<b class='flag-5'>編程</b><b class='flag-5'>習慣</b>總結