1. 程式人生 > >十年風雨,一個普通程式設計師的成長之路(八)不想做技術總監的專案經理,不是好程式設計師

十年風雨,一個普通程式設計師的成長之路(八)不想做技術總監的專案經理,不是好程式設計師

目錄

  • 十年風雨,一個普通程式設計師的成長之路(八)不想做技術總監的專案經理,不是好程式設計師
    • 01 技術總監寫不寫程式碼?
    • 02 面試的坎坷與杯具
    • 03 新的開始 & 舊的結束

十年風雨,一個普通程式設計師的成長之路(八)不想做技術總監的專案經理,不是好程式設計師


01 技術總監寫不寫程式碼?

曾在IT界掀起腥風血雨的一個問題:技術總監要不要了解技術細節?

歸根到底的問題就是:技術總監還要不要寫程式碼了?

在18年12月前後,我給你的回答可能截然不同。

18年12月,我離開了相伴多年的公司,換了一個東家。

“我要寫程式碼",五個大字映在我的胸腔。

就在前段時間,老東家的上司還問我要不要回去。

我想了下,回覆如下:

回去的話,不想帶專案,不做專案經理,可以做售前、架構把控,寫程式碼也可以;可以找人做專案經理,我前期可以帶一程,或者協助。

我覺得XXX(我當前公司)這邊的組織架構還可以,有總工、架構師、專案經理,架構師負責規劃專案或者核心程式碼實現,專案經理負責專案進度。

為什麼這樣說?

請看我上文十年風雨,一個普通程式設計師的成長之路(七)膨脹、驕傲,程式設計師轉專案經理的原罪

兩年的專案經理做下來,感覺在程式碼修煉、程式設計上沒有任何的長進。

在組建大資料專案組的時候,本以為自己可以投身專案,寫一些核心程式碼,弄一弄Hadoop、hbase、jstorm、kafka、spark、kylin這些我們專案中用到的大資料技術。

但是事與願違,承擔了一個專案經理的職責後,需求對接、專案里程碑跟進、對領導與客戶的進度彙報、資源協調……等等等等,都成了不得不去關心、煩心、投入精力的事兒。

如此下來,當18年結束大資料專案,我轉崗成為技術經理,不想再做專案經理。

可是又跟進了一個跨政府部門合作交換平臺的專案,此時我唯一的要求就是給我配一個專案經理,我來負責這個專案的需求設計、架構選型與核心框架搭建。

結果領導答應的好好的,原本要做這個專案經理的同事,卻因為手頭的事遲遲交接不掉,最終還是讓我接手了。而那個同事因為不滿於當前的工作狀況,最終也是離職了。

我覺得,這樣的決策算是一種雙輸吧。

因此,這讓我萌生了一個念頭,我是不是也該出去看看了。

在18年12月前,我給你說上面那個問題(技術總監到底要不要寫程式碼)的回答是,技術總監把控大方向就行了,寫啥程式碼?哪來的時間給你?你又不是隻負責這一個專案。

【我最多的時候,擔任了5個專案的管理工作、2個專案以上的系統架構與技術評審。】

在18年12月後,我深深地跟你說,寫程式碼吧兄弟。除非你想在這個公司養老。

不寫程式碼則不瞭解技術細節,不瞭解技術細節一出去面試就一個接一個的懵逼。

關於這段經歷的得到與思考:

對於技術能力還沒達到一定程度的程式設計師,我的建議是,還是先暫且放一放管理性的工作。

可以做一做專案的研發leader,但是還是千萬不要做事務型的專案管理工作,除非你對管理很感興趣,那就走這條路吧。

02 面試的坎坷與杯具

在18年11月的時候,結束了跨部門交換平臺的工作。於是閒了下來,便把51 job上的簡歷給更新了下。

基本上每天都會有一個電話過來,約面試。

可笑的是,當時真的是什麼都沒準備,兩手空空,腦袋也是空空。

沒有去leetcode刷刷題,沒有去把一些基本的java知識複習下,沒有去好好返場熟悉下分散式、高併發。

估計當時也是沒做好離職的思想準備吧。

很隨意地去面試了幾家,發先自己連很多基礎知識都給忘了。

有次印象深刻的面試,是一個年輕面試官拿了一份卷子出來,讓我做筆試題。

筆試題?

Oh,No,我都好久沒碰過這個玩意兒了。基本上都是面試聊一聊就結束了。

然後這個面試官問了一個讓我至今都還記得的問題:“什麼是物件?”

我特麼直接懵逼了。什麼是物件?要不要new一個給你?

這個問題不是學習畢業第一年問的問題嗎?

我還真沒答上來,腦子一片空白。

我笑著說:“我懵逼了,你能給我點提示嗎?”

這次的面試經歷應該是在我11月到12月這個階段,多次面試經歷中最糟糕的一次。

因為感覺這個公司或是不尊重,或是招人、面試的制度、流程有問題。

像是在進行校招似的。

(當然,我自身也有問題,連這些基礎知識都給忘得乾乾淨淨。)

還有家公司的面試專案經理、專案總監、運維經理齊上陣面試我,結果問了一堆專案管理、資料庫設計的問題,可是又說不到點上。

我問他們到底是需要什麼崗位的人才?他們說崗位很多,都需要,看面試人的能力情況。

我了個去,你不說你招啥樣的,我十八般武藝賣哪種呢?

面試的倒數第二家就是我現在所在的公司。

一面主要問的是對於效能有什麼看法?

我說了下QPS、TPS相關的一些概念,基本就過了。

二面問了nginx、ES以及讓我描述下效能優化的過程。

nginx說實話我是交換平臺專案才用的,並不熟悉,熟悉的是weblogic。

面試官問我nginx有哪些負載策略?我挺懵逼的,還真沒研究過,我說你能提示下嗎?

他笑了笑,說例如輪詢。

我想了下,回答說是配置upstream嗎?

之後回去看了下,nginx是可以配置輪詢、ipHash、平均負載、權重負載多種負載策略。

ES,即elasticSearch,我是真的沒用過。這個東西我是知道的,但是遺憾的是面試時腦子有點糨糊,竟然說沒聽過這個玩意兒。

【這個沒聽說過在廣度上減分很大。】

關於效能優化,我說了這樣大致一個流程。
因為跟資料庫、資料倉庫、查詢打交道比較多,所以著重說了下資料查詢的優化過程。

(1)先找出慢SQL,以Oracle為例,可以通過AWR報表的方式檢視。

(2)檢視慢SQL的執行計劃,看看查詢的關鍵欄位是不是缺失索引,新增索引。

(3)有索引,但是檢視執行計劃,並沒有走索引。此時有兩種方法,一是用hint,二是可能資料表最近被大批量的刪除、新增過,需要手動收集資料表的統計資訊,讓SQL優化器正常解析SQL。

(4)資料表太大,沒有合適的全域性索引。可不可以建設分割槽表?按照時間、地區進行分割槽操作。

(5)不能分割槽,或者分割槽效果也不顯著,需要考慮改動表結構了,有些欄位是不是可以拆出去?做成維表、擴充套件表?

【這是垂直拆分。缺點是查詢時如果要查詢擴充套件表字段,需要join操作,插入修改時要考慮多表,事物複雜。單表資料量還是太大。】

(6)或者可以考慮進行分庫分表操作。對於Oracle來說單張1億以下資料分割槽就夠了,不需要分庫分表。
【水平拆分。缺點是會導致事物一致性更為複雜,還需引入分庫分表的管理中介軟體。】

(7)進行歷史資料分離。將一些不常用的資料,例如兩年前的資料都拆分到歷史表中。

【即冷熱資料分離。】

(8)增加資料庫效能,升級硬體,例如磁碟換上SSD。這個方法是被驗證過了的,尤其是查詢批量資料,無高效索引的時候。

(9)從資料庫層面已經無法優化了,我們可以考慮在應用端使用並行查詢的方法爬出資料,然後再行合併。

【事實上,很多報表工具都是這麼做的。】

(10)從業務上去優化,看看這樣查詢是不是有道理,這些欄位是不是確實需要?需不需要這麼精細?需不需要這麼頻繁?大資料量報表每月一出就行了?那這樣就無所謂時效性了。

面試最後,面試官問我對他們公司還有什麼問題?

我問了下如果入職後,將從事什麼樣的工作。回答的是一些中介軟體、平臺的開發。

我覺得還是比較契合我當前迷茫期的目標的。

【真的是迷茫期,不知道幹什麼了。在老東家那裡,最多也不過就是升個總監,養老罷了。技術上就完全與主流脫節、荒廢了。】

這個offer拿到後,便沒有怎麼再去面試了。

關於這個offer,其實我再認真刷兩天面試題,拿到的級別跟工資應該會更高點,但是這可能是我,或者也是很多程式設計師的一個通病吧。拿到了offer便不想去面試了,麻煩。

其實還是應該再多看看的。

關於面試的思考與得到:

對於被面試者而言,應該準備充分點。因為時間太短,很多工作中可貴的品質沒法在短短的半小時、一小時內展現出來。不要讓自己遺憾,不要讓面試你的公司錯過你遺憾。

對於面試官而言,我認為在面試、考查一個人的能力時,應該是去著重發現他的優點,而不是努力找出他的不足。

每個人都有自己不擅長的一面。

我們是來挖掘人才為公司增長業績的,而不是顯示自己能力來玩找茬遊戲的。

03 新的開始 & 舊的結束

在入職新公司後,第一週就是領個電腦,裝些IDE工具,熟悉熟悉公司的規章,熟悉下同事,熟悉下工作範疇。

第二週便來活了,是寫個小工具,可以自動將spring專案中針對Oracle、mysql的SQL語句轉換為適配國產資料庫(達夢)。

前期已有一個架構師做了初步調研,我喊他榮哥。榮哥搭了個架子,讀入了mybatis的XML,我便開始解析、匹配、轉換xml中的sql,按照外掛模式做了個擴充套件介面,總共花了一週寫好了這個demo。其中轉換mysql的merge方法比較麻煩,花了有兩天時間。

這個demo可以轉換大部門的SQL語句,對於無法轉換的,則輸出log,予以提示,多少行什麼方法需要人工去轉換。

後續又調研技術專家,業務側人員,做了這個工具的擴充套件方案,提煉了一個SQL輔助工具集。

規劃了一些擴充套件功能。如可以連線JDBC,利用jdbc資料庫連線池收集SQL的執行次數、消耗時間,生成慢日誌、錯誤日誌檔案,開發匯入SQL的檢測功能,通過分析每條SQL的執行時間、表的索引、主外來鍵關聯等資料,發現SQL錯誤、警告,獲取SQL執行計劃,提供建議,如SQL是否存在全表掃描、笛卡爾積等?

當然,後續就沒有後續了。

因為業務的調整,這個專案後續並沒有展開。

而我,也開始投入下一個專案了。

但是通過這樣一個專案,我卻覺得,這,的確是我想做的工作。

2019,我來了。

---------------我的成長之路系列---------------

十年風雨,一個普通程式設計師的成長之路(一)懷念:西安的小黑屋

十年風雨,一個普通程式設計師的成長之路(二)外包:顛沛與流離

十年風雨,一個普通程式設計師的成長之路(三)銅陵:大雪與加班

十年風雨,一個普通程式設計師的成長之路(四)深圳:積累與轉折

十年風雨,一個普通程式設計師的成長之路(五) 成長:得到與教訓

十年風雨,一個普通程式設計師的成長之路(六)抉擇與出發

十年風雨,一個普通程式設計師的成長之路(七)膨脹、驕傲,程式設計師轉專案經理的原罪


歡迎關注我的公眾號:姚毛毛的部落格

這裡有我的程式設計生涯感悟與總結,有Java、Linux、Oracle、mysql的相關技術,有工作中進行的架構設計實踐和讀書理論,有JVM、Linux、資料庫的效能調優,有……

有技術,有情懷,有溫度

歡迎關注我:姚毛毛& 妖生