【CSDN 編者按】
什麼樣的開發者才能被真正地稱之為軟體工程師?有人說,只要會寫程式碼即可;也有人說,“10x 編碼者”必然是一位軟體工程師;還有人說,只要熟悉各種軟體開發原則就能滿足這一崗位的需求。實則,
想成為一個資深軟體工程師,需要永葆學習的熱情。
原文連結:
https://betterprogramming。pub/writing-code-is-one-thing-learning-to-be-a-software-engineer-is-another-9d5c6fc5d6a
作者 | Ben ”The Hosk“ Hosking
譯者
|
彭慧中
責編 | 屠敏
出品 | CSDN(ID:CSDNnews)
以下是譯文:
寫程式碼是一回事,
想要
成為一名軟體工程師
則
是另一回事。
一旦你透過駕照考試並經常
練習
開車,你
自然
就學會
了
開車。
而要成為一名熟練的
“老”
司機,不僅僅
需要在正常駕駛的
情況下
避免撞車
,還要
掌握
理論
知識,因為這是
能夠指導你在路上
可能會
遇到的所有
突發
情況和場景
的方法論
。
作為一
名
軟體開發人員
,在
建立軟體
的時候
就像
是在
駕駛一輛汽車,
不過這比開車
要複雜
上
千倍,而且會遇到兩倍
多的突發情況
。
開發人員創造了軟體,同時獲得技能、經驗和知識,而軟體開發技能決定了開發者如何構建高質量的軟體並交付軟體專案。身為開發者,做好本職的開發工作和創造一款軟體是一回事,但是為了提升自己的職業生涯,需要不斷地學習軟體開發的基礎知識。對開發人員的教育不僅僅是編寫程式碼。你寫的程式碼、掌握的技術技能並不是一份職業的堅實基礎,因為在未來5-10年的時間裡,你將需要不同的技術技能。
很多開發者創造了專案上所需要的軟體,因為這是客戶和自己工作所在的公司所需要的東西,並且他們也支援了一定的薪酬。而一個開發人員的價值基於他們自身的技能、知識和經驗,所以對於開發者而言,想要有提升,一定需要確保自己持續學習、精進並且成為一個更好的軟體開發人員。理想情況下,你會同時做這兩件事,儘管很難兼顧,但開發人員需要確保這一點。
當你覺得作為一名開發人員身處舒適圈時,那麼,是時候考慮改變了!
掌握技術
軟體開發是一項你永遠無法完全掌握的技能。
在軟體開發面前,開發者的角色是一名學生,每當你知道自己在做什麼時,它就會“打”你的臉。優秀的開發人員是謙遜的,因為軟體開發往往會用令人尷尬的錯誤粉碎了他們的過度自信。
你無法避免錯誤、問題和災難。因此,你需要謙虛地承認錯誤,並需要一個團隊來幫助你發現並解決它們。
當你以開發人員的身份開始時,你將專注於建立滿足需求的程式碼。我曾經認為作為一名開發人員只是編寫程式碼。事實上,軟體開發還有許多其他方面,從設計、架構、單元測試到DevOps和ALM,從收集需求到闡明假設,最終還覆蓋了許多最佳實踐,如SOLID原則、DRY(Don’t repeat yourself)、KISS和其他。
掌握最佳實踐和基本技能對於開發者而言,具有長期效益。但往往初級開發者並不太能理解這一點,因為他們在最初看不到學習這些的好處。基於良好的命名規則、開發易於測試的程式碼,往往不是開發者寫的第一版程式碼,同時它不僅是滿足工作中的需求,更重要的是易於閱讀、理解和修改。
我曾經在處理遺留程式碼時,裡面有一個涉及“2000行”的函式方法,這個方法就像是一個狀態監測機器,用於控制應用程式的狀態。這宛如一場噩夢,因為如果你改變了一行,它可能會破壞下面的程式碼。一個更改可能會影響數百行程式碼,幾乎無法進行測試。一個簡單的程式碼更改可能需要一週的時間來完成和測試。
另一段程式碼的命名很糟糕,使用了一個變數,即“第13個月”。讀程式碼的時候,我不明白“第13個月”是什麼,我感覺它毫無意義。因此,我不得不弄明白,原來“第13個月”是一個變數,用來儲存汽車第一年和第二年之間用於維修的數值。
積累經驗是有價值的,因為透過處理糟糕的程式碼並看到它導致的問題,它會激勵你在未來不再犯這些錯誤。
堅實的基礎
每個軟體專案為獨特的需求建立專屬的軟體。它建立在軟體工程的基本原理上。優質的開發是透過良好的作業流程、最佳實踐、DevOps和程式碼審查完成的。你需要確保你的最佳實踐沒有過時,並對更新它們持開放態度。會有新的工具、軟體和技術,需要你持續更新最佳實踐。
高階開發工程師需要對軟體開發過程中的每個細節都有前瞻性,並應該保持謙遜的態度,以開放的心態來及時對自己的開發流程進行更新。
基本軟體工程技能
技術在變化,但軟體開發保持不變。
技術隨著新的語言、服務、工具和最佳實踐而迭代。開發人員需要掌握一些基本的軟體工程技能,這些技能對於任何技術都是有用的。
命名(被低估,但這是程式碼簡單易讀的關鍵)
設計程式碼(設計簡單,不復雜)
設計模式
單元測試
DevOps
軟技能
文件
開發的最佳實踐
敏捷開發
修復Bug
這些核心技能是軟體開發的基礎。如果你不知道什麼是優秀的程式碼,不理解它為什麼優秀,你就寫不出優秀的程式碼。另一方面,你需要知道什麼是糟糕的程式碼,這樣你才能寫出好程式碼,並理解為什麼有些程式碼是糟糕的。
如
果沒有人
指導,或者
沒有意識到這些程式碼會造成未來的問題,初級開發人員就不會停止寫低質量的程式碼。
壞的程式碼現在能用,但在將來會產生問題。
壞的程式碼就像一個人犯了錯。
如果你不承認自己犯了錯誤,你就無法避免錯誤的發生。
初級開發人員不瞭解軟體開發中最佳實踐的意義或好處。
如果你不瞭解一種方法的好處,你就不會使用它。
經驗並不都是有價值的
使用已有的技能和知識做軟體專案就像在跑步機上跑步一樣。你付出了很多努力,卻一無所獲。在你已經掌握的技能上獲得經驗的價值有限,因為它只在你的簡歷上為該已有技能增加了更多的時間。有價值的經驗是在新鮮的環境中學習新的知識和技能,可以帶到未來的專案中去。
保持好奇心——儘可能多地學習
好的開發者要學會理解軟體,而不僅僅是創造軟體。理解可以幫助你在未來建立軟體,避免問題,並對軟體開發的工作方式有更好的理解。
作為一名軟體開發人員。學習軟體開發之外的知識將使你在軟體開發方面做得更好,因為很多軟體開發都是與人一起解決問題。這是你可以自己的教育進行最好的投資。
“每一天都要努力成為比你醒來時更有智慧的人。忠實地履行你的職責,並做好。你會系統地取得進步,但不一定是快速突飛猛進。然而,你要透過為快速衝刺做準備來培養紀律性。日復一日,一寸一寸地努力。如果你活得足夠長,有朝一日,大多數人都會得到他們應得的東西。” 查理-芒格
作為一個軟體開發者,你希望每天都能減少犯錯,用好程式碼替換壞程式碼。如果作為一個軟體開發人員,能做到每天都有進步,那麼隨著你的技能、知識和經驗的增長,生活也會變得更容易。
軟技能
軟體開發是一項團隊運動,因此,你與他人的溝通和工作越有效,就越好。建立軟體時的所有大問題都是由人引起的,也都是由人解決的。有效的溝通、說服和協作是值得投資的核心技能。
我曾經作為專案經理展示一個Scrum團隊的Demo和進展。我的團隊做得很好,並取得了很好的進展,但客戶對這個團隊或我並不放心。我從一位經理那得到了一些反饋,他解釋說是因為我在闡述過程中,把負面資訊放在前面,把積極的部分留到了最後。這就像用擴音器播放壞訊息,然後小聲說好訊息。這給人的感覺是我和團隊沒有做好工作。
感覺是真實的
從那以後,我在演講和溝通方面做了很多工作。你沒有太多時間去交流,但你需要讓它有價值。所有專案、晉升和其他重要決定都是由人作出的。你需要建立關係並影響他們。
結論
你想做夢都想更加了解軟體開發,但提升不僅僅是指取得巨大的飛躍,而是持續的精進和持續的學習。
其他開發人員的經驗也是一個很好的知識來源,與他們多交流能使學習變得更容易和愉快。多向你的開發夥伴學習,複製他們的成功,避免他們的錯誤。
反彈行情下的專屬投資禮包!投資VIP權益、188元現金紅包,100%中獎>>
開啟App看更多精彩內容