2011年10月26日 星期三

[職場] 不受教的新鮮人?

我工作的公司是一間20人左右的軟體產品公司。

一多年前,我在公司的一項主要工作就是人力資源管理的計畫與執行。

目前公司採用的對新鮮人從徵才、面試、離線訓練、On Job Training整個流程的規劃設計的雛型差不多可以說是那時候我跟老闆還有其他資深工程師經過多次討論後建立起來的。

對我們這種公司來說,找人是一個非常嚴肅的問題:

1. 開發水準沒有到一定程度的開發者,在我們公司很難生存。原因很簡單,我們公司是做產品的,客戶是國外同領域的開發者,而寫出來的程式碼就是產品,所以水準不到的程式碼只是在浪費大家review debug的時間、同時製造客訴。
2. 我們公司很小、競爭對手跟客戶都散佈在世界各地,公司裡每個人都有多重任務職責在身上,也就是說我們很忙,平常很少能夠特地跑去顧新人,必須找進來的新人本身就『我們教得動』『會主動學習』才行。

在這樣的找人標準的前提下,我那一年應該要很常抱怨新人不受教才對,但事實上,在制度與流程建立後,找進來的人偶爾才有讓我們需要抱怨的時候。
所以,我認為,新人受不受教,大部份是公司自己的問題。
如何定義不受教? 這個人『不受教』是指他不聽話嗎?還是他聽不懂?還是是他聽得懂、也願意做但做不來?

不論上述原因是哪個,一個新人正式上線開始承接公司有實際產出的業務、與大多數的人合作之前,這些都是可以發現並且排除的。一個人的專業水準夠不夠,這應該是短則一個星期、長則三週就要能辨別的事情。一個人的工作態度好不好,一個月的相處,從他問的問題、給他的指示他如何應對,應該要可以知道。

如果一間公司老是在抱怨找進來的人不適用、總是覺得新鮮人都是『草莓』,那這間公司應該要先去檢討它的人力招募訓練篩選流程。

我們公司的人力招募訓練流程是這樣的:

0. 招募文宣,一份好得招募文宣要可以『清楚說明』應徵者所應具備的技能,舉例來說,『會用M$ Word』 這就不是個清楚的說明,『可以用M$ Word編輯排版功能編排一份內容如XXX ,可出版印刷的刊物』這才叫清楚的說明。

1. 筆試,我們花很多的時間建立一份適當地筆試題目,而且持續的因應需求修正它,一份好的筆試題目應該要讓應徵者可以用力思考超過一個小時。並且全面的檢測這個人『必定得有』的能力與少數『有最好』的水準。題目的數量應該要在限定時間內,預期招募的人的水準『幾乎寫不完』的量。
筆試做的好,招募時給的條件就能放寬,公司就越不需要靠不可靠的學歷與可以唬爛的履歷來判斷人。(另外,新人的筆試題目與高手一定不會相同)

2. 面試,一定要有流程,簡單的流程就是:
  公司介紹、工作與職務內容介紹、檢討筆試結果、開放性問題測試、英文口試。
以上兩關基本上要能刷掉70%『未來實際訓練時不會有機會通過的人』。
人很多很難找、公司的資源有限,一份好的筆試題目與面試流程是絕對值得投資的東西。

3. 離線訓練,所謂的離線訓練,就是給新人與實際業務無關的一系列訓練項目,測試新人的執行能力、學習能力與跟用人主管溝通的能力。在軟體開發,能玩的項目有,技術簡報、專題實做、專題發表、認證考試...等等,高時程壓力、高學習壓力是這個階段的重點,目的在於:
如果這個人未來在公司不會有機會,此刻就一定要刷掉。 不論是不是軟體公司,只要是偏知識工作,比起招錯的人進來造成的後果,一兩個月的新鮮人薪水實在太微不足道。
離線訓練時期公司薪資照給、做的項目又跟公司業務實質產出無關,就能夠確保執行上公司沒有道德風險問題,這使得新人在面對高壓與要求上沒有藉口逃避:他要不全力以赴、要不放棄出局。
很多公司不曉得離線訓練的重要性而想要跳到OJT,這是愚蠢的會計算盤。

4. On Job Training,基本上到了這個階段這個新人就幾乎可說是能用了,這個階段主要是讓新人實際的與團隊成員互動,蒐集團隊成員、老闆對這個新人各方面的軟性看法。

事實上,以上這樣的流程與制度不只為公司帶來利益,它同時也是一個應徵者適當地用來找公司的依據。

一個招募馬虎、面試隨便、不在乎訓練新人的公司,或許是個對員工工作成果有要求的公司,但它不會是一個對員工在專業能力的培養與成長真正在乎的公司。而長期而言,一間知識經濟下的公司在新鮮人注入的流程上失敗,這間公司幾乎必定會在公司的成長與文化養成上遇到瓶頸。

原因很簡單:

知識經濟下的公司,公司知識的累積與市場資訊的流入,會不斷地去刺激組織去重新定義追求的目標背後的價值範圍,這會使得公司的知識資產,在複雜度與廣度上不斷地提昇。

而公司要成長就要能有更多可以流通運作這些知識資產好發揮價值的人加入。於是,新人在公司的生存與事業發展機會的基礎,就建立在他能掌握多少公司知識資產上。

當一間公司在新人加入的流程上失敗,新人的生存率就會隨著公司知識資產的累積而降低。畢竟,沒有道理認為台灣每年畢業出來的社會新鮮人變強的速度跟公司的成長速度是一樣的。

而訓練新人、灌輸知識給新人與教育客戶、灌輸知識給客戶,本質上具有很高的相似性。

所以,如果一間公司創造出來的知識就連自己人都不能掌握,客戶就更不用說了,無法學會的知識等於沒有價值,那客戶又怎麼可能會採用、價格又要怎麼賺到手呢?


所以,你工作的公司裡常常有人抱怨新人不受教嗎?

好好想想是不是哪裡出了問題吧。

做Framework產品的二律背反

正題:
使用者有新的需求 -> 新的需求需要新的功能才能支援 -> 我們要提昇使用者滿意度 ->加入新功能。

反題:
使用者喜好易懂的文件與好上手的功能 -> 功能越多使用者就越難用也越難學 -> 我們要提昇使用者滿意度 -> 停止加入新功能。


最近開始思考,做Framework Function越做越多,Complexity 與Learning curve就會越加重,我們或許滿足了某些開發者在一些面相上的需求,但卻要增加複雜度與知識門檻而讓其他的開發者痛苦。

我知道有幾個方法可以減緩這個矛盾問題尖銳的程度:
1. 花大量的時間人力,透過review文件、寫文件,去整理產品規格。
2. 開發產品的自動化測試方法。
3. 成立專責的QA團隊,強化QA流程。

而我也很清楚這些東西長期而言是無法躲避的問題,一定要去解決。

但我常在想,有沒有可能存在其他方案能夠在不傷害成長動能的情況下,緩衝這個問題對公司的創新動能造成的衝擊?

還是說有誰應該要走過來朝我的後腦杓巴下去,然後說:『別做夢了,醒醒點,該是效法那些 Russian 起床拿Vodaka 漱口,然後去-20C的戶外工作的時候了』

2011年10月18日 星期二

如果你是一間專案開發公司的老闆

而你想要追求公司成長,記住二件事:

1. 長期而言,專案公司營收與規模成長速度,取決於開發人員總產能與默契如何提昇,不是訂單的成長速度。(台灣一堆小軟體專案公司會失敗,常常就是老闆看到訂單上的金額昏了頭。)

2. 公司成長的穩定性與對風險的承受能力,取決於你保留了多少閒置開發能量與可燒現金。(這會直接影響你覺可不可以睡好、胃會不會痛、你的員工可不可能喝西北風)


記住專案開發的風險是較高的,delay 個10%~ 50%是很常有的事,倒是提前完成的不多。為什麼?因為莫非就是在那裡,而軟體專案開發是最被宇宙定律詛咒的行業。

專案開發的生產模型,靠得就是消費一群專業人員的專注力與可工作時間,來完成且持續維運一個脆弱且動態的系統的各項功能,然後透過這個系統來供給滿足終端使用者的需求,賺取利潤。

這時宇宙讓我們碰上三個性質都非常極端的玩意:
第一是『需求』、第二是『人』、第三是『時間』

『需求』,特別是任何資訊類型的需求,是非常抽象而難以捉摸的東西。當一個需求被提出來,以這個世界的知識作為背景去延伸,無數的細節就會隱含在那裡等你來發掘。
開始規劃時你沒找到的,以後就變成地雷等你來踩。
開始客戶沒想到的,以後就變成『規格不符』等你來修。
需求與真實世界互動下無數的可能性與細節就是專案風險的第一來源。

『人』構成專案風險的第二來源。
不要講客戶,講自己人就好,人的能力提昇不是線性的、每天工作成果是不好預測的、情緒與健康狀況是不能阻止的、人與人之間的溝通與衝突是難以設計預防的。於是你看到小公司一個人離職會驅動整票人走,因為人走了工作就是留下來的接,長期的加班與不滿被新加進來的工作一次到位,公司的產能就那麼玩完了。像這樣子的非線性系統動力災難在『人的領域』裡到處都是。

再來是『時間』,時間是最沒有彈性的東西,不能儲存、不能移轉、一天就是只有那些。
而專案Critical Path上任何突發事件造成的『延遲』,都只會累加、不會減少。客戶慢了一天回你,那一天你就是沒有進展、這個專案的完成就是得多延一天!千萬不要小看一天,這一天的影響不只累加在這個專案裡,還累加到正在進行的其他專案裡、累加到下一個專案裡、一旦開始加班那就累加到員工對公司的不滿情緒裡、當然也累加到客戶的回應與滿意度裡。無數這種小小的漣漪擾動著整個團隊的情緒、也透過相依性驅動著無數的事件,帶給專案經理精彩又刺激的每一天。


『需求與人』這兩個巨大難以量化的統計波動來源,配上沒有彈性只會延長累加誤差難以提前縮短的『時間』,就是專案執行管理上的本質。

而『製造腦袋』的老闆們常常在這個行業摔跟斗也是因為他們無法理解,用不穩定的人(而不是穩定的機器)、以沒有彈性的時間(而不是有得商量的物質原料)、去滿足幾乎可以任意修改的需求(有沒有看過EIP系統從新增客製報表這樣的需求開始,變身成CRM的?)背後所代表的意義。

於是當客戶一通電話來說有個案子價格可以開到多少時....你得想想這真的是個機會還是什麼,你的公司還有『閒置產能』嗎?過去一年新人的年生存率是多少呢?你最擅長做事的人是不是最忙?你最能有新想法的人上次有空跟提idea是什麼時候?

你想『傾全公司之力』追逐『機會』?想碰運氣?

當所謂的產能提昇不是找即戰力、就是找免洗菜鳥。
當追逐訂單,把產能閒置率給用光。
當公司裡每個人都加班,老鳥最忙、新人沒人理。
當人來人去大家筋疲力竭死氣沉沉,再也沒有人在乎這一切。

當不小心錯把貪婪當成公司目標。

記住你選了這個行業,而在鬼島台灣上天的祝福早已遠去,你還是個被宇宙定律給詛咒的人!
想想公司可能會有多倒楣,那就幾乎必定會發生。

開軟體公司想追求長期持續的成長與創新嗎?
修煉一下那通電話的『逢魔時刻』來臨時,該如何應對吧。

2011年10月9日 星期日

你相信嗎?

你相信什麼,那麼在你真正相信的當下,你已經得到它了。

如果你相信人活在世上不需要這麼樣的去追逐慾望,那麼你就已經得到一個『不用追逐慾望』的生活了。如果你是基督徒,你相信神愛世人,那麼此刻當下你已活在祂的祝福下。如果你相信人存在就是為了繁榮人類生存的這個世界,那麼有一天你的人生結束時,這個世界會因你而繁榮。

你唯一需要去思考的,是你要不要捨棄這個你已得到的『絕對』,你有沒有跟外界對著幹,不論成功失敗希望絕望捍衛你的『信仰』的勇氣?

人不會因夢想而偉大。

人一天到晚被慾望擺佈撥弄,而要產生一大堆稀奇古怪的想望,這些想法都很令人興奮,但難道它們都有價值嗎?
人無時不刻被命運左右而要產生各種煩惱情緒意念,人該拿這些佛說三毒的東西來決定自己如何活著嗎?

人會因信仰而擁有力量。

能夠從慾望所生成的雜念中淘選出有價值的部份的力量。
能夠讓你面對命運不確定的本質而維持心靈恆定的力量。
能夠用來約束自己、要求自己最終超越自己的力量。

當你把你的人生奉獻給你的信仰,你就會有力量在眾人都反對你的世界理,去保護你已擁有的東西。

2011年10月6日 星期四

Firefox, what's wrong with you?

Recently the Mozilla foundation updated my beloved Firefox very often.
They moved their step to FF4 at the beginning of this Year, then 5, 6 now it's 7.

I used to use Firefox to deal with those HEAVY stuff, such as my three GMail accounts, famous Firebug for web development and some fantastic plugins to scraping web contents.

But now, my happy experience was gone.

0. Gmail Manager was malfunctioned. 
I used GMail Manager to manage my GMail accounts, but now due to Google's new gmail policy(shame on Google for this), I cannot get any benefit by using firefox to manage multiple GMails, I hate to sign-in 3 times with 3 different browsers when I start my PC, I know it's for security, but it's still annoying and I do know this is not FF's fault, but  this do reduces the score that FF get when comparing with Chrome. If there's any new plugins that can deal with this, please let me know.

1. New logic behind Firefox's Certification Key management is sucks!
It started to fuck me since FF4, have you ever encountered a "Secure Connection Failed" which Error code is: sec_error_reused_issuer_and_serial? After read the root cause from this link:
https://support.mozilla.com/en-US/kb/Certificate%20contains%20the%20same%20serial%20number%20as%20another%20certificate
and searched any possible solutions to workaround this, I must say this is a BIG WRONG DECISION that Mozilla made for Firefox after Ver 4. They intended to forbid any user to access the web in https through some old router that doesn't generate the security certificates well. I know they gave this restriction to prevent some kind of attack, but so what? does my parent who are already 60 years old working in a big company should buy in this? And compare to other browser: IE has no such problem, Chrome has no such problem, Safari has no such problem, if you are an IT guy and people put this on table then what will you do?
OF COURSE you won't do anything to that old but expansive router, because it's very possible that there's no one knows how to deal with it, the things that you will do is to write a batch file and put it into schedule which will REPLACE every Firefox to Chrome!


So now, I'll have to tell my big old company customers:
FORGET FIREFOX, because your router is too old to generate a proper certification so Mozilla foundation  think you are not deserved to use their product! Imagine what they will ask you to do next.


Backward compatibility is not just compromise, it's an important feature!


In this case, what Firefox can do is simply provide a boolean config that MIS can turn on or off before they trigger the installation to every desktop, or, they can prompt this error with a special option to let user bypass the check after reading the possible hazard  description.

But the only workaround that Firefox left you by now is to delete the cert8.db which stored every exception that you have while doing the certification,(Yeah, you can delete THAT certification if you know which one, but do you really know how many Cert was screwed up in your Firefox?) and you need to turn off Firefox before doing this.