iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
IT管理

FID 打造強力前端團隊系列 第 13

技術儲備之人才:魚塘效益

  • 分享至 

  • xImage
  •  

在我們老家那裡有一句老話叫做,「魚唔過塘唔會肥」這是一句粵語,中文的意思是「魚不過塘不會胖」,意思用來比喻,人不經歷些什麼不會成長的意思。

如果我們是一個戰隊,我們跟你合作的就是隊友,技術儲備中的人才就是我們的後備軍,我們的目標是要讓每一個人都能夠成長,成為一個優秀的隊友,成為一個優秀的後備軍。

但前面好幾章節,我都提及,是「專案」依賴於「系統」的狀態,而不是「專案」依賴於「人」,既然如此,又為何要花時間去培養技術儲備的人才呢?

精良的武器,也需要一個百發百中的射手

確實,我們需要準備很多「儲備」來應對各種變化,但不意味著我們可以放棄培養人才,反過來看,人才和團隊是一個相輔相成的關係,如果沒有優秀的人才,就不會有優秀的技術回饋給團隊,這樣團隊就不會有成長。

所以在技術儲備中的人才這個章節,如何管理和培養技術儲備的人才,也是我們要討論的重點。

對於這個話題,我們有以下幾個重點:

  1. 設計一個容錯的工作環境
  2. 回饋機制
  3. 漸進式成功
  4. 透過專案來培養人才
  5. 心智養成
  6. 過塘訓練

容錯的工作環境

在我們的團隊中,我們會設計一個容錯的工作環境,讓每一個人都能夠在這個環境中,不斷的犯錯,並且從錯誤中學習。

而這個錯,也必須是「主導者」和「主要設計者」所能預計的錯誤,並知道如何去解決這個錯誤,再另外一個層面,我們更間接的讓每個人可以發揮自己的創意和想像力去解決問題,因為就算是「主導者」和「主要設計者」,他們的觀點也不一定完全正確的。

當有參與者找到或是發現一個問題,並找到和設計出解決方法,我們要讓他們去實作,並且在實作的過程中,不斷的犯錯,然後得出最佳的解決方案,這個結果馬上就會反饋給團隊,讓每一個人都能夠從這個過程中學習。

容錯,是一個很重要的環節,也是我認為大部分領導人缺乏的一個環節,因為他們總是希望一切都是完美的,但事實上,完美的事情是不存在的,所以我們必須要讓每一個人都能夠在容錯的環境中,不斷的犯錯,並習慣的犯錯然後糾正,這反而讓大家正視錯誤,而不會因為害怕犯錯而選擇不做事情。

回饋機制

繼承上一個問題,回饋機制有 2 個面向,一個是內部,一個是外部,內部的回饋機制,就是我們要有一個可以互相得知和討論的管道,將資訊傳遞給團隊,讓每一個人都能夠知道,這個問題是如何發生的,以及如何解決的,讓大家知道「我們現在有什麼能力了」

第二個外部的回饋機制,就是當我們和其他團隊協作的時候,對其他而言,我們是封閉的,我們需要有一個統一的窗口和管道收集並分析資訊,將外部的訊息帶回來團隊。

接著這種資訊的流動,能更快讓團隊的研究方向和目的更清晰,並和外部的團隊更有效的溝通,減少溝通成本。

漸進式成功

在我們關於角色的討論中,我們提到,我們的團隊中,有「主導者」和「主要設計者」以及「參與者」,這些角色的分工,就是為了讓每一個人都能夠在自己的能力範圍內,做到最好,並且在這個過程中,不斷的犯錯,並且糾正,這樣的過程,就是漸進式成功。

所以我們分派的任務,必須是有難度,但又不會太難,讓每一個人都能夠在這個過程中,不斷地思考,研究和發現,內化這個過程。

你可能會發現,這個作法和「已知問題,並告訴你標準答案」的作法有矛盾的地方。

舉一個例子,我們的團隊中,有一個參與者,他的工作是寫一個表單,這個表單有三個欄位,輸入姓名,輸入電話,輸入地址,然後按下送出按鈕,就會將資料送到後端,然後後端會將資料存到資料庫中。

一開始他會這樣寫:

function submit() {
	const name = document.getElementById("name").value;
	const phone = document.getElementById("phone").value;
	const address = document.getElementById("address").value;

	const data = {
		name,
		phone,
		address,
	};

	fetch("/api/submit", {
		method: "POST",
		body: JSON.stringify(data),
	});
}

最後經過討論,我們發現,這樣的寫法,會有一個問題,就是如果使用者沒有輸入姓名,電話或是地址,就會送出空的資料,這樣的資料是不正確的,所以我們要加上一個檢查的邏輯,確保資料是正確的,並且如果 fetch 失敗,要有一個錯誤處理的邏輯。

async function submit() {
	const nameInput = document.getElementById("name");
	const phoneInput = document.getElementById("phone");
	const addressInput = document.getElementById("address");

	const name = nameInput.value;
	const phone = phoneInput.value;
	const address = addressInput.value;

	if (!name || !phone || !address) {
		alert("請輸入完整資料");
		return;
	}

	const data = {
		name,
		phone,
		address,
	};

	try {
		const response = await fetch("/api/submit", {
			method: "POST",
			body: JSON.stringify(data),
			headers: {
				"Content-Type": "application/json",
			},
		});

		if (response.ok) {
			// 请求成功的处理逻辑
		} else {
			// 处理请求失败的情况
			console.error("提交失败");
		}
	} catch (error) {
		console.error("发生错误:", error);
	}
}

經過一次前後比較,參與者會對這個問題有更深的理解,並且知道如何去解決這個問題,記憶深刻,因為那不是一個標準答案,而是他自己經過思考和研究後,得出的結論。

當然這只是一個舉例說明,在過去,也有人會對於這樣的過程有疑問,「為什麼不直接告訴他標準答案,而要讓他自己去思考和研究呢?」

而在這裡我會建議,如果你是「主導者」,可以在一開始的時候,不需要表示出「我自己知道答案了,但是你還是要自己想一下」的態度,而是可以和他一起討論,並且在討論的過程中,引導他思考,並且在他思考的過程中,給予一些提示,讓他自己去思考。

透過專案來培養人才

專案總有難易度之分,實作就是最好的練習,與其將專案當作一個負擔,何不轉換成一個機會,讓每個人在專案中實際體會到「業務」的運作和多邊,並將這些經驗累積起來。

「主導者」在這裡需要做一個支配的角色,也就是每一個專案,都不能一開始就直接分配下去,必須先由主導者來評估,這個專案是否適合這個人,如果不適合,就要找一個適合的人來做,這樣才能確保每一個人都能夠在這個專案中,有所收穫,除了這些因素因為,主導者還需要知道:

  1. 專案的組成部分:會用到團隊的什麼領域
  2. 專案的複雜度:我有一個計算方式,來計算出專案的難易度,API 數量*4*頁面數量*故事線,這個只是一個大概,只是我為了評估專案的難易度,所設計的一個方式,但是這個方式並不是完全正確的,所以還是需要主導者來評估,並且在專案進行的過程中,不斷的調整,還有那該死的 UI。

心智養成

團隊的建立,不是一個短期的計畫,而是一個長期的計畫,更不能操之過急,以免適得其反,因為這是一個需要時間的過程,所以我們必須要有耐心,並且在這個過程中,不斷的調整,讓每一個人都能夠在這個過程中,漸漸掌握節奏和方向。

隨說這個過程緩慢,但也會因為每個人的程度不同,會產生不同的心智改變,有些人會覺得沒有壓力,一切還好;有些人會感覺到壓力,但是他們會想辦法去解決;有些人會感覺到壓力,但是他們會選擇逃避。

拿捏的力度和份量,就是主導者需要考量的,如果太輕,就會讓每個人都覺得沒有壓力,一切還好;如果太重,就會讓每個人都覺得壓力太大,無法承受。

而我覺得每個人都應該有自己的強項和天賦,假設一個人在某個領域很強,但是在另一個領域很弱,我們應該要讓他在強項的領域中,發揮他的能力,並且在弱項的領域中,讓他去學習,當然首先要挖掘他到底在哪個領域很強,哪個領域很弱,這個過程,就是主導者需要做的事情。

最後我們需要讓每個參與者「有意識」到 FID 的存在,並「有意識」的去改變,這個過程,就是心智養成。

過塘訓練

最後一個就是「過塘訓練」,不用去 google 了,那也是因為我從小時候那個俚語演化而來的,在這個過程中,有些人會完成過塘,有些人會無法,但是我們不會因為這個過程而去評斷一個人的能力,而是會去評斷一個人的態度,因為這個過程,就是一個態度的養成。

我相信每個能夠成為軟體工程師的人,應該都不是笨蛋,每個人都是充滿著想法和創意的個體,但是在建構 FID 的初期,積極主動會是一個非常重要的態度,所以我們會在這個過程中,去觀察每個人的態度,而能力,就好像一個不會武功的人,但如果武器夠強,假以時日,也會變得很強。

總結

  1. 人才的培養,是一個長期的計畫,而不是一個短期的計畫,所以我們必須要有耐心。
  2. 初期需要主導者的引導,但是在過程中,需要主導者的調整,讓每個人都能夠在這個過程中,漸漸掌握節奏和方向。
  3. 建構 FID 的初期,積極主動會是一個非常重要的態度。
  4. 容錯的工作環境,不要害怕犯錯。
  5. 漸進性的成功,讓每個人都能夠在這個過程中,不斷地思考,研究和發現,內化這個過程。

上一篇
一眼看穿的程式
下一篇
階段開發
系列文
FID 打造強力前端團隊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言