前言
我是個碼農,在職場幹了多年,在超過10個公司服務過,遇到過各類怪現狀,拍案驚奇葩,不吐不快,太想寫篇文章吐槽一下。
這篇文章聚集了我10多年來的工做中遇到的各類經歷,總結的心得,分別討論了團隊與協做(同事/領導/客戶的交流)、技術與質量(學習、技術選擇、質量)、職業與事業(現實、追求、老油條、職業道德、典故、事業/經驗)、找工做(獵頭/中介、應聘、簡歷、面試別人)、辭職(緣由/理由、信任)等,乾貨滿滿的,裏面還夾帶了個人不少祕密和典故,若是你認真看,會回來找我讚的!!!
若是你非要叫我跑龍套碼農,請不要在前面加個死字,謝謝。
本文是個人我的經歷和意見,請取濾網三錢,溫水煎,和着服用,謝謝。

協做與交流
入職
無論你在之前多厲害,有多豐富的經驗,去到新公司,都要從新學習,撇開業務邏輯,咱們還須要學新的編碼規範(無論你是否定同)、開發流程與守則、工具等等,更耗時的,是理解他們的開發框架,每一個公司都有本身的一套(不少可能重複發明了了輪子)。
心態很重要,沒有端正心態,很容易形成失衡。一些人一晚上暴富(如中獎),而後大肆揮霍,最後比暴富前更窮困潦倒。入職新公司,能夠放低身段,畢竟你掌握的技術是一回事,學習公司各類文化、流程、規範、業務邏輯等等都要花一段時間,不能一蹴而就,不然落差太大,事與願違,如牛入泥潭,強烈的無力感。
一張廁紙,都有它的做用。每一個技術公司都有過人之處,咱們要關注的,不是那些不行的地方(有待後續解決),而是尋找那些有養分的乾貨,學習之,提升本身。20/80法則,20%的公司牛,那就算差的公司裏,也有20%的人尤其突出的,要向他們學習,看他們寫的高質量代碼。
從一個公司角度來看,評估員工的表現,不是看他之前多厲害,經驗多豐富,而是看如今爲公司的貢獻。因此,一些時候出現的狀況是:「我自認水平很好,爲何公司給個人回報沒有我想象中那麼多?」
去到一個新公司,心態要擺好,低頭作人,努力學習。或許,有一些同事,以爲你空降過來,不會持有熱烈歡迎的態度,因此,作好本分的事情,不須要奉承別人,也更加不要得罪別人,日常心看待。
每去到一家公司,我會嘗試笑着面對每一個遇到的人,甚至說一聲Hi,若是對方沒興趣,那不要緊,我不會所以臉黑或者不爽。笑着面對各類問題,本身寫的爛代碼,含着淚也得把它重構好。
同事/領導/職場
林子大了,什麼鳥都有,公司大了,什麼人都有。有人的地方就有江湖,有利益的地方,就有衝突。
澳洲,跟美國同樣,是移民國家,通常每家公司都有各色人種。文化的差別,語言的溝通,總會形成各類矛盾。
根據這些年來的觀察,衝突通常有:一、邀功,當你辛苦幹完活,別人把功勞拿走了;二、推卸責任,不是你形成的問題,別人強加於你身上;三、小圈子排擠外人。
說到底,工做就只是一份養家餬口的事情,其它都是不重要的,把這個想通了,一切都好辦了。把心態擺正,把事情作好了,就好了,不少事情沒法控制,固然,咱們要懂得不要給別人留有藉口揪你小辮子。
每一個公司都有各類問題,進新公司以前,你們習慣設想新公司怎麼怎麼好,本身的計劃如何順利開展,現實,每每不是如你所願。因此,要作好最好的準備,最壞的打算。
辦公室不是找朋友的地方,必須時刻提防各類辦公室政治,披着羊皮的狼,是最危險的,越天真越容易中招,不大有人會踢一隻死狗,槍打出頭鳥,你越出色,越容易招惹是非,要混得開,低頭作人很重要。
對美女來講,「天生麗質難自棄」,想突出本身把本身的優點最大化。職場,大部分人都想出人頭地,努力往上爬,加薪升職。然而,事與願違,總有「老子乾得很不爽,去你大爺的!」的時候,若是你真有心有力,確實是能夠去創業,不須要受各類非人的委屈。
一言蔽之,要幹得爽,仍是須要本身創業。
公司S,心累,如今公司部門和部門之間有嚴重的鬥爭,各自爲政,根本就不是想幹活的,噁心的事情不少,譬如部門老大不幹活,讓小弟幹,小弟工做繁忙壓力大就爆脾氣,說話不像人樣,而後部門老大就各類推卸責任,還美化之,去它大爺的 。
公司B,三個印度碼農在印度,一個大鬍子孟加拉國的,一個剛來澳洲兩天的伊朗人,一個來了澳洲不少年但口音極重的越南人,一個還在馬來西亞下個月纔來報道的碼農,加上來自黎巴嫩的上司,還有我,真的是聯合國。
公司K,精神分裂的部門女同事,菲律賓大媽,在公司呆了18年,在CTO背後聯合她的兩個馬來西亞小弟直接跟CTO的上司說CTO各類壞話,在CTO面前老裝很友好地狂笑,對待客戶是同樣的作法。
公司T,當年很純真,但已經目擊了各類利益糾紛。公司和別的公司協做作的GSP系統,一個醫藥銷售系統,產品作得差很少了,各類糾紛,後來產品就爛尾了。
公司T,我離職,老闆請你們吃醬板鴨,味道特別棒,至今難忘,離職後還和老闆保持了多年的聯繫,每一年春節還發祝賀短信,很精短,都是手寫的。
工欲善其事,必先利其器。開發工具,是開發中重要的資源,公司不該該在這塊上有任何吝嗇。
公司S,我入職後發現開發部的機器,最老的7年了,新的也有3年老了,沒改一行代碼,從新編譯,須要5分鐘以上。跟我一塊兒入職的有4個新同事,公司給我買的電腦是給其它同事買的3倍價錢,IT部經理一臉正經地跟我說:你丫的應該以爲慶幸拿到這麼貴的電腦。但我一臉無奈地跟他說:「雖然你買的是我要求的ThinkPad,我我但願是t4xx,你卻買了exxx,我纔不想要呢!」。新來的項目經理對公司安排給他的新手提電腦很不滿意,一大早打開的時候就已經用力噼噼啪啪了,還吐槽連HDMI接口都沒有什麼的,下班快走的時候還吐槽這i3 CPU配置都8年老的了。首先,講道理,每次i3換代都有新版本,不能刻舟求劍,可是,省這幾百塊不值得。
客戶
客戶是不講理的上帝。
你的代碼寫得那麼爛,你的客戶知道麼?
公司S,作IT的同事告訴我幾個真實的故事,忒搞笑了,其中一個是:客戶說電腦不正常,同事遠程協助,很客戶說:「close all the windows",而後客戶說「done",同事說我這裏看見尚未關閉啊,客戶堅持已經關閉。爭論半天,最後發現客戶關閉了的不是「窗口」,是「窗戶」。
公司S,有一個潛在客戶發來合同,要求咱們的系統一年365日,100%在線,若是服務down了,按分鐘賠錢[允悲]。
客戶的需求,沒有明確目標的居多,須要逐步引導,按優先度和難度分期實現,不然很容易爛尾。
技術與質量
學習
只爲一家公司賣命一生的,少數。即使只爲一家公司幹活,始終會有產品改進甚至更新換代的一刻,無論是用戶量上去了,仍是用戶需求變動了,那總要學習新技術。一些公司,系統多年不改進,員工就無慾無求了。等離開公司的一刻,才發現本身與社會脫節了,這種如溫水煮蛙,因此早就了不少養老心態的老油條 。
公司C,一個資深碼農,離職以前,考高級程序員證,惡補,拿到證以後,離職了。
我不是喜鵲碼農(The Magpie Developer),不貪新厭舊,確實太多東西須要學,數據量太大了,天天太多東西能夠學,時間不夠。舉個例子,基本的平常使用的工具,如開發工具,譬如Visual Studio,即使你天天用,不少有用的東西我就是沒留意,舉個栗子:你知道怎麼快速複製、剪切、刪除整行代碼嗎?刪除一個詞呢?再舉個粒子,SSMS(SQL Server Management Studio)裏面,怎麼快速查看一個對象的相關信息,如一個表,顯示全部字段、主鍵、索引、約束等等?
最近看愈來愈多的網絡資源,一些要收費,如一個網站提供了專業面試國際大公司的一對一指導服務,全程真題,還有全球20多個著名Web2.0公司的系統設計詳解,也就幾十刀,值得買。
說到這裏也給你們推薦一個架構方面的交流學習羣:650385180,也是聽以前的同事提起過的,看了一下,內容技術點講解還不錯,裏面也會分享一些資深架構師錄製的視頻錄像:有Spring,MyBatis,Netty源碼分析,高併發、高性能、分佈式、微服務架構的原理,JVM性能優化這些成爲架構師必備的知識體系。還能領取免費的學習資源,相信對於已經工做和遇到技術瓶頸的碼友,在這個羣裏會有你須要的內容。
看過不少技術文章,一些網站追求一些很是入門的內容,譬如怎麼作個多級菜單,動畫效果,等等,放在首頁,而一些乾貨文章卻被忽視了,悲哀。
大部分碼農都只擅長一種技術,因此選擇的時候應該選擇一種不容易被淘汰的技術(中期仍是主流的),譬如.net,如今各大平臺都能用並且生命力很強,在上升階段。前端,髒亂差,但學好JavaScript不愁吃穿,圍繞js的各類框架能夠學一下主流的。
技術是相通的,不一樣的技術棧,技術思想是相仿甚至同樣的,所謂一理通百理明,因此,有全棧的開發人員,從Web前端一直到後臺、數據存儲,還有全部之間的技術如安全、日誌、隊列等等。
即使不睡覺,也不夠時間學習能夠學的東西。因此,只能挑食,籠統地學一下大部分新技術,最關鍵核心的,能夠深刻學一下。
技術選擇
前端、後臺、數據存儲,都有亂象。
前端尤爲亂,對突飛猛進的那些前端技術無力吐槽,簡單來講,就是髒亂差,惋惜,技術負責人,沒有把好關,選擇了錯誤的技術。
技術選型,決定因素不少,譬如技術帶頭人,譬如技術儲備,公司現有狀況,等等。著名雲程序日誌記錄提供商raygun,幾個月以前扔掉node.js改用.net core,性能提高20倍。但就是有些公司的技術人爲了反對而反對,選擇一些不切實際的解決方案[攤手] 。
舉個栗子,譬如SOA家的微服務的設計與使用。網上諸多最佳實踐,在多數公司裏面都沒有、也不會實現 ,無論是決策者、財力資源、仍是人力資源等限制 。你們審視一下如今公司的系統, 你連現有系統的的基本的模塊化作到了嗎?若是沒有,憑啥你就覺連模塊化就作不到就能把微服務作好? 甭想微服務了。微服務不大適合初創或小公司,Martin Fowler說過,上微服務須要現有的流程、監控、快速發佈基礎, 並且發佈的成本和複雜度比單系統服務高,服務間的網絡數據交換成本額外高,本地開發測試複雜度和成本也高。 遇到異常,仍是看業務,一些transactional的該怎麼樣就怎麼樣,通常流程化操做,如用sagas,容易致使死流程,這種怎麼監控和解決具體問題具體分析。通常作法是有機制重試n次後還不行就escalate到IT,還有日誌這塊也是不少坑的。
繼續這個栗子,微服務的基礎,用公有云的話,論靈活性,那就azure function;論scalability,仍是azure batch吊;論可控性,仍是service fabric強;論簡單易用陪流程,仍是azure logicapps好;論業界認受度,仍是Amazon家的AWS λ 吊。
MYOB是澳洲著名的老牌會計系統,直到幾年前他們的解決方案仍是Windows桌面程序,客戶須要用citrix遠程進去跑的。。。anyway,原來這公司的名字是Mind Your Own Business的縮寫。
公司C,當年O/RM流行沒多久,entity framework尚未出現,咱們用的一個商業的,性能很爛,批量生成數據的時候整個界面沒法響應(當年咱們都不懂異步處理)。
公司C,微軟推出了和macromedia(尚未被Adobe收購)的flash對抗的Silverlight,設計思路是好的,性能都比flash好,漏洞遠沒flash多,技術負責人說,咱們下一版本要用Silverlight實現,當時他說:「咱們要作銀光版!」
爆棧
最近的爭論,懂一個Web前端框架,而後試圖搞定後臺和數據存儲,還有之間存在的各類數據交換、流程處理、安全、擴展性、潛在性能問題(各級cache、sharding)等等,很難。由於每一個都有太多太多的坑,不把這些坑踩過就說能夠搞定全端,有點難度啊。
我以前反覆強調我不只僅是全棧,我仍是#爆棧#。技術體系,須要時間去構建,融會貫通。聽過、會寫Hello Kitty、懂用、掌握和精通是不一樣的,須要多讀多動手,把坑踩了,跌得越痛,認識越深刻。
上大學的時候,導師用跟咱們說過赫胥黎的名言:「learn something of everything, learn everything of something" (儘量普遍地涉獵各門學問,而且儘量深刻地擇一鑽研)。咱們能夠全棧,但起碼有同樣是研究的特別通透的。
質量
在編程的時候,咱們必定要想象一下,之後維護咱們本身的代碼的那我的會成爲一個暴力的精神病人,而且,他還知道咱們住在哪裏。
MVP,對體育運動來講,是most valuable player(最有價值運動員/球員);對開發人員來講,是most valuable professional (最有價值專家);對產品開發來講,是minimum viable product (最簡可行產品)。一些公司開發系統,一開始就勾畫宏大的願景,幾個月甚至幾年以後,產品仍是沒有見蹤跡。相反,一些公司追求最小化的可行產品,每一個版本只發佈一個新功能。
產品質量、功能和時間這三者裏是互斥的。要質量和功能,那麼時間就得延長;追求質量和時間,那麼功能就要砍;趕時間和功能,那麼質量必然降低。
看了不少公司的系統,就像在吃蒼蠅。
你們看過少林足球,吳孟達樣子和口吻:「代碼,不是這樣寫的!」
怎麼給垃圾系統擦屁股:你被扔了一坨熱氣騰騰的爛代碼,幸運的話只有幾百萬行,沒有註釋,僅可能有的就是早已過期的文檔,寫這些代碼的爛碼農早已去逍遙快活。
公司X,第一天,下班了,累癱,腰痠背痛。首兩週都是各個部門的不一樣人來介紹公司、各類業務、各個系統,找了幾個機會跟開發團隊聊了一下,順手看了一下他們的開發,具體就不談了。
公司業務成功,和開發不是正相關 。很特別是那些行業系統,只要銷售人員足夠強,無論多爛的系統均可以大賣,因此,不少公司的銷售人員收入很高。
公司E,硬度公司,公司絕大部分是硬度菊苣,部門都是硬度碼農,除了我。主系統登陸頁,老闆要放一個配合公司LOGO的動畫,硬度菊苣就設計了個gif動畫,彩虹波浪線不斷翻滾,但頁面加載很慢,整個窗口響應也不好,鼠標挪動都有問題,我一查,原來那個gif大小是全屏幕的,超過5兆。。。
公司B,客戶端用OLEDB從Visual FoxPro讀到DataTable,序列化到JSON,壓縮,存到Azure BLOB,而後寫相關記錄到Azure Service Bus Queue,服務器端Service Bus接收到信息,取相關BLOB,解壓,反序列化,再Bulk Copy到Azure SQL Server的臨時表,再轉換格式化各字段讀關聯表,最終到達目標表。。。蛋疼的感受?
公司B,巴西碼農,爲了格式化法國人名常見的組合名(就是名字中間有-、·、空格等符號後面第一個字母要大寫),他洋洋灑灑寫了80多行代碼,逐個字母替換,並且爲了應付空格,又重複了一遍。。。。
公司B, 又優化另外一報表,初步加了索引重構邏輯後,從原來超時到如今1分26秒,再分析,發現另一個瓶頸是引用了這函數,報表先調用一個主的人名格式化函數,這函數再屢次調用上述那函數,重構後,只須要6秒。
公司B,挺無語的,部門一碼農,一個流量值(字節)要格式化顯示成兆,他直接/(1024*1024),根本不明白那些小數就不能顯示了,而後呢,還Round兩位小數,問和尚借梳子啊。
公司B,數據庫那塊,簡單地說,就是數據庫規範裏面的第1/2/3範式都完美地忽略了 。。。前端界面對一些字段沒有作校驗,因此係統跑的時候各類爆,譬如指望是數值但裏面有各類詭異字符,指望是郵箱地址可是文字。。。日誌那塊,每一個方法執行都作一下開始/結束日誌,隨便點幾下界面,幾百K的日誌內容[攤手]
我發現,懶/爛碼農,很喜歡複製粘貼。
公司S,部門一開發人員,擅長複製粘貼代碼,本來幾百行的代碼,硬生生搞成1萬多行。他說:「我寫代碼,瘋起來,我本身都懼怕!」某天,這個碼農在看本身的代碼的時候,迷茫了,看不懂了,代碼邏輯流程太亂。因此,他只能打開Visio,逐步把邏輯畫出來了。。。[攤手]
公司S,系統是asp.net webform + vb.net + 大量第三方重量級UI控件,前端、後臺和數據庫性能都很爛,根本不是SaaS,也不支持多服務器,各類各樣的錯誤。我躊躇滿志地來到公司,第一天就跟你們說:「作開發這麼多年,爛代碼我看慣了,因此你們放心,無論多爛的代碼我均可以重構改造的」,3個月後,我歇斯底里地指着屏幕上的爛代碼,狂叫道:「大家這樣寫代碼是不人道的!!!」
公司S,系統各類問題,性能表現差強人意。其中一個表現是,越愈來愈慢,譬如同一個功能,因此參數同樣,今天跑5秒,後天6秒,大後天7秒這樣。。。最後發現仍是跟我以前優化的日誌有關,雖然改爲異步批處理,可是日誌基於文件,每一個最大2M,不斷翻滾,日誌文件名邏輯是掃描全部文件來取下一個文件名。
公司S,一天,分析了一下數據庫,一個客戶7天作了150萬次數據庫讀操做,約讀取了200G數據,加上前端那些Web Form冗餘HTML,實際從服務器上走出的數據是很誇張的(按我司的規模),數據庫請求延遲更厲害,一個客戶每次請求都要等0.2秒。
公司S,存在多個業務邏輯錯誤問題。客戶反映數據有問題,部門的同事分析數據和代碼,最後發現關鍵邏輯是讀的配置文件,而這個配置是應該按具體客戶的設置來的,但變量寫成了static。
公司S,系統運行時大量日誌生成,同步寫入日誌文件,我改爲了異步。還有,每一個頁面加載完成,都記錄一下用戶的IP、加載開始時間、加載結束時間等信息,也是同步的,加上其它業務邏輯寫得不行,因此很忙,我也改爲了異步,定時批量寫入日誌。
一些公司的碼農,不把警告當警告,徹底無視之。
公司S,主系統,編譯的時候,顯示254個警告,不能再顯示更多了。
公司S,下班前,每週五全員工公司例會中,一個IT部的同事問我:「Wilson,大家部門是否會把機器學習應用起來」,我心想:「大家連數據倉庫都沒作,所謂商業智能這只是作了些基本報表,數據量也不是很大,我之前隨便處理都是幾十億起跳的,還想機器學習???」 然而,我仍是老實說:「你們知道Google alphago嗎?就是最近戰勝了最牛的圍棋手的人工智能系統?」。沒人回答。我繼續「咱們寫程序,是直接解決問題。機器學習,是咱們寫一個邏輯,讓機器其去利用現有的數據進行分析找出最優方案,這是非直接解決問題,」
數據從用戶在界面輸入開始生命週期,通過傳輸到達網站,通過處理(譬如ETL),再存到數據庫,後續還可能有數據倉庫二次處理等,最後數據失效被刪除。這中間不少事情須要作,但,最重要的第一步,是確保用戶輸入是校驗過的合法數據,不然進入系統後形成連鎖反應,修復成本過高。
我服務過的不少公司,界面輸入缺少基本的校驗,譬如長度,用戶輸入長一點就爆了。郵件格式也不判斷,系統發送郵件的時候各類爆。
公司S,系統設計有問題,實現有問題,運做有問題。拿各類通知客戶的按期報表郵件,地址徹底不校驗,同一個客戶出現幾十種的郵箱域名,譬如正確的是foo.com.au,實際出現:foo
coma.u, foo.com,foa.com.au, foo.com.....,一些明顯是不合法的格式,一些是不存在的域名,等等,發送的時候也不校驗[攤手]
公司X,系統各類安全漏洞,SQL注入垂手可得。
遇到過各類奇葩軟件/系統設計,譬如LinkedIn Android版,常常告訴你沒法發送內容,不告訴你爲何,以前打的長長內容都丟了,根本草稿等臨存功能。一些銀行的app,容許你增長、減小每日轉帳額度,但根本不告訴你要增長到多少或者減小到多少[攤手]。
公司S,現有的系統10多年前開始寫的,技術陳腐,其中一個功能是根據不一樣客戶不一樣產品從可自定義模板那裏動態生成表單,這個功能是用的第三方的,原本不復雜,但隨着業務發展,如今單純渲染界面的代碼行超過10,000。我在用angular改造,目前代碼行200,能夠顯示了,接下來就是作一些交互[攤手] 。
公司S,Web系統性能差,有幾個緣由,其中一個,是HTTP壓縮都沒有啓用,頁面/資源加載都要用較長時間,我發現以後,順手啓用了[攤手]
公司K,系統的數據庫設計不少奇葩的事情,就命名這塊就看不下,用戶標識(UserId)這個,同一個數據庫裏有如下各類形式:UserId、UserID、user_id、userid、iduser、USERID、id_user等,並且大部分是同一我的搞的 。
公司E,隔三差五發現公司印度菊苣們寫的代碼好多坑,譬如前端js確定就不判斷對象是否null,直接取屬性,而後後續的代碼都沒法跑了。後端的代碼更奇葩,直接try/catch抑制錯誤(catch無任何邏輯),今天發現一功能沒法跑,分析後發現,數據庫表字段類型是nvarchar,代碼裏定義是int,菊苣不解決抑制錯誤就完了
這麼多年來,各類平臺,看見過各類軟件的奇葩實現。
公司Z,如今的業務系統,一個複雜的申請流程,全部數據都暫時保存到cookies,今天終於爆了,客戶的一個下單JSON後超過4k,boooom!
寫爛代碼的人多用舊版本的語言,這樣他們就能名正言順地不用新版本的語法糖來精簡代碼。譬如c♯的自動屬性,expression body、LINQ等,他們都不會用。更噁心的是從新發明更爛的輪子,數值TryParse、DayOfWeek等重搞,最噁心的是壓制錯誤:一個對象幾十個屬性,不判斷null,幾十個try/catch逐個屬性輪 。
公司A,數據庫這塊,由於某GIS產品Web服務的特色,把數據庫分割爲:每一個客戶3個數據庫,而後呢。。。而後服務器就幾十個數據庫。。。。其實作到一個數據庫是沒有什麼難度的。。。。能夠預見之後各類血淚 。
公司A, 開發這塊。。。以前弄過Windows Mobile,後來用Sharepoint(怨念!) + Silverlight(怨念!!)。。。。。加上某GIS產品+.NET插件(啊啊啊),如今在上馬#WPF#(怨念!!!),而後準備招聘iOS開發人員和Android開發人員(啊啊啊啊。。。
公司A, 作的產品主要是基於GIS的產品,給服務人員提供地理任務標註/指示,而後開展工做。而後呢。。。。#沒有本身寫的服務器端#,#不直接存取數據庫#,徹底用某GIS產品提供的Web服務。。。。而後性能各類爆。。。。。。。
公司A,是典型的傳統使用微軟產品的企業,IT/基礎設施這塊都是AD/exchange server/SCCM等,最近弄了個JSP寫的helpdesk系統,全部東西都往那裏扔,連新產品/新項目/改進都放那裏,還包括bug管理。。。
公司B, 系統是Web應用,引用了大量的第三方Web前端代碼,超過2500個JavaScript、CSS文件。。。。每次發佈要等很久很久。。。其實絕大部分都不須要用到,就是硬度碼農買1送10地狂塞進去,並且grunt build那套也不用,打開首頁的時間都夠我去找菲律賓妹子了
公司B, 相比上一家公司,這公司的產品情況要好不少(儘管不少問題)。上一家公司的產品我接手以前只是基於第三方產品作擴展,徹底不是自主知識產權,午餐商業化,我從頭寫,大半年完成,比第三方產品還好不少功能多不少。好歹如今的直接自主產權,技術較新,但坑多。
公司B, 這公司是和這行業的領先者之一合股搞的SaaS解決方案,軟件+硬件結合,市場很大,不過,合股公司總部就是倉庫,你們繞着會議桌開發,旁邊的沙發坐了一堆五湖四海的合股公司員工吃各類風味的午餐。。。新公司的工做場所還在裝修,隔壁,其實仍是倉庫改造。。。
公司B, 須要使用的第三方系統,其市場佔有率超過50%,但用的Visual FoxPro開發。。。。。。。。由於官方沒提供API,咱們的玩法是直接逆向工程數據結構而後自行山寨業務邏輯玩弄數據。。。。。、、
公司B, 8個硬度碼農(已經炒掉5個)作出來的web系統,後臺ASP.NET MVC+nhibernate。。。每一個controller都automapper create一次map。。。還直接數據CRUD。。。前端angularjs,每一個controller直接http req。。。各類null ref問題。。。
公司A, 我發現了,代碼的質量不好,主要緣由是:大量複製粘貼、反覆操做(譬如反覆的獲取同一個值作而不是讀一次作變量)、冗餘的循環、沒有使用較新的語法糖(譬如lambda)而自行弄10多行代碼實現一行LINQ搞定的、不少狀況都沒考慮大小寫敏感,強行catch異常而不是判斷
公司A, 入職一個半月,發現前任挖了不少很大的坑,一些短時間內沒法填,一些長期也沒法填,怎麼辦?逐步填,一天填一個唄。
公司A, 開發,是典型的四無:無設計、無文檔、無規範、無流程,沒法無天(噢,五無了)。數據庫設計亂七八糟,性能極渣,處理幾百萬數據的ETL也要跑幾個小時,還會內存耗盡(32G)。。。。代碼那個更沒法吐槽。
公司A, 產品用的C#開發,Visual Studio作IDE,代碼管理用的SVN,陳腐得很。產品開發仍是waterfall,新版本發佈用windows登陸觸發複製更新,無力吐槽。。。給CIO建議,改用Visual Studio Online,搭配scrum,項目管理/代碼控制關聯起來,這只是第一步,還有不少須要作。
公司A, 雖然不一樣州不一樣客戶不一樣的業務需求,但絕大部分業務/邏輯是同樣的,徹底能夠把基礎部分標準化,可是呢,如今的作法是每一個客戶單獨有3個數據庫。。。每次基礎功能/邏輯更新,就要更新幾十個數據庫。。。
公司A, 數據庫的更新容許經過sharepoint修改任意記錄,而後呢,沒有後臺邏輯封裝,而後呢,一些表大量觸發器,一些觸發器幾百行代碼。。。
公司A,產品的平常數據查看/修改,除了專門的管理工具/客戶端,還能夠經過sharepoint來,有一個自定義的數據列表WebPart來綁定一個數據源,還有一個數據編輯WebPart,根據PK來更新數據,居然容許直接修改任意記錄。。。。。沒有後臺邏輯,沒有存儲過程。。。我靠
公司A, 系統的部分數據導出和通知是用的python腳本,質量放一邊(容錯、複製/粘貼等),產品環境根本就沒成功跑動過,一個月多月了,沒有人去排錯。。。今天開會,我一會兒就找到問題了,print組合輸出某數據庫值null。。
公司S,審查代碼,發現多個地方都出現一個詭異的邏輯,文件輸出的時候,定義編碼是GB2312,我跟寫代碼的碼農說:「但是,我們不在中國啊[攤手],並且,那但是10多年前的作法啊[捂臉] 。
職業與事業
現實
鐵打的營盤流水的兵,你們都是能夠被拋棄的卒子,不想成爲邊角料,就要不斷提高自我。
職場如古代的歡場,上班族都是出來賣的小姐,區別是一些天生麗質技術過人的成了頭牌、花魁,日子天然滋潤,若是碰上要麼色中惡鬼的土豪劣紳或一見傾心的傻情郎給之贖身(大量股票&公司上市),那就能夠安穩過下半輩子。不然等到徐娘半老只能被拋棄。少數早早財務自由,轉個身,仍是作了老鴇(老闆)
職場如古代的後宮,上班族都是佳麗,區別是一些天生麗質技術過人的成了各級妃嬪,日子天然滋潤,若是碰上皇上寵幸,成爲高人幾等的貴妃(大量股票&公司上市),若是懷上龍種誕下皇子,那就能夠成爲寵妃甚至皇后(技術帶頭人)。不然等到徐娘半老只能被拋棄。少數早早財務自由,拿個封地自立爲王(老闆)。
追求
若是人沒有理想,那和鹹魚有什麼區別?
我不是普通碼農,我是傳說中的那種10x碼農,效率是普通碼農的10倍,但個人待遇是普通碼農的10倍嗎?不是。因此,我今天還得起牀去搬磚。
出污泥而不染,濯清漣而不妖,用這個來形容我每日在爛代碼的槍林彈雨中匍匐前進而倖存下來,挺適合的。
追求,除了代碼質量,還有崗位,和待遇。
我那「離職公司就上市」段子你們都知道了,我經歷過幾回,2次錯過,1次主動放棄。中午請公司Z的技術總監吃飯,他是老員工,整個系統主要是他搞起來的,公司最近拿了幾億刀的授信,市值是1.85億刀,但公司只給了他價值6萬的刀股票。另一個所謂的CIO,來了沒多久,沒啥大貢獻,但他要求不拿工資換股份,如今有4%,價值約740萬刀 。
追求,就是不甘於只完成任務,而是要作得更多。
多年前,由於要監控不一樣公司的不一樣系統運行狀態,寫過多個針對性的監控程序。作過一個分佈式計算,c井寫的,RESTful API通訊,cluster server發送計算模塊(動態的c井代碼)到全部tenants,每一個tenant跑完代碼結果送回server,就是map reduce的過程。這種模式,能夠作不少事情,譬如之前作過度布式查詢,任意客戶端(臺式電腦、手機等等)查找結果真後彙總 。作監控系統,遇到情況就觸發條件而後通知相關人。後來改用第三方的,譬如Nagios,再後來,改用雲服務。之前用過monitis.com ,還行,如今公司要這個功能,因此再作了比較,發現還monitis最適合 。
作公司S,我發現公司沒有這種監控系統,我主動作了出來,效果很好,找出很多問題,damage control比之前好多了。剛纔監控到物理內存忽然佔用多了600M,分析後發現一個業務邏輯把整個數據表取出來在內存出來,空間佔用1.6G。這就是追求。
公司S,花了些時間,給公司的系統作了個高度可配置的數據歸檔功能,能夠指定任意來源和目標服務器、數據庫、業務表、數據記錄條件等,自動建立目標數據庫、表,完了自動備份壓縮、遷移等等,這個,是以前沒有人能作出來的。這就是追求。
公司S,主系統存在10多年了,當年沒啥設計,功能逐步堆砌。存在各類問題,性能問題尤其突出。主業務是各類數據的ETL,大部分邏輯都是逐條記錄寫入、更新到數據庫。譬如插入1萬條記錄,須要2分鐘。我改爲批量的,0.4秒。。。仍是太慢了[攤手]。這就是追求。
雖然我是爆棧,我偏好寫後臺邏輯代碼,由於前端代碼,好歹還得跑一下minify和uglify步驟,這樣別人纔看不清你寫的代碼有多爛。畢竟,系統慢,你能夠說是硬件差不是你代碼爛。其實,我仍是都寫得很好的。這就是追求。
公司S,生產環境有備份(第三方的備份SQL server的備份文件),但備份是一筆糊塗帳,譬如隨機抽查嘗試還原,竟然能告訴我那天的備份失敗了[攤手]怎麼沒人通知??而後呢,換一天,數據庫自己的備份也失敗了,然而仍是沒有設置通知[攤手]我看不下去,給備份結果作了通知,而後給以前寫的系統監控加了相關監控 。這就是追求。
如今上班天天仍是堅持作些研發和寫寫代碼,最近在作系統監控的功能,全套, 爆棧,從前端(angularjs等)到服務器(asp.net MVC+Web API等),從客戶端(Windows service) 到數據庫(SQL Server等),每一個模塊都儘可能針對接下來作新產品要用到的技術的最佳實踐進行演示,編程規範等等都儘可能覆蓋,給你們學習。這就是追求。
公司S,一天,全部網站服務所有停擺。查本身寫的log沒發現,查看IIS網站在跑,但應用程序池停,啓動再打開網站,仍是不行,池仍是停,如此反覆,排查系統日誌,池中止是由於hips模塊沒法加載,追蹤是外包的IT服務公司擅自在工做時間安裝McAfee殺毒軟件,給IIS加模塊,IT卸載殺毒軟件還不行,最後只能由我解決。這就是追求。
公司S,每週開個workshop,主要說現有代碼的問題和怎麼優化,還有各類場景的優化辦法和高效算法,給出benchmark,一些快幾倍,一些幾十倍,一些上百倍。還在ASP.NET Web API的基礎上搭了個Web服務框架,支持token,流量控制等,寫得好爽 。這就是追求。
咱們心態不該該bottle half empty,而是half full,就是要樂觀。我眼中的坑,是潛力,我發揮的機會,坑越大越好。我吐槽了那麼多,都是我遇到並修正的。
老油條
我對老油條愛恨交加。
公司S,我面試的時候,老闆說公司要把現有老系統作成SaaS,隊伍很成熟,看了一下該公司領英員工列表,初創員工從最開始到如今11年多了,沒離開過。成熟,換言之,就是革新的阻力大,老員工舒舒服服的,不會關心什麼新技術,更不喜歡空降一個上司來找他們麻煩。若是你是老員工,你怎麼辦?若是你是空降那個,怎麼辦 ?
公司S,幾個老油條,常常請病假,曾經有人一個月請三次病假,徹底是濫用。
有一家公司,作了20多年,積累了大量代碼,超過2000萬行,其中,大量重複發明的輪子,基礎組件如譬如O/RM和XML序列化等,大模塊如ERP等,無所不包,至關佩服,好處是,你有藉口入職後1年纔開始瞭解系統,以後,也能夠安心作老油條養老,由於你寫的代碼沒多少人看得懂。
公司A,我接替的那個研發經理將於3周內離職,問他拿系統架構設計、流程圖、數據庫設計、技術規範等等全部文檔,全無!那好,讓他講解一下,他讓我直接看代碼和用數據庫diagram看錶關係。。。我靠,系統設計僅僅就是表關係嗎?至關的無語。。。
職業道德
這些年來聽過很多朋友吐槽各類奇葩遭遇,我以前也遇到過很多。
公司X,用Java的,其是給南航作訂票系統的,後來老闆跑了,沒發工資,你們都回公司搶電腦填工資。
公司H,一個從廣州靈狐(還有人記得嗎?)來的碼農同事離職,破壞分區而後格式化磁盤了,還拆開機箱,拔了電源線和數據線。
一個公司僱用一個員工成本挺高的,找獵頭就要給一個半月的工資,基本工資,養老金,各類保險,工做環境(租金),設備,培訓,年假,病假,每一年加薪、獎金,平均算下來是基本工資的150%甚至更多。因此,我幹活都很努力,對得起這份工資。
時刻站好崗,不過不須要像以前帶病工做了,也不須要第一個來上班,最後的那幫人走。早9晚5,把工做都作完就好了。
公司S,部門會議,8個碼農,30個任務,部門的碼農狂塞任務給我,我要作10多個。。。我vs都沒,代碼訪問權限都沒,業務邏輯都沒掌握,就讓我作事情,一些任務仍是有難度的,譬如很籠統的系統優化,我仍是堅持去作了。
公司S,數據安全很嚴格,除了通常的過濾和監控等,每一個員工都是從本機使用本身的帳號遠程桌面到服務器上作平常工做,譬如收發郵件、讀寫文檔、使用公司的系統等,這種作法還真是第一次見 。公司這樣作,無非就是想你們遵照職業道德,但若是不尊重的狀況下,能夠知道而且行動。
公司C,我離職的時候被部門經理冤枉我破壞服務器,一個多月的工資沒發我,後來他們發現是部門經理搞鬼。這個部門經理還把源代碼放本身的手提天天帶回家,要挾老闆給他股份。幾年後,公司還發現這個部門經理偷偷賣公司的系統源代碼,把他給炒了,但公司還厚顏無恥地找我回去主持開發部。
公司T,我離職了,幾年後,跟我一塊兒呆過的技術負責人,聯繫我,說他如今手上有當年的系統的源代碼,問我有沒有興趣一塊兒搞搞賣錢。
健康
身體是革命的本錢。沒有健康的身體,工做效率和質量要打折。
舉個梨子,我這些年來身體每況愈下,前後有脫髮、肩周炎、手腕痛、頸椎病、腰椎間盤突出、慢性胃炎、腎結石(三次入急診)等等。
由於長期病痛,必然會致使工做時不能全神貫注,因此產出量天然要降,並且質量也可能存在問題。
我工做10多年,只請過幾回病假,要麼是由於要去急診,要麼是頸椎病發做嚴重沒法思考。如今回頭看,以爲本身不須要這樣拼命。
該請病假就請病假,對本身好點。
我如今是上班工做,出賣勞動力,而不是出賣性命。你垮了,甚至掛了,你全家人怎麼辦?老闆給你的工資中是不包括這個的。
古代,那些賣唱的女子,碰到無恥之徒,會說:「請客官放尊重點,小女子只賣藝,不賣身!」。如今,我也應該說:「老闆,請你尊重勞動合同,我天天只賣藝8小時,不賣腎。」。固然了,若是老闆給的錢足夠多(很是很是多),那,我就無論你今晚來的多少人,來的是否是人了。
加薪升職與待遇
加薪,還得看加多少,不少時候,僅僅是隨着通貨膨脹率加一點,一些時候還不怎麼加。加得多的,通常是公司看重的並且是呆得久,升職尤甚。蹲坑久了,通常人加薪升職是不如那些跳槽的。固然,若是你運氣好,公司上市,你又拿到可觀的股票期權,那另當別論。
離職,和談得來的其它部門的同事喝酒,他在這個公司呆了10年,看着它的變化。他說:「我知道這個公司不少問題,不少混賬的人,我天天只能逐一應付,日子就這樣過去了,儘管一些生活我會忍不住爆粗,老闆待我不薄,因此我沒有找別的公司。」,這個待我不薄,其實就是加薪升職,他從畢業實習生一直作到經理。
可是,職業生涯,是一個金字塔,底層的是絕大多數,往上層次/崗位的愈來愈少。因此,不可能你們都當上高級工程師、經理、主管甚至CTO。
在中國,不少公司爲員工逃稅,把工資造低,你們倒手的錢是多了,但長遠看,未必,由於賬目收入低了,公司給你的養老金天然會低,你本身給的養老金天然也低。我在中國工做7年,移民澳洲的時候退保,我的部分纔拿回1萬多元人民幣。來澳洲剛剛滿7年,養老金是中國的40倍,不逃稅。
典故
公司A,IT經理,樣子是典型的猶太人(就是那種大鬍子),後來一問,人家說是英格蘭+蘇格蘭裔的澳洲人。。。我代替的那個研發經理,是不丹人,祖母是廣東人。。。部門的開發人員之一是日本人,英文名跟中文拼音同樣。。。另外有一個開發人員是上海人。
公司K,我是劊子手。公司人員流動率高,新員工入職,老員工離職,都須要一系列的流程,我作的hr業務中有一個功能:自動化入職和離職流程。每當監控系統中顯示今天要離職的人員,我就有深深的罪惡感。。。。監控系統只是顯示的人員不斷變化(入職離職),但背後是有血有肉的人啊。。
公司T,大學尚未畢業,就在這裏混了,而後跟着公司去了深圳蛇口,公司就在女媧補天像旁邊的大廈,當年那裏是海邊,如今那個地方都成市中心了吧?下班後,你們去樓下的大排檔喝深圳土產的金威啤酒,晚上你們就在公司裏的一個小房間裏的擠着睡。
女碼農,你們以爲又少又神奇,是吧?
公司T,遇到了兩個女碼農,一個在幾年後成爲了另一個該公司的男同事的老婆。另一個,成了個人女友,當年是很開心的,有共同語言,愛的死去活來,(這裏省略大量兒童不宜的內容)。後來,與她糾纏不休的前男朋友來攪和,她讓我走,我心有不甘,但尊重她的決定,多年以後,她讀了大學,用上了C,去了銀行搞大型機,再幾年後,找了個同鄉,回去組建家庭,生了孩子,沒再從事碼農事業,(這裏省略大量各類哀怨)。
公司H,另一個女碼農,水平還行,但不大喜歡接受新技術,我推薦的新東西她都沒有采用,不過,我仍是在這家公司呆了我職業生涯最長的時間,超過5年,直到我要離開中國移民澳洲。
公司T,上述的同事夫婦,3年前帶上全家來澳洲,他讀碩士,說是曲線移民。畢業後,由於,他的原話:「我只是不想別人給個人時間訂價」,憤而回深圳發展。對了,當年咱們分別離職以後,我在廣州買房,他在深圳買房,都纔是50萬左右的兩房,如今他的房子快1000萬了。
注意!前方高能!!!
職場,是泡妞的好地方。
公司A,前臺真漂亮啊,目測很年輕,20歲左右的樣子,貌似是混血的,哎呀。
公司H,我遇到了一個女神,真心漂亮,一見鍾情那種,我就對她展開了追求。後來發現已婚了的部門經理對她也有興趣,在各類電影中才會發生的經歷以後,(這裏省略大量兒童不宜的內容) ,她成了個人兩個孩子的媽!
事業/經驗
提及作技術的人事業演進路線,通常分三條。你們都是從初級碼農開始,到中級碼農,高級碼農,而後開始分:一、tech lead / principle developer → architect → senior architect → chief architect → CTO;二、team lead → development manager → senior / technical manager → VP of engineering。若是還要細分architect的話,還能夠這樣:application/software architect → solution architect → enterprise architect ,每一個都有junior/mid/senior/chief級別。
提及架構師,我以爲沒有多年實際動手經驗,畢業就上來作架構師的,真正作成功的屬於百裏挑一,大部分都是扯蛋。
爲何須要資深(老)碼農?爲何須要架構師?一個誤區:把現有系統扔到AWS/azure/GCP這樣的公有云是簡單的lift and shift,但實際上遠遠不是這樣,譬如一個公司的業務要打印快遞公司的那些標籤,就不能徹底在雲裏面跑了。
資深碼農,通過多年的實戰經歷的錘鍊,掌握的技術廣度和深度都是新人沒法比擬的。簡單來講,老碼農踩過的坑,都是血淚換回來的,你願意讓缺少經驗的人再去拿公司來玩笑嗎?
找工做
獵頭/中介
大部分獵頭都很爛,大部分獵頭都很爛,大部分獵頭都很爛,#重要的事情要說三遍#。
獵頭,就是把人力資源當牲口那樣販賣,他們所謂的Cherry picking,很爛,由於沒有背景知識,他們亂來地強塞給你一個崗位,騷擾你,或者你投了不少份簡歷,就是不理睬你,儘管你很是符合甚至over qualified。更搞笑的是,我去找工做,他們倒過來給我推銷碼農。
獵頭乾的是買賣牲口的工做,澳洲的招聘工做,大部分是都是企業經過中介來發布的,但絕大部分中介很爛,根本不懂行業知識,不懂的分應聘者水平高低。我以前找工做,大部分中介都不理睬我,但知道我當上研發經理後,常常騷擾我,強力給我推薦他們手頭上的應聘者。
不少時候,聯繫了獵頭,而後,就沒而後了。獵頭不靠譜,獵頭不靠譜,獵頭不靠譜,重要的事情必須說三遍 。
獵頭/中介真的不懂技術的,今天有個獵頭,屢次來回郵件,每次都問一個技術/工具。譬如微軟的team foundation server,讓我深刻說明這個東西。要不要我說說怎麼配置continuous integration啊,要不要我說說vs agent的參數啊 ?
試過面一個多月前面的一家公司,沒潛力,推了。接下來這個故公司換了幾家獵頭來投放廣告,我都發了簡歷(難以分辨是非同一家公司),獵頭問技術問題的時候,總會問同一個問題,每當問這個問題,我就內心想:靠。。。又是這家公司。
曾經看見一份工做,投了簡歷,和獵頭來幾個來回郵件電話交流後,無疾而終(中介沒回復)。大半年後同一個公司同一個職位(招聘廣告不會列明公司),一樣一個獵頭,幾個來回後沒下文。以後,同一個獵頭,主動找我,仍是同一個公司同一個職位。
剛來澳洲的時候,找啥工做,獵頭都會問你有沒有本地經驗(local experience)。找來找去沒找到合適的,只能從新從低作起。最搞笑的一個真實故事:一個英國人,作了20年,來澳洲找工做,獵頭仍是說:你沒有本地經驗。
獵頭,不少沒知識不說,純粹浪費時間,沒有面試機會,還找你去面對面聊天 ,還爲了避免對口的技術騷擾你,還讓你去作初級碼農。
澳洲市場很小,獵頭很傻B。剛纔一獵頭找我,職位是我上一家公司的首席架構師,她根本沒看個人簡歷,若是看了,就不會找我了。
一些獵頭真是厚顏無恥啊,羣發垃圾郵件就算了,我回復:「你這職位我不少年前已經不找了,更新一下你的系統吧」,今天直接電話騷擾我,問了一串問題,我強調我剛找到perm工做,不會換,她還死纏爛打問我工做內容什麼的,我說我在開會,她說:那麼我明天再電話你吧。我說:郵件聯繫,別電話我了。
某公司要招一個全棧碼農,最後在領英上找到了一個技術極度全面的,上班後才發現,原來他是個獵頭。#一個獵頭寫什麼狗屁掌握技術 某公司要招一個全棧碼農,最後在領英上找到了一個技術極度全面的,上班後才發現,原來他是個獵頭。#一個獵頭寫什麼狗屁掌握技術# 。
有一次,被獵頭騷擾,LinkedIn上加了我,一看就知道是昨晚我忽略的一個工做機會,他打電話過來,工做須要常飛去越南搞外包團隊,待遇還比我如今低,一聽到我沒興趣,立刻掛電話。。。基本禮貌啊 。
曾有一次,獵頭騷擾,在招聘網站找到個人簡歷,花了半個小時,強推一個用Java、RoR的公司的崗位,待遇比我如今還低,而後呢,我居然贊成去面試了。
找到工做以後,常常有獵頭直接打電話到咱們公司的技術支持來找我,強推他們手上的碼農,我上司接的電話,上司一臉詭異地看着我,覺得我在找工做(雖然我其實是。。。)我投簡歷,獵頭不鳥我,如今倒過來給我找麻煩。
一次,公司的技術支持電話響起來了,女QA接電話,而後轉過頭來對着我詭異地笑了,說找個人,我納悶誰會用這個號碼找我,問是誰,女QA說是獵頭,當時就驚出一身冷汗 。
還有一次,獵頭來電,說:「喂,咱們有一個很適合你的崗位!」,我說:「哦?說來聽聽。」,獵頭:「你擅長.NET,對吧?」,我說:「嗯。」,她說:」那JAVA呢?「,我內心一咯噔。。。mmmmm,她繼續:「還有PHP呢?」,我立刻說:「負分滾粗!」
有一個獵頭來電:"如今有一家大數據處理公司,須要SQL Server專家,你來不?",我:「好啊,我立刻辭職。」,上班第一天,SQL Server正在Linux上歡快地跑着。
曾經有一次,獵頭來電,上司在和我討論容災設計,我迅速拿起電話說我要接這個電話,以防Google又自動顯示未知號碼是哪一個招聘公司。這已經不是第一次了,上司那麼聰明,確定知道我。
曾經有兩個美國獵頭找我去美國工做,用的是澳洲公民特有的E3簽證,我說我但願是H1B簽證,這樣我能夠留在美國,而後,就沒而後了。
一獵頭讓我作一個ASP.NET的在線測試,IKM的,50來個問題,內容真是服,一大堆過期的ASP.NET Web Form技術細節,連web.config配置裏某屬性的名字都要搞幾個typo來考,還包括SharePoint開發的,MVC的只有寥寥幾個routing問題,越作越啼笑皆非,完成那一刻仰天長嘆:世界那麼大,我仍是。。。 作完後不爽,寫了郵件給獵頭,痛斥這個測試問題多,和如今的技術嚴重脫節,這些老技術沒什麼人用的了,還說測試太長,沒多少人會願意作完。。。。。發送以後,意識到這獵頭不會再聯繫我了。。。
曾經有獵頭打電話來,問我昨天面試怎麼樣了,知道我對那份工做不大感興趣,就直接問我全部記得的面試題目,這樣她就能夠給下一個應聘者提升成功率。 獵頭推薦的3個應聘者,兩個掛了,我說對這職位不大滿意,她說跟招聘公司聯絡一下看看結果先,而後呢,沒跟我打招呼,剛纔靜悄悄地再發了一個新的招聘廣告。
悉尼有大量獵頭中介,大部分丟很爛,作垃圾的一間叫progressive,垃圾中的戰鬥機,各個員工輪流經過系統發送同樣的郵件給你推送徹底不合適的崗位,剛開始我都老實回覆郵件說崗位不對口沒興趣,他們都不理睬照樣發。還打電話騷擾你,一些是看中我作經理因此推薦他們手上的人,一些是推不合適崗位給我 。
最近幾年,和獵頭的交互,發生了好笑的變化。之前他們找我,基本上是推銷比我如今崗位職稱低、薪酬少的工做,如今呢,推銷他們手頭上的那些找工做的人給我,由於他們發現我是研發經理,除了電話騷擾,還在領英上私信騷擾。#我只想安靜地找個工做#。
雞蛋不能放到同一個籃子裏。同理,公司招聘,經過獵頭髮廣告,不少會找多個獵頭,漁翁廣撒網。不過招聘廣告絕大部分不會透露公司名字,應聘者難以分別,因此會常常形成經過不一樣獵頭投同一個崗位的狀況,這過程常會出現不愉快的經歷 。
曾經遇到過一個混血獵頭,母親臺灣人,真心漂亮,模特級別的,美!後來去了澳洲最大的銀行作人力資源,最近懷孕休產假去了。。。
總結一下這些年來面試心得:中介(獵頭)大多不(就)靠(是)譜(豬),買賣雙方多會避(造)重(假)就(注)輕(水),正常工做時間基(加)本(班)是(沒)不(工)多(資),隊友水平參(大)差(多)不(很)齊(爛),開發很(毫)有(無)規(章)範(法),產品質量有(別)保(逗)障(了)。。。
應聘
我是代碼浪人,不在打靶路上,就在被打靶的面試中。我夢想有那麼一天,終於再也不須要打靶了,爲本身工做,當老闆。
在澳洲找工做,要金睛火眼,打的是perm職位,實際上是合同工/臨時工,打的是悉尼地區,其實多是墨爾本、黃金海岸、新西蘭、新加坡、英國,還看見一個奇葩的:曼谷。這還不算,最好玩的是看見一個是 不丹 。
公司B,面試中,和公司領導之一聊了一個小時。原來年初才加入的那個穆斯林技術負責人要離職了,其他的開發人員也打算幹掉或者已經離職,如今有個5人的海外硬度團隊,產品嚴重拖延交付,公司容許把現有的系統推倒重來,我上任後先是重建團隊,再考慮重寫仍是繼續改現有的半成品。
應聘過程當中,免不了要作各類測試。你們還記得那個反向二叉樹的段子吧?寫算法和實際問題解決能力,這個仍是因人而異的。單純強調算法不靠譜,畢竟,實際開發,不少狀況下是須要糾結具體算法的,有須要的時候就Google。我以爲更應該強調實際解決問題的能力。
曾經遇到過一面試官問我Sharding是啥。我沒聽過Sharding這個詞,因此說不知道,後來才知道就是數據庫的分庫/partitioning。
一次,打靶,真的被爆了。那個在微軟幹過的,兩鬢有白髮了,架構師,問了我一大堆的設計/架構問題,簡單的,複雜的,最後讓我在白板立刻設計同時支持幾百萬人在線的系統。結束以前問他在微軟作得怎麼樣,visual studio還有你的代碼嗎?
每次打完靶,以爲都被掏空了,又要從新填充一下全新的計劃,這種迭代,不願定是螺旋式上升的,仍是原地踏步 。
不過,我習慣了每次作完面試題目,回家就覆盤,把全部問題都寫下來,從新作一次,總結。
好幾回面試過程當中,遇到到了不懂的技術問題,別面試官質疑個人能力,當時是很無地自容的,但最關鍵的是,我知恥然後勇,把不懂的都學會了。
簡歷
被國內碼農尊稱爲高司令的Java之父James Gosling,這些年來簡歷只有一行字:Father of Java。這種級別的簡歷,也只有10來個重量級語言的創造者纔有這底氣,固然,那些操做系統創造者們則是天外飛仙了。
悲哀的是,不少人簡歷做假。這些人造假,一些緣由是由於自身水平/經驗不行,一些是由於獵頭只給一份簡歷3分鐘時間,用的關鍵字自動掃描,你們沒法突圍而出。
可是,我強烈建議你們簡歷仍是要短小精悍,最有價值的東西放首頁突出位置,不要造假,不要動輒精通,用實際例子和數字來講話。
說到底,簡歷只是敲門磚,只能讓你獲取面試機會,面試中的表現,仍是看過人的水平。
面試別人
公司C,當年畢業沒多久,年少氣盛,技術負責人不在,我代替他去面試一個新的開發人員,對方經驗比我豐富,我問問題也不含糊,追根究底,他耐不住了,就直接說:「算了,就這樣吧,我走了」。。。。
一公司招聘開發人員,在10多個應聘者中,我堅持並最終選華人。其實最後一輪有2個,第二個是印度人。這個面試的印度的開發人員跟我以前的見識的相似(只是說見識過,沒說所有,以事論事)。
面試不是一個對等的過程。面試官能夠出任意問題,事無鉅細都可,面試者能作的就是基本功要紮實,而後針對崗位準備一下相關技術問題。我看過幾篇老外的文章,痛斥面試過程當中種種不是,說其是絕壁無聊,蛋疼沒用,慘無人道的。
面試就是相親的過程,雙方都在扯談,都會注水。應聘者會吹一些沒掌握好甚至徹底不懂的東西。面試官會吹公司狀況怎麼這麼好。
辭職
緣由/理由
辭職的緣由能夠不少,最主要的緣由,其實就是:「老子作得不爽」。這個不爽,能夠不少有不少緣由:
- 待遇不滿意
- 職位升遷不夠快
- 豬隊友
- 辦公室政治鬥爭
可是,不少時候,爲了照顧老闆/公司的面子,仍是會給出一個好讓雙方都下臺的體面的藉口,譬如:「鄰居的大姨媽的小侄子的小學同窗的家裏的小狗生孩子了,我也想去生孩子了」。你想一想,辭職都這樣給東家面子,這樣的員工去哪裏找啊?
關於待遇,可能會出現老闆對不鳥如今的老員工( 無論是尸位素餐的老油條仍是功勳元老),以爲重金能夠聘到更好的員工(無論是濫竽充數的,仍是真牛逼的人),因此,可能出現新人進來待遇比老員工待遇還高的倒掛現象,對努力幹活的老員工不公平。
通常狀況下要給一個月的辭職通知,公司B,我說服了上司,只須要給2周的通知。還有一週就能夠離開如今公司了。剛纔家裏領導還訓話,說如今的公司很差嗎?爲何要離職,真折騰啊!我一直沒告訴他如今公司多操蛋。
公司B,辭職了,還有大半個月才走,公司愈加明白個人重要性了,無論是技術攻關仍是系統重大問題,團隊沒人能接班,解決不了,最終仍是要我來解決。今天越南碼農作了個功能,在chrome瀏覽器死活跑不過,他又着急着走,明天一大早驅車1000千米去墨爾本,因此沒耐性解決,我分析排查是CORS問題,解決了,老闆攤手 。
信任
信任是一種很奢侈的商品。
公司S,我來公司呆了一個月,在幾個關鍵老臣子的勸說以後,老闆纔給做爲技術負責人的我訪問源代碼的權限[攤手]我來了5個多月,老闆還諮詢那幾個老臣子我是否值得信任。。。用人不疑,疑人不用。公司一個來了8年的老臣子,今天跟我討論完產品後,跟我談心,說老闆的想法和作法都是,儘可能讓不一樣的人作不一樣的事情,不讓一我的掌握全部東西,以確保知識產權。同時他也說,澳洲這地方,不大可能讓華人作很高的位置,譬如他就作不了總經理,我也不大可能能坐CTO的位置 。
仍是公司S,入職,據說我要訪問源代碼,老闆立刻提出要獨立服務器虛擬桌面進去,但那個服務器來以前,就給個人手提安裝上了Kensington鎖,老闆反覆強調不是信任問題。上個星期專門請了一世界級大公司的CIO來諮詢代碼安全管理等相關問題,固然,老司機我天然能對答如流, 那個CIO對我也是另眼相看 。老闆給權限,IT經理過來打開計算機管理器,我說把我加入管理員組就好,他說:「你大爺的,歇歇吧!我作IT固然懂這個!」,然而那固然不能直接加,他說要退出從新用他帳號登陸,我說能夠直接打開cmd admin而後compmgmt.msc,他說這樣輸入密碼不安全(不信任我),我離開一會回來一看,他用admin登陸改了 。
後話
以上各類吐槽,來源於我這些年來的經歷,至關部分在個人微博發表過,如今彙總成文,加上大量私貨,但願你們能從中受益。
謝謝。