人員、產品和技術:工程管理初學者指南

已發表: 2022-03-11

作為一名軟件工程師,你的職責通常定義得很清楚:任務分配給你,你的工作是按時有效地實施它們。

然而,在工程經理的角色中,職責通常沒有明確定義。 管理不是二元的。 某些問題和問題沒有直接的答案。 作為經理,你的成功程度取決於你領導員工、管理產品和管理技術的能力。

以人為本

在工程經理角色中,您的新優先級是您的團隊。 那麼,如何確保您擁有一支優秀的團隊呢?

建立團隊並建立信任

第一步是確保在您還沒有團隊的情況下為您的團隊僱傭合適的人。

一個糟糕的招聘不僅會浪費他們的時間,還會浪費你其他團隊成員的時間,他們需要收拾殘局。 這將使您團隊的其他成員士氣低落。 即使一個人是一個出色的程序員,如果他們不適合團隊的文化,他們仍然可能是一個糟糕的員工。

確保您不僅要問技術問題,還要問有關在團隊中工作或擔任領導角色的開放式問題。 例如,詢問候選人:

  • 描述他們必須解決的最近的問題
  • 他們如何實施解決方案
  • 他們考慮了哪些替代方法
  • 談論他們在生產中遇到關鍵問題的時候,他們如何應對,以及他們為防止將來出現相同類型的問題所做的工作

一旦你有了一個團隊,就要花時間贏得團隊的尊重並建立信任。 為了有效地領導團隊,您需要與團隊成員建立健康的關係。 花時間了解他們的職業目標以及對他們來說什麼是重要的。

一對一會議是與每個團隊成員建立聯繫並更好地了解他們的重要工具。 理想的一對一會議頻率是多少? 這將取決於您的團隊成員的具體需求,但最好每個月至少與他們會面幾次。

但是,如果您和您的團隊密切合作,或者您有一個龐大的團隊,您可以每月召開一次會議。

工程經理如何授權和改進團隊

你工作的很大一部分取決於識別個體成員的優勢和劣勢。 通過將他們與高級工程師配對並進行頻繁的代碼審查來幫助他們解決他們的弱點,並專注於他們的優勢。 畢竟,是我們的優勢激勵我們並塑造了我們喜歡做的事情。

根據每個工程師的能力和特徵分配任務,以便從每個人中提取最好的東西並創建一個偉大的團隊。 在這方面,自動化可以走很長一段路。 設置持續集成以識別損壞或次優代碼以及頻繁提交此類代碼的人。

您的團隊成員將不斷尋求在對他們或團隊重要的領域學習、改進和成長。 去年對每個團隊成員有意義的角色和責任今年可能不再合適。 為確保每個團隊成員繼續感到挑戰和改進:

  • 密切關注他們的個人成長,投資他們的發展,幫助他們實現抱負。
  • 與團隊成員單獨會面,制定個人發展計劃並授權他們制定職業戰略。
  • 嘗試為自我發展分配額外的時間,允許團隊成員定期轉換角色,並組織內部研討會或培訓課程。

除了確保每個人的專業成長之外,工程經理的職責是保護他們的團隊。 您應該授權您的團隊做出決定,而不必害怕失敗。 如果事情確實失敗了,請承擔責任並從錯誤中吸取教訓。

這將在您的團隊嘗試新方法並培養成長心態時培養勇氣。 也就是說,如果您提供了適當的反饋並及時採取行動來引導您的團隊朝著正確的方向前進,那麼錯誤就不會發生不止一次。

產品經理和工程經理

工程經理角色的第二個重要方面是產品。 您必須與產品經理建立密切的關係,以調整期望並利用技術和團隊的技能來交付出色的產品。

以下是您應該承擔的六項工程經理職責:

確保項目優先排序

您的團隊 6 到 12 個月的目標是什麼? 你的聽眾是誰? 您的客戶對產品有什麼期望? 您的團隊可能知道他們將在接下來的幾週內做什麼,但了解完整的產品及其發展方向至關重要。

參與產品開發決策

作為一名工程經理,您將與不同的團隊一起工作,並且比您作為個人貢獻者更多地參與產品方向和產品更新。 您不一定要同意有關產品的每一個決定,但您必須相信產品並希望將其做得更好。 如果您不同意他們的決定,您可以挑戰產品經理,但請記住,產品經理擁有最終決定權。 尊重他們並支持他們的決定。

定義和推動技術戰略和開發方法

產品經理的工作是定義產品策略和概念,而您的角色是定義產品的架構願景和技術設計。 您還負責定義開發方法並確保其被團隊採用。 請記住:產品經理可能擁有產品,但您和您的團隊擁有產品的實施。

在某些情況下,可以通過少量的工程工作來實現有用的功能。 例如,檢查升級到產品使用的框架的較新版本是否可以幫助您更快或更有效地實現某些特定功能。 對產品有一個很好的了解可以幫助您和您的團隊識別此類案例並將其推薦給產品經理。

平衡創造和償還技術債務,以及開發新功能

當您構建最小可行產品時,上市時間是重中之重,因此您可能會積累一些技術債務。 隨著產品的發展,重點轉移到添加新功能和改進產品,同時償還技術債務。 如果不解決您最初所做的權衡,添加新功能將花費更多時間並且成本更高。 花時間了解並跟踪您所做的妥協,並在解決債務和添加新功能之間找到平衡。

使用技術和自動化來幫助管理技術債務**

使用源代碼靜態分析來識別具有最多可維護性索引的代碼,並優先考慮重構代碼。 這樣,處理新功能變得更容易,產品的性能也會得到提高。

確保產品執行步入正軌

您應該了解團隊工作的當前狀態。 如果您的團隊落後於計劃,請找出明顯的障礙並將其移除。 例如,如果團隊經常遇到技術問題,請建立頻繁的結對編程會議,以改善團隊成員的知識共享。 如果團隊花費大量時間將代碼部署到服務器,請自動化該過程以節省時間並減少出錯的可能性。 盡量減少中斷並為如何承擔新工作和解決錯誤報告創建清晰的流程。

技術與授權

即使您仍然是工程師,但作為經理,開發軟件解決方案不再是您的主要職責。 您的團隊中有高級工程師,他們負責大多數技術解決方案。 將軍不拿步槍打仗; 管理者不應該對每一行代碼進行微觀管理。

但是,您應該使用您的知識和經驗來確保高級工程師做出的決策符合產品的技術路線圖和方向。 將技術決策委派給您的高級工程師,但提出正確的問題,以確保產品具有可擴展性、安全性和可靠性。

例如,用“如果我們的用戶數量增加 20 倍怎麼辦?”來挑戰他們的選擇。 那會是可持續的嗎?” 或者“這種技術在兩三年內還會得到支持嗎?”

您可以並且應該根據您的知識和專業領域提出替代解決方案和框架,但不要強迫或迫使您的團隊接受它們。 除了技術建議,您還可以提出與開發過程和方法相關的建議。

此外,請確保監控產品的關鍵指標。 業務和技術指標同樣重要。 與 DevOps 團隊合作創建警報以監控系統,並讓您的團隊隨時了解操作問題。 最後,制定一種在事件發生時解決事件的方法,以確保它們不會再次發生。

最後但同樣重要的是,及時了解最新的技術和趨勢。 您擁有的選擇越多,知道的越多,您將擁有的解決方案和框架就越多。 指定一些時間來閱讀文章、進行代碼審查並與您的團隊一起參與技術討論。

你對技術問題了解得越多,你的團隊就會越尊重你。 保持對新興技術的熟悉——並鼓勵你的團隊也這樣做——將幫助你營造一種充滿好奇心的氛圍,並挑戰你的團隊尋求新的和創新的方法來解決複雜的技術問題。