tft每日頭條

 > 科技

 > 軟件設計師和程序員區别

軟件設計師和程序員區别

科技 更新时间:2024-08-09 03:03:46
【CSDN 編者按】什麼樣的開發者才能被真正地稱之為軟件工程師?有人說,隻要會寫代碼即可;也有人說,“10x 編碼者”必然是一位軟件工程師;還有人說,隻要熟悉各種軟件開發原則就能滿足這一崗位的需求。實則,想成為一個資深軟件工程師,需要永葆學習的熱情。

原文鍊接:

https://betterprogramming.pub/writing-code-is-one-thing-learning-to-be-a-software-engineer-is-another-9d5c6fc5d6a

聲明:本文為 CSDN 翻譯,轉載請注明來源。

作者 | Ben ”The Hosk“ Hosking

譯者 | 彭慧中 責編 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下是譯文:

寫代碼是一回事,想要成為一名軟件工程師則是另一回事。

一旦你通過駕照考試并經常練習開車,你自然就學會了開車。而要成為一名熟練的“老”司機,不僅僅需要在正常駕駛的情況下避免撞車,還要掌握理論知識,因為這是能夠指導你在路上可能會遇到的所有突發情況和場景的方法論。作為一名軟件開發人員,在創建軟件的時候就像是在駕駛一輛汽車,不過這比開車要複雜上千倍,而且會遇到兩倍多的突發情況。

軟件設計師和程序員區别(寫代碼就能成為軟件工程師)1

開發人員創造了軟件,同時獲得技能、經驗和知識,而軟件開發技能決定了開發者如何構建高質量的軟件并交付軟件項目。身為開發者,做好本職的開發工作和創造一款軟件是一回事,但是為了提升自己的職業生涯,需要不斷地學習軟件開發的基礎知識。對開發人員的教育不僅僅是編寫代碼。你寫的代碼、掌握的技術技能并不是一份職業的堅實基礎,因為在未來5-10年的時間裡,你将需要不同的技術技能。

很多開發者創造了項目上所需要的軟件,因為這是客戶和自己工作所在的公司所需要的東西,并且他們也支持了一定的薪酬。而一個開發人員的價值基于他們自身的技能、知識和經驗,所以對于開發者而言,想要有提升,一定需要确保自己持續學習、精進并且成為一個更好的軟件開發人員。理想情況下,你會同時做這兩件事,盡管很難兼顧,但開發人員需要确保這一點。

當你覺得作為一名開發人員身處舒适圈時,那麼,是時候考慮改變了!

軟件設計師和程序員區别(寫代碼就能成為軟件工程師)2

掌握技術

軟件開發是一項你永遠無法完全掌握的技能。

在軟件開發面前,開發者的角色是一名學生,每當你知道自己在做什麼時,它就會“打”你的臉。優秀的開發人員是謙遜的,因為軟件開發往往會用令人尴尬的錯誤粉碎了他們的過度自信。

你無法避免錯誤、問題和災難。因此,你需要謙虛地承認錯誤,并需要一個團隊來幫助你發現并解決它們。

當你以開發人員的身份開始時,你将專注于創建滿足需求的代碼。我曾經認為作為一名開發人員隻是編寫代碼。事實上,軟件開發還有許多其他方面,從設計、架構、單元測試到DevOps和ALM,從收集需求到闡明假設,最終還覆蓋了許多最佳實踐,如SOLID原則、DRY(Don’t repeat yourself)、KISS和其他。

掌握最佳實踐和基本技能對于開發者而言,具有長期效益。但往往初級開發者并不太能理解這一點,因為他們在最初看不到學習這些的好處。基于良好的命名規則、開發易于測試的代碼,往往不是開發者寫的第一版代碼,同時它不僅是滿足工作中的需求,更重要的是易于閱讀、理解和修改。

軟件設計師和程序員區别(寫代碼就能成為軟件工程師)3

我曾經在處理遺留代碼時,裡面有一個涉及“2000行”的函數方法,這個方法就像是一個狀态監測機器,用于控制應用程序的狀态。這宛如一場噩夢,因為如果你改變了一行,它可能會破壞下面的代碼。一個更改可能會影響數百行代碼,幾乎無法進行測試。一個簡單的代碼更改可能需要一周的時間來完成和測試。

另一段代碼的命名很糟糕,使用了一個變量,即“第13個月”。讀代碼的時候,我不明白“第13個月”是什麼,我感覺它毫無意義。因此,我不得不弄明白,原來“第13個月”是一個變量,用來存儲汽車第一年和第二年之間用于維修的數值。

積累經驗是有價值的,因為通過處理糟糕的代碼并看到它導緻的問題,它會激勵你在未來不再犯這些錯誤。

軟件設計師和程序員區别(寫代碼就能成為軟件工程師)4

堅實的基礎

每個軟件項目為獨特的需求創建專屬的軟件。它建立在軟件工程的基本原理上。優質的開發是通過良好的作業流程、最佳實踐、DevOps和代碼審查完成的。你需要确保你的最佳實踐沒有過時,并對更新它們持開放态度。會有新的工具、軟件和技術,需要你持續更新最佳實踐。

高級開發工程師需要對軟件開發過程中的每個細節都有前瞻性,并應該保持謙遜的态度,以開放的心态來及時對自己的開發流程進行更新。

軟件設計師和程序員區别(寫代碼就能成為軟件工程師)5

基本軟件工程技能

技術在變化,但軟件開發保持不變。

技術随着新的語言、服務、工具和最佳實踐而疊代。開發人員需要掌握一些基本的軟件工程技能,這些技能對于任何技術都是有用的。

  • 命名(被低估,但這是代碼簡單易讀的關鍵)

  • 設計代碼(設計簡單,不複雜)

  • 設計模式

  • 單元測試

  • DevOps

  • 軟技能

  • 文檔

  • 開發的最佳實踐

  • 敏捷開發

  • 修複Bug

這些核心技能是軟件開發的基礎。如果你不知道什麼是優秀的代碼,不理解它為什麼優秀,你就寫不出優秀的代碼。另一方面,你需要知道什麼是糟糕的代碼,這樣你才能寫出好代碼,并理解為什麼有些代碼是糟糕的。

軟件設計師和程序員區别(寫代碼就能成為軟件工程師)6

如果沒有人指導,或者沒有意識到這些代碼會造成未來的問題,初級開發人員就不會停止寫低質量的代碼。壞的代碼現在能用,但在将來會産生問題。壞的代碼就像一個人犯了錯。如果你不承認自己犯了錯誤,你就無法避免錯誤的發生。初級開發人員不了解軟件開發中最佳實踐的意義或好處。如果你不了解一種方法的好處,你就不會使用它。

軟件設計師和程序員區别(寫代碼就能成為軟件工程師)7

經驗并不都是有價值的

使用已有的技能和知識做軟件項目就像在跑步機上跑步一樣。你付出了很多努力,卻一無所獲。在你已經掌握的技能上獲得經驗的價值有限,因為它隻在你的簡曆上為該已有技能增加了更多的時間。有價值的經驗是在新鮮的環境中學習新的知識和技能,可以帶到未來的項目中去。

軟件設計師和程序員區别(寫代碼就能成為軟件工程師)8

保持好奇心——盡可能多地學習

好的開發者要學會理解軟件,而不僅僅是創造軟件。理解可以幫助你在未來創建軟件,避免問題,并對軟件開發的工作方式有更好的理解。

作為一名軟件開發人員。學習軟件開發之外的知識将使你在軟件開發方面做得更好,因為很多軟件開發都是與人一起解決問題。這是你可以自己的教育進行最好的投資。

軟件設計師和程序員區别(寫代碼就能成為軟件工程師)9

"每一天都要努力成為比你醒來時更有智慧的人。忠實地履行你的職責,并做好。你會系統地取得進步,但不一定是快速突飛猛進。然而,你要通過為快速沖刺做準備來培養紀律性。日複一日,一寸一寸地努力。如果你活得足夠長,有朝一日,大多數人都會得到他們應得的東西。" 查理-芒格

作為一個軟件開發者,你希望每天都能減少犯錯,用好代碼替換壞代碼。如果作為一個軟件開發人員,能做到每天都有進步,那麼随着你的技能、知識和經驗的增長,生活也會變得更容易。

軟件設計師和程序員區别(寫代碼就能成為軟件工程師)10

軟技能

軟件開發是一項團隊運動,因此,你與他人的溝通和工作越有效,就越好。創建軟件時的所有大問題都是由人引起的,也都是由人解決的。有效的溝通、說服和協作是值得投資的核心技能。

我曾經作為項目經理展示一個Scrum團隊的Demo和進展。我的團隊做得很好,并取得了很好的進展,但客戶對這個團隊或我并不放心。我從一位經理那得到了一些反饋,他解釋說是因為我在闡述過程中,把負面信息放在前面,把積極的部分留到了最後。這就像用擴音器播放壞消息,然後小聲說好消息。這給人的感覺是我和團隊沒有做好工作。

軟件設計師和程序員區别(寫代碼就能成為軟件工程師)11

感覺是真實的

從那以後,我在演講和溝通方面做了很多工作。你沒有太多時間去交流,但你需要讓它有價值。所有項目、晉升和其他重要決定都是由人作出的。你需要建立關系并影響他們。

軟件設計師和程序員區别(寫代碼就能成為軟件工程師)12

結論

你想做夢都想更加了解軟件開發,但提升不僅僅是指取得巨大的飛躍,而是持續的精進和持續的學習。

其他開發人員的經驗也是一個很好的知識來源,與他們多交流能使學習變得更容易和愉快。多向你的開發夥伴學習,複制他們的成功,避免他們的錯誤。

軟件設計師和程序員區别(寫代碼就能成為軟件工程師)13

END

成就一億技術人

軟件設計師和程序員區别(寫代碼就能成為軟件工程師)14

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved