軟件工程師必不可少的5種基本技能

確保將這些技能添加到您的武器庫中

軟件工程師必不可少的5種基本技能

Photo by Rich Tervet on Unsplash

如今,軟件工程師需要掌握多種技能。 我們都知道明顯的那些。 在該列表的頂部,您會發現需要了解如何編程的知識,因此需要了解一種編程語言。 同一列表上的其他項目是您需要善於解決問題,並且需要掌握有關算法和數據結構的知識。 我們可能都同意您也需要一些溝通技巧。

但是,您可以將更多必不可少的但經常被忽視的技能添加到此列表中。 這包括人們不一定認識或未能認識到該領域所需或需要的技能。 它們並不是很明顯,但是隨著時間的流逝,您會意識到所有出色的軟件工程師都花時間學習這些知識。

檢查並查看您的武器庫中是否已具備此列表中的技能。 如果您在此列表上缺少某種技能,那麼可能是將這種技能添加到技能組的好時機。


1.閱讀代碼

對於任何軟件工程師來說,最被低估的技能之一就是讀取代碼的能力。 代碼的持續時間比編寫代碼時預期的要長得多。 這就是為什麼對COBOL開發人員的需求仍然很高的原因,這種需求已經存在了60年。

我們生活在一個開發人員來來往往的世界中,但是代碼永不動搖。 這導致了這樣一個事實,即軟件工程師不得不花太多時間在閱讀代碼和嘗試理解代碼庫上。

羅伯特·C·馬丁(Robert C. Martin)的話很好地概括了這一點:"閱讀與寫作所花費的時間之比超過10:1。我們不斷閱讀舊代碼,這是編寫新代碼的一部分。"

因此,作為軟件工程師,您將花費大部分時間閱讀和嘗試理解代碼片段,而大多數時間甚至都不是您自己的代碼。 很難做到這一點,因為您經常不知道該代碼創建者的意圖。

在最理想的情況下,您將進入一個代碼庫,其中所有代碼都編寫正確,結構合理,文檔正確並經過測試。 實際上,幾乎從來沒有這樣。


2.提出正確的問題

知道要問什麼問題是一項技巧,如果您想構建正確的事物,這是必不可少的。 提出正確的問題是成為軟件工程師的一部分。 在開始構建之前,重要的是要深入瞭解要實現的目標。

您是要構建正確的事物還是要構建正確的事物?

不要誤會我的意思-正確地構建事情很重要,但是大多數軟件工程師對此都過於關注。 在開始構建之前,您應該提出一個問題,我們正在構建正確的東西嗎?

知道要問什麼問題,這樣就可以確保要構建的東西正確。 一旦開始構建錯誤的東西,所有的精力都將浪費掉。 瞭解為什麼要實施某個功能,以便更好地預見未來的問題。

3.正則表達式

令人驚訝的是,很多軟件工程師對正則表達式並不瞭解。 正則表達式是對文本進行模式匹配的一種方法。 它們經常被忽略,大多數軟件工程師將正則表達式視為難以學習的東西。

正則表達式可能會變得非常困難,並且肯定具有學習曲線。 儘管如此,正則表達式仍然可以完成很多工作。 最明顯的用例是在大型代碼庫中搜索某些文本。

正則表達式的另一個用例是在您喜歡的代碼編輯器中進行搜索和替換。 您甚至可以使用正則表達式來禁止提交某些字符串。 如果您是網絡開發人員。 您可能在職業生涯的某個時候使用了正則表達式來驗證用戶數據。

如您所見,正則表達式有很多用例。 由於它們用途廣泛,因此您不能簡單地忽略它們。 如果您想成為一名更好的軟件工程師,則必須更熟悉正則表達式。

4.調試

對代碼的任何更改都可能造成破壞。 作為一名負責編寫代碼的軟件工程師,您可能會發現這些東西並不總是能很好地融合在一起。 錯誤不可避免地會在某個時間點潛入代碼庫。

一般的軟件工程師會花費大量時間進行調試,這意味著掌握它是一項很棒的技能。 特別是因為如果您不知道如何正確地進行調試,調試實際上會變成一個耗時的過程。

調試真正歸結為解決問題的技巧。 對於大多數軟件工程師來說,他們的大部分工作將是修復小錯誤。 這些錯誤中有許多可能是晦澀難懂且難以跟蹤的。

調試時,您不想先查看代碼並立即與調試器一起逐步調試。 在開始之前,您將需要某種計劃。 如果您直接進入調試器,則基本上就是復活節彩蛋。

能夠快速確定代碼中可能存在錯誤的位置是一項強大的技能。 您的分析和解決問題的能力越強,您可以更準確,更準確地解決這些錯誤。

5.工具

能夠為自己創建工具是將真正優秀的軟件工程師與平庸的軟件工程師區分開來的一件事。 而這是最好的軟件工程師所做的事情。

編寫自己的工具可以提高您的生產力。 使用自己的工具最好的部分是,您可以加快流程和工作流程,而不必侷限於現有的工具。

工具可能是完成x編碼量與2x編碼量的軟件工程師之間最大的不同。 甚至3倍。 您可能製作的工具可能從執行簡單的任務到更高級的任務不等。 例如,您可以編寫一個腳本,該腳本在每次提交之前自動刪除代碼。 這樣,您每次放錯逗號時都不必重新提交。

通常,這些工具可以在腳本中使用Python,Bash或PHP等語言製作。 也有其他選項可用,但是它必須是某種可以在命令行上很好地使用的腳本語言。

這些腳本可用於加快整體工作流程,從而使您完成更多工作!


(本文翻譯自Daan的文章《5 Essential, Yet Overlooked Skills for Software Engineers》,參考:https://medium.com/better-programming/5-essential-yet-overlooked-skills-for-software-engineers-f036cb20836c)


分享到:


相關文章: