2013/8/20

來自程式的試煉 Cracking The Coding Interview by Gayle Laakmann McDowell

作者以她自身第一手與數百位求職者的面試經驗,加上由求職者與面試人員提供的數千個問題,整理出一套 Programmer 的求職攻略本,正如作者在前言中一開始就提到的,即使擁有一份完整的履歷,完整第複習了CLRS,如果不熟悉現場面試時可能會發生的狀況,也會在面試中敗北。

這樣的狀況體現出學校教科書的教育,跟職場中實用的技能與規則,的確有不少落差,換句話說,學校的教授自己也只是一直在學術界打滾,怎麼能期待能從教授那邊學到什麼實用的技能?怎麼會知道,屏除了教科書的限制之後,在實務上,最常遇到的問題與狀況是什麼。最重要的原因就是,面試人員只會問他最常用,也認定最一定要會的東西,先反過來瞭解面試人員的生態與狀況,就能掌握一部分求職的最佳技巧。

作者明顯是把求職這件事作到某個極致,除了出一本書持續改版之外,還開立了一個專門收集與討論所有求職相關問題的網站CareerCup,包含了面試會遇到的問題、薪水、履歷表。但最受大家關注的,還是指標科技公司 Apple、Amazon、Facebook、Google、MicroSoft、Yahoo 的面試內容。

從這本書的內容可得知,在求職的過程中,最在意的是首要是履歷,再來是要準備回答行為式問題,然後是技術問題,最後則是工作條件的評估與協商。

對我們公司來說,面試的時候會分先區分為兩種求職者,第一是有經驗的轉職人員,第二種是沒有經驗的畢業生,在履歷中很快就可以得知這方面的資訊,接下來,就是行為式問題的部份,有經驗的轉職人員可快速根據他履歷中披露的專案經驗,來設定一些問題的內容,沒有經驗的畢業生就比較麻煩,因為沒有經驗,如果再加上在學校中沒有做過什麼專題研究,就很難形成一些行為式的問題。

接下來,通常我們就會詢問求職者,興趣、社團活動等等活動的內容,藉此取代專案的項目進行行為式問題的問答,在問答的過程,我們通常會觀察求職者的個性與習慣動作,藉此判斷究竟他適不適合進入這個團隊中。最重要的一點,就是要問自己,願不願意跟這位求職者一起工作,這部份在問答的過程中,就能很明顯地感受到,彼此之間的溝通與互動有沒有障礙。但或許是目前公司還不大,其實能夠容忍的成員個性與範圍就比較狹窄,如果公司大一些,相信這個部份的考量,接受度會高一些。

行為式問題的內容,通常是根據不同的專案,再搭配以下這些最常會被問到的問題項目:
  1. 最大的挑戰
  2. 獲得什麼、學習到什麼
  3. 最有趣的部份
  4. 最困難的程式錯誤
  5. 最享受的部份
  6. 與團隊成員間的衝突
  7. 你的缺點是什麼,如何克服它

書本提到了 Situation Action Result(SAR)環境、行動、結果 法則,來判斷求職者的表現,求職者必須在回答問題時,能夠很明確地,思慮與邏輯清晰的狀態下,把自己的答案與意見表達出來。

這些行為式問題,對我們來說,影響的範圍佔了一大部分,甚至比求職者的技能高低還重要。不過。

轉換角色,假設我現在是求職者的身份,當面試者要評斷我的職能等級時,當然得準備基本必備的 programmer 常識問題,關於架構、Pattern方面的問題,看了很多,但或許我應該要花些時間,重新的去review關於資料結構、概念與演算法的東西,即使是 Java 某些時候,也該盡可能地去節省資源,不過還得先判斷 OO 設計跟資源節省之間的得失,在書本裡提到四類技術方面的面試考題:
資料結構、概念與演算法、知識型、其他

資料結構方面,必備常識列表為
  1. Linked List
  2. Binary Tree
  3. Tries
  4. Stack
  5. Queue
  6. Vector/ArrayList
  7. Hash Table

演算法方面,必備常識列表為
  1. Breadth First Search
  2. Depth First Search
  3. Binary Search
  4. Merge Sort
  5. Quick Sort
  6. Tree Insert/Find/etc.

觀念方面,必備常識列表為
  1. Bit Manipulation
  2. Singleton Desgin Pattern
  3. Factory Design Pattern
  4. Memory [Stack vs. Heap]
  5. Recursion
  6. Big-O Time


對應到實際上的工作內容,我們實務上會遇到很多邏輯上的先後與條件判斷的問題,但是卻比較少遇到特別的演算法問題,資料結構的部份就常常遇到,因為總是得思考,在該功能開發的過程中,應該怎麼在記憶體中存放足以描述問題的資料,得選擇並決定要使用什麼樣的資料結構,這時候,就會需要有 Collections Framework 的知識,在 Server Side 的程式設計考量中,還得加上要判斷會不會有多個 Thread 來存取這個資料,當遇到 multi-thread 的狀況時,判斷什麼時候要同步處理就很重要了。

Design Pattern 跟 Refacting 我們視為是 Software Design 的基本常識,我不需要也沒辦法記得所有 Pattern 的名字跟 Refacting 的方法,但是必要時,我會查到應該使用什麼 Pattern,在什麼時機,應該適時地進行 Refacting。

2013/8/11

主管不說,但你一定要懂的50件事 by 濱田秀彥

這本書是作者在做教育訓練時,交叉比對收集自主管以及員工的問券,所整理出來的一份資料,讀得時候感覺文字與內容並不艱澀,也常發現心有慼慼焉的一些看法,但在搜尋網路資料時,並沒有找到部落格,談到關於這本書的讀後感。

整本書非常顧及讀者的感受,很貼心地把重點的文字都用粗體字標記出來了。作者在前言中,就根據問券結果提出了一個讓他想完成這本書的重點,有97%以上的下屬沒能正確解讀主管對自己的要求。不在其位,不謀其政,主管跟下屬之間認知的落差,員工跟老闆之間的隔閡,老師跟學生的對壘,在所有上跟下的關係之間,總是存在著矛盾、對立,總感覺會有一道難以跨越的鴻溝,橫亙在人與人的關係之間,這也是最難處理與解決的事情。

每一個人都是一個獨立個體,自然會有不同的想法,不同的意見,但是在公司、部門或是小組團體內,一定存在著領導者與跟隨者的角色,就像是蜘蛛人的叔叔所說的,能力越高責任越重,通常有著較佳工作能力的人,會逐漸晉升至中間主管的角色,權力放大了,責任加重了,腦袋也跟著不一樣了。

這本書是專門寫給下屬看的,完全由下屬的角度,去解讀在上位者的一些行為與話語,但其實中間主管也同時是更上位者的下屬,在角色變換的時候,想法跟作法是不是就跟著不一樣了呢?還是讓自己變得錯亂而覺得心有餘而力不足呢?就像前言中的一句話「主管們最希望他的下屬能夠主動察覺主管的心思、主動去達成期望。」這是多麼完美的一個狀態,但實際上卻是非常難以實現的一件事,不過作者還是鼓勵下屬們盡力去掌握主管的要求,畢竟積極地活躍在職場中,總比每天像拖死狗般,帶著沈重的腳步去上班,真的走到這步田地的話,不是主管放棄你,就是下屬準備要離職才能解決了。

回想自己在工作中的一些做事方法,總是很任性地完全依照自己的想法在做事,雖然也遇過幾次失敗跌跤的專案,所幸大致上得到的成果還不錯,雖然現實的狀況,並不盡如人意,但還能怎麼辦呢?只能一直不斷地想辦法解決遇到的問題,看看結果會不會變好。在我下面幫忙的同事們應該並不好過,因為他們得要忍受一個不常說話,一講話又常常講不清楚的人。但我也知道我唯一的優點,就是腦袋還可以清楚地掌握專案跟大家的工作狀態。

這本書是建議公司買來給每一個人看的,包含我自己,其實都需要瞭解,自己常常要求別人做到的工作態度與技術兩個方面的問題,得從主管跟從下屬兩個角度去看,究竟該怎麼做,才能化解人與人之間的矛盾,形成一個超高戰鬥力的團隊。

要一個人改變自己長久以來的個性跟做事的方法,是非常困難的事情,幾乎是不可能的,就算是要改變自己,總得是遇到了某個生命或經歷中的痛之後,才會發生。不管如何,如果這是個值得期待的職場,公司有著值得一起努力的工作目標,那就勸大家盡力去找到最合適的方法吧。遇到了問題,或是遭遇了失敗,那就是要用力去調整自己的想法與作法的最佳時機。


以下節錄一些書本的重點,有些地方會加上自己的註解。

書本的大綱是分成四大段落:掌握主管對下屬的4大期待:
(1)公事上的溝通──做好「報連相」
(2)認可你的言行舉止──養成「成熟力」
(3)期待你擁有高度自主性──養成「執行力」
(4)期待你能夠自我要求,有所成長──養成「成長力」


目的是要解除雙方溝通不良的3大危機:
(1)績效考核不理想
(2)主管與下屬雙方關係惡化
(3)雙方無信任關係,工作難以進行


第1章 讓主管放心把工作交代給你——做好「報連相」
01 希望你在被關切狀況之前便主動報告

不要覺得「報連相」是對主管應盡的義務,而是要告訴自己:「報連相」是用來影響主管的方法。
在主管會報會議的三天前,向主管報告業績可能有影響的工作進度。

02 希望你交代現況

報告時要分清楚「現況」與「個人建議」
要先讓主管瞭解「現況」,然後再提出「個人建議」
報告時把形容詞跟副詞都換成數字

03 希望你發言時以「我」開頭

用「我」開頭,說話時會讓人覺得發言更明確且有力量

comment: 這個有另一層意義,就是你對你自己的發言負責任,不是隨便亂講的。

04 希望你講實話

拉起防線,只是會妨礙主管掌握狀況
道歉 -> 報告目前的狀況 -> 解釋發生經過

05 希望你壞消息要早點講

經營高層講求的是 bad news first
壞消息會越拖越糟

comment: 這個問題牽涉到識別專案風險的技巧,有時候在接觸到的合作夥伴、客戶等人的反應,要識別到一些可能會發生問題的危險信號,雖然不要小題大作,即使是誤判,發現危險的信號是每一個專案成員都必須具備的技能

06 希望你做到「中途回報」

對主管而言,比起趕不上進度,無法掌握下屬目前的工作進度更令人憂心
回報不需長篇大論,不用花太多時間

07 希望你講重點

跨越「對重點的認知」與「統整能力」的難關
講重點
透過習慣性「統整文書內容」與常說「簡單講就是...」

comment: 寫程式的人大都是惜字如金的,要一個人會「講重點」同時兼具「喇低賽」的能力,應該只有雙面人才做得到。

08 希望你先講結論

口頭報告時,以一句「我先講結論」開頭

comment: 冗長的簡報與說明會讓人失去耐心與注意力,簡報的重點要放最前面,要儘快破題,引起聽者的興趣。

09 希望你不要擅自下決策

劃清「可自行判斷」與「必須問過主管」的界線
站在風險管理的立場,遇到緊急狀況時,一定要找主管商量對策
依照重要程度(影響利潤與利害關係),把狀況分為三種(1)一定要問過主管(2)姑且通知主管一聲即可(3)可自行下決策

10 希望你和我商量過的事,能讓我知道後續

給過你建議的人,會一直掛心後續
如果事情尚未得到結果,記得要給對方中途回報
如果結果不如預期,應該委婉告知對方,讓對方願意日後繼續給你建議

11 希望你的電子郵件主旨明確,重要的事寫在最前面

讓日收萬信的主管留意到你的電子郵件
把處理期限等重要訊息,在內文開頭的前五行內交代完
信件主旨盡量使用專有名詞,並加上特殊符號

comment: 這跟講重點很像,我也用過這個方法,在信件的主旨把[專案]括號起來,且在主旨就寫出信件內容的重點摘要,我應該再把這個方法拿出來用

12 希望你CC過來的電子郵件副本,偶爾能夠加上一、兩句自己的意見

全郵件CC機制的陷阱
主管期待得到的訊息不是來自郵件,而是想知道你對於負責的案子有什麼建設性的構想
偶爾向主管口頭報告CC郵件沒提到的構想或期望,讓雙方隨時擁有共識,降低風險

comment: 這應該該資訊分享類似,現在在FB大多看到分享的連結,都只是連結,適當地加上個人的註解,會讓收到資訊的人,比較快能夠判斷,該連結的資料內容,而可以很快地決定要不要點進去看,這一點也跟email主旨的功能很像。

13 希望你同在辦公室裡就多用口頭溝通,不要都透過電子郵件

商量或討論公事,第一選擇是口頭溝通

comment: 這跟遠端辦公室的理想似乎有差距,但也沒錯,如果大家都可以透過網路線上溝通,不用見面,那就不需要辦公室這個空間了。面對面地談,總是會讓人有不一樣的感受。但相同的是,面對面地談,所得到的衝擊也比較直接且嚴重。

第2章 讓主管認可你是成熟的工作者——養成「成熟力」

14 希望你講話時看著我的眼睛,把每句話都講得清楚且完整

「看著眼睛說話」和「把話講完整」,主管就是根據這兩點,來判斷下屬對自己說話的內容是否有自信
講到最後的時候,務必看著對方的眼睛

15 希望你把我的話聽到最後

要以退為進
欲加快談話進度,應該採取總結對方的話語之後,向對方確認的方式

comment: 講話沒耐心的我,常常會打斷別人講話 #@%^#@ ...

16 希望你直率地聽命行事

能夠照做的事情,就直接回答「好的,我馬上處理。」
如果當下礙難從命,就先以一句「好的」答應下來,再提出轉圜方法

17 希望你多用點腦子

把「拜託你多用點腦子」封印起來
不做空洞的回答
如果無法回應主管的期待,請直接提出積極的替代方案,讓主管說不出那句話

18 希望你上班時總是精神飽滿

大多數常在嘆氣或嘀咕自己很累的人,都是在不自覺的狀況下做出這些舉動

19 希望你的穿著打扮能夠合乎職場禮儀

comment: 這一點我不及格,但也沒想過要改善,真糟糕 ...

20 希望你的辦公桌桌面能夠整齊乾淨

紊亂的辦公桌會使你的工作能力遭到主管質疑
下班時,把桌面上的東西豎起來,收在一定的位置

comment: 我的桌子超亂的,書都一直往上堆 ...

21 希望你幫忙帶新人

帶新人會讓你自己有所提升
不要拿後輩和自己比較

22 希望你被罵的時候要有被罵的樣子

被主管罵時,用心聆聽指教,勇敢地反省,最後向主管道謝

comment: 這一點好像是日本人才應該有的要求,我不大同意,我覺得重點是,要得到教訓,不要再犯(就是下一點)

23 希望你同樣的事不要讓我講兩次

重點在於遠見,認知有落差時,務必討論得到共識
精進技術,避免犯同樣的錯誤,不要讓主管一再交代同樣的事情

24 希望你偶爾和我聊聊公事以外的事

午休時間就是磨練社交手腕的最佳場合
在職能技巧中,透過閒聊與他人建立人際關係,是相當高段的社交技巧

comment: [何飛鵬專欄]一對一午餐何飛鵬社長也說過一樣的事,這個方法我用過一次,但沒有持續執行,應該要這樣持續做嗎?

25 希望你能機伶地察覺我的心思

多一些服務精神,主動察覺主管的需求而後動
即使只是一點點微不足道的支援,主管都會非常感謝你

第3章 讓你成為主管眼中積極自主的中堅員工——養成「執行力」

26 希望你主動攬工作、主動舉手發言

這是個沒有人主動舉手的時代
主動舉手,攬下不會增加自己太大負擔的案子

27 希望你視自己為要角,身先士卒帶領其他同事

真正的「領導能力」,指的是為達成目標,所能夠發揮的影響力
找出得以發揮自己影響力的最佳方式

28 希望你交出亮眼成績

如果你現在的工作內容,只能讓主管看到你有多賣命,請留意,你在這場生存遊戲中,正處於非常危險的狀況

29 希望你不要跟我解釋為什麼辦不到,而是趕快思考怎樣才辦得到

當你面對棘手的案子或工作上出現狀況,要是每一次都立刻把心態切換到否定模式,久而久之思考對策的腦力會衰退
當主管丟給你棘手的案子,試著壓下第一時間湧上腦子的所有辦不到的理由,為了迴避風險,記得同時向主管提出附帶條件

comment: 總是要試試看才知道做不做得到,這是個好習慣

30 希望你馬上辦

對主管而言,交待下屬的那件事,不知道處理得如何了?自己掛心在這一點的時間越短越好

31 希望你做事有計畫性,按部就班來

短期的案子就馬上辦,長期的案子就做預想練習
做事沒計畫的人共通的問題點是:對時間的估計過度樂觀,導致事前準備不足
盡早著手,就能盡早發現那個部份有狀況

32 希望你能和其他部門合作,一同創造業績

主管期待看到的是,願意挑戰超越自己能力範圍的案子,主動跨部門把其他同事也拉進來一起打拼的積極下屬
至少半年一次,試著挑戰跨部門合作,邀約時以這句話開頭:不好意思,關於某某案子,有些事想請教您

33 希望你減少加班

工作上有三種時間小偷:重做、電子郵件、會議,只要改善這三點,就能夠有效利用時間
一接下工作,便在十五分鐘內做好「整體架構圖」
在工作效率最高的時間帶,不要處理電子郵件

34 希望你不只是報告現況,也加上自己的意見

報告時務必加上自己對於接下來的計畫或想法
找主管商量時,先準備好腹案再開口

35 希望你的提案至少有三款

以經營者的觀點出發,衡量風險與收益,交出三款提案
(1) 高風險、高收益
(2) 中風險、中收益
(3) 低風險、低收益

36 希望你回話要有回話的樣子

工作者類型分佈:擅長下指令的駕馭型、兼具直覺與行動力的表現型、喜好協商的平易型、慣於思考的分析型
分析型的人,很不擅長立刻回話
透過重複對方的問話,爭取思考時間,以一句話簡短回答

37 希望你的書面報告能夠好好寫

書面報告的「內容」、「架構」、「表現能力」都很重要
主要可能發生的問題:塞了過多的內容、不讀到最後不曉得結論為何、許多錯漏字、文體不統一
透過問與答的整理,快速寫出井井有條的優秀報告
把自己切換到校對者模式,先自行校對一次

38 希望你多勤第一線,多與工作關係者連絡

工作上的業務,不要只透過電子郵件或電話解決

comment: 資訊系統問題方面,應該不是這樣處理,盡可能地遠端處理,以免耗費交通與時間的成本


第4章 讓主管認為你是具有發展潛力的重要員工——養成「成長力」


39 希望你站在高一層職位的立場思考公事

搶主管的工作來做,訓練自己擁有主管階級的遠見

40 希望你總觀職場整體

透過協助他人的業務,培養總觀整體的宏觀眼光

comment: 記憶力也很重要,做的事情很多,但每一個細節都能記得,能做到這樣才可以得到成效

41 希望你拓展自己的業務範圍

接下身邊那些三不管地帶的業務,有助於提高你的市場價值

42 希望你擁有高遠的目標

設定成功與失敗機率各半的目標,最能夠激發個人力量

43 希望你從不滿足於現狀,擁有更大的野心


沒有必要迎合主管,把金錢、物慾當作工作的動力
沒有上進心的人,讓主管得知自己對升官沒有興趣,會被認為是窩在公司混吃等死的米蟲

44 希望你朝專業領域邁進

不想當主管的人,就必須朝專業領域邁進
所有公司需要的人才,只有主管或是專業人員
專業人員的定義:
(1) 能獨立思考與行動,並交出成績,對結果能擔起責任的人
(2) 在專業領域有壓倒性實力之人
(3) 擁有優秀解決問題能力之人
(4) 除了專業技能,人際技能也相當優秀之人
(5) 周圍的人一致認可是專家之人

comment: 夠專業,就是在公司內擁有不可取代的能力的人


45 希望你讓我看到絕不輕言放棄的毅力

讓你深受挫折到想放棄的工作,正是能夠讓你有所成長的機會,不要在意結果如何,展現你的毅力,堅持到最後

46 希望你自動自發精進知識與能力


工作技能不是學來的,是偷來的
積極地吸收在身邊的知識與know-how
擁有寶貴know-how的人,通常有著職人脾氣,給人感覺不易親近

47 希望你不要攬下工作獨自苦幹,要多多善用後輩

善用後輩的方法,分為三個漸進階段:挑選 -> 指導 -> 監督到最後
指導的重點是,你說明時,必須使用對方腦中字典所存在的字彙

48 希望你虛心接納他人的意見,讓我見識你的度量

以嚴厲眼光觀察著你的,正是你的後輩們
認定你是不是各有度量的人,比起主管,後輩的視線要更為嚴格
聽到刺耳意見時,不要找藉口正當化,坦率地接納,成為主管與後輩都認可的成熟工作者

49 希望你主動挑戰風險,全力一決勝負

聰明地管理風險,自己打造能夠冒險的工作環境
擺脫「公司規範過敏症」

50 希望你拿出幹勁來

找到不受外在因素左右的幹勁
找出自己的火柴,自行劃亮火柴,點燃工作的熱情


博客來 主管不說,但你一定要懂的50件事
掌握溝通3技巧, 了解主管期望、提升工作效能