Categories
程式開發

工程主管有哪些職責?


本文最初發佈於Hashtag Coder博客,經原作者授權由InfoQ中文站翻譯並分享。

在我的職業生涯中,我很榮幸自己身為組織的一員能不斷被組織推動著前行。我剛來到現在任職的公司Roundtrip時是一名軟件工程師。當時,Roundtrip是醫療運輸領域的一家早期初創公司,包括我在內總共有六名員工。隨著團隊的成長,我的直屬上司,也就是公司的CTO需要從日常工作中抽身出來負責更宏觀層面的事務,因此我也被提升到了領導崗位上來填補他的空缺。我的責任和職責發生了變化,但當時我在組織結構圖中的位置沒有改變。

我不知道組織對我有怎樣的期望,但是我知道自己必須擴大團隊規模,具體做法包括尋找新的工程師,處理技術和個人面試事宜,還要創建諸多流程來推動團隊前進。除此之外,我還必須弄清楚我的職責範圍。

工程主管有哪些職責? 1

三年過去了,我終於能自信滿滿地談論我的職責,以及我眼中這個職位帶給組織的價值了。最近我給自己提出了一項挑戰,那就是將我的角色畫成思維導圖,並將每個部分詳細分解為具體的期望。團隊領導力

一對一面談

我的任務是打造一支創建世界一流產品的世界一流的工程團隊。要完成這個目標,需要從團隊的每一位成員開始行事。我需要了解和管理各位成員的動力、情感、技能和期望水平,幫助他們設定目標,消除個人和職業障礙,並讓他們滿意自己的薪水和當前的角色,這樣才能讓他們保持專注並持續輸出高質量的成果。我每週都會與我的團隊成員一對一會面,以隨時把握他們的需求節奏,並為他們提供一個可以傾聽自身訴求的平台。

招聘

要打造最好的團隊,我們必須找到最優秀的人才。我們招來的每位新人都應該比現有團隊的平均水平更強。這樣就可以保持較高的團隊素質水平,並讓每個人都感受到競爭的壓力。

招聘不只是要找到符合職位需求的人才。我還要考慮符合團隊需求的那些個人特質。為此,我要確定團隊的弱點和需求都有哪些,並找到可以彌補這些不足的人員。如果我有強大的執行者,但缺少人員領袖,那麼我會請一位擅長領導的人才。總的來說,我需要招來的人有自己的長處,而不是要求他們完美無缺。這樣就可以確保我能擁有一支強大而平衡的團隊。

繪製工程團隊成長藍圖

進步是動力的重要源泉。人們需要知道組織對他們有什麼期望,這樣才能持續挑戰自我。有一句老話說得好:“根據你期望的職位塑造自我”。我也鼓勵我的團隊採取這種行為,因為隨著我們為每個職位設定期望和成功的具體標準,並在一對一交流期間衡量成員與這些標準的距離,我們就能為各位成員定義出明確的職業發展道路,並在他們需要完成具體哪些工作的問題上保持足夠的透明度。如果有人表現出色,那麼自然就會得到晉升。

我曾經認為辛勤的工作會讓員工得到晉升。這是因為當時我不明白不同的崗位之間除了頭銜的變化外還有哪些具體的職責差異。現在我的視角就有所變化了。如果我團隊中的某位成員正在努力工作,我會讓他留在自己的崗位上,因為他正在完成工作。相比之下,我要尋找的是能幫助我打造10倍工程師團隊的人才——這樣的人才不是要成為優秀的工程師,而是要領導他周圍的人們都做好自己手頭的工作。

加強核心價值觀

核心價值觀是我用來確保每個崗位上都有合適人才的主要武器。對我來說,如果我認同一個組織的價值觀,我也會很願意加入他們。例如,Roundtrip有5種價值觀:

  • 主人翁意識
  • 主動性
  • 彈性
  • 重視傾聽
  • 保持簡潔

只要讓我自己和同事們一直在這些價值觀的約束下行事,我們的團隊就能保持在較高的水平上。

推動我們朝著使命前進

要讓所有人朝著同一個方向划船,最好的方法是將使命視為我們的真相來源和前進道路上的嚮導。每位成員、每個流程和每種舉措都要根據使命來評價,這樣我們就能向著目標一步步邁進。

隨著Roundtrip的成長,我們用使命來提醒自己保持同理心。打造一個只關注付費客戶需求的“成長型組織”是很容易的,但是作為一個使命驅動型組織,我們要做的是消除醫療保健領域中的交通運輸瓶頸,從而幫助那些沒有得到妥善服務的人們;因此我們需要牢記,那些對營收數字貢獻不大的客戶也是對組織來說同樣重要的。每位領導者都有責任不斷向團隊傳達這一信息。

流程管理

軟件開發生命週期

良好的軟件開發生命週期(SDLC)可以幫助我們以可預測的方式持續提供高質量的軟件。儘管我離開一線崗位已有一段時間了,而且工程總監可能都很少有時間來寫代碼,但我仍然要決定我們的具體工作方式。

在這裡,一個平衡點是我自己專注於產出、價值和成本,同時讓我的團隊專注於具體的成果。我負責報告創建一項功能所需的時間、每個sprint可以獲得的點數,以及保持團隊運營所需的成本。我能管理的必須是我能衡量的事物。

擴大團隊規模

我在擴大團隊規模時肩負的職責是雙向的。向下來說,我有責任為團隊找到合適的人選,並要能將他們放在正確的位置上。向上而言,我要為組織考慮成本和優化的問題。我必須在預算範圍內招聘新人,讓公司的盈利能力不受影響。大手大腳花錢辦事是很容易的,但要以一種在財務角度上負責任的方式來解決問題,幫助公司在成長時保持瘦身狀態,這就困難得多了。

當新的成員加入我們的團隊時,我負責建立入職流程,為他們提供必要的背景信息,讓他們準備好踏上成功之路。為此,我將入職過程分為三個階段。第一步是確保他們“領會”。具體來說就是讓新人熟悉組織、問題的範圍和我們現有的流程。下一步是確保他們“想要”。在入職期間,我要讓新人獲得正確的動機和動力。從這裡開始,我會根據我們的核心價值觀來評價他們,並為他們設定一些目標。最後,我要確保他們“可以做到”。他們能夠挑戰團隊的其他成員嗎?他們是晚會主角嗎?對我而言,想要成功就需要維持一個不斷發展以滿足團隊需求的過程,而我的措施是塑造一種健康的工程文化。

定義技術策略

Roundtrip技術團隊分為兩個部分:工程和產品。工程團隊側重於“方法”,而產品團隊則關注“內容”。儘管我不負責定義產品路線圖,但我有責任解決團隊所面臨的挑戰。我們每週開會討論路線圖上需要做哪些規劃,從解決技術債務到開發基礎設施增強措施都可以是規劃的內容。

另一部分是設計產品以滿足客戶不斷變化的需求。我曾經更偏重解決方案開發過程中的技術方面,但是最近我需要從這一領域抽身出來,專注其他方面的職責,所以要將技術層面的工作託付給我的團隊。

EOS

經營公司是很困難的事情。 Roundtrip嘗試了幾種不同的系統來幫助組織全體向著同一方向前進,但最適合我們的系統是EOS。作為組織的領導者,我的職責包括主持團隊的L10會議,從而掌握我們每週的工作情況,並幫助我們以客觀的視角看待業務,從而快速識別和解決問題。

產品方向

為路線圖提供資源

Ben Horowitz提出了一種非常好的理念,那就是將公司定義為兩個階段:和平時期和戰爭時期。在和平時期,我們會經歷長期的增長,在此期間我們專注於構建產品以為客戶創建更好的流程。在這一時期,產品團隊定義了一個路線圖,而我必須確保工程團隊有足夠的資源來完成工作。在戰爭時期,比如說當我們處於經濟衰退期時,就該優化路線圖和流程了。在這一時期內可用的資源可能受到限制,這意味著產品團隊必鬚根據我們現有的資源來定義路線圖。戰爭時期,組織更專注於提高收入和保留/獲取客戶的計劃,因此我的職責也從找到符合崗位需求的合適人員,轉變為讓現有的員工找到合適的工作,從而盡可能保持預算平衡。

管理部署

作為工程總監,我必須確保我們的交付節奏。如果這裡存在障礙,我必須引導我的團隊跨過它們。部署通常是軟件交付流程中最後也是最困難的部分,因此我的大部分精力都用在了打造可靠的流程上。

我還必須考慮部署對客戶和我的團隊的影響。我一方面要讓客戶盡量不受部署行為的干擾,另一方面還要讓團隊適應特殊的部署時間,保持健康的工作狀態,這種平衡實在是很難掌握的

監督整合

與第三方合作可以幫助我們成長,但是從技術角度來看這些計劃會帶來巨大的風險,因為我們無法控制很多來自第三方的影響。從早期技術討論到實現和採用過程,我一直在關注那些正在使用的流程,以確保一切順利進行。歸根結底,我們只有一次機會來建立良好的第一印象,因此我需要確保我們能給人展示最好的初始印象。

權限控制

這一部分是要確保人們只能獲得自己所需的東西,從而控制風險。但這裡也有另一個視角。我想讓我的團隊感到自己得到了充分的信任,並能主導他們正在創建的產品的控制權。我試著僱用聰明的人來做聰明的事情,將任務委派給他們,讓他們獲得權限並有掌控全局的感覺。

自行構建還是購買功能

如今,隨著可用服務的數量不斷增加,我們只需將各種第三方產品拼接在一起就能輕鬆創建自己的產品。但是這樣做會讓我們失去很多對功能的控制權,還會降低功能的獨特性。作為開發人員,選擇自己創建所有內容同樣是很容易的。但是這樣做會浪費時間並增加複雜性。

在我的立場來看,這就要不斷思考並對比“構建與購買”的優劣,從而優化成本結構並簡化工作。總的來說,我需要判斷哪種決策可以給我帶來最佳的投資回報。

總結

工程主管是具有挑戰性的崗位。這一職位對人員和技術都要承擔很多責任。這意味著你要肩負起最重要的使命,並且在危機時期往往責任也更為重大。沒人給你提供時間表或者對未來的預測,而且這並不是那種朝九晚五的工作,而是要全力排除掉前路的障礙才算完事。但如果你能正面迎接挑戰,就會在你的員工和產品中看到直接的成果,這會是非常有成就感的事情。

延伸閱讀

https://www.hashtagcoder.dev/blog/director-of-engineering