如果工作沒有挑戰性,怎么辦?
面試官:說一下你做的項目中最有挑戰性的技術問題吧!
張大胖:(腦子里快速過了一遍) 我大部分時間都在實現業務需求,沒有遇到過什么有挑戰性的技術問題啊!
這樣的場景不知道你遇到過沒有? 其實很多人的日常工作都是完成業務需求,很少有機會讓你去創建高并發,高可靠,海量用戶這樣看起來挺有技術含量的系統,確實沒啥挑戰性。
這種工作做了一兩年,就會很熟練,就會覺得無聊,就會想著跳槽。
跳到哪里去呢? 在自己的技能沒有很大提升的情況下,即使是換一家公司,估計還是差不多。
針對看起來平淡的技術生活,如果還想再技術領域繼續發展,建議嘗試一下這么幾種辦法:
1. 深挖工作中的某個技術方向。
為什么要和工作相關? 這是因為有動力,有價值,可以現學現用。
比如搜索,比如緩存,比如RPC框架,都往深處挖掘一下。這需要讀很多文章,看很多書,看很多源碼。
光看也不行,要動手寫一些,比如自己模仿著寫個lite版本的RPC框架,簡單的緩存......放到自己的GitHub上去。
這里就有個例子,stormmaybin同學寫的storm-rpc框架:
https://github.com/stormmaybin/storm-rpc ,用到了Netty,Kryo,Zookeeper等技術。 面試管看到了這樣實打實的東西,必定會高看一眼。
經過一段時間,你可能就會變成這個領域的專家。
當然如果你有其他興趣愛好,例如鉆研Linux源碼,那也很好。
2. 研究學習公司自有的框架和平臺
為了提高開發效率,很多公司都有自己的框架,無論是開源的還是定制的。 但是這些框架會把程序員限制到一個增刪改查的狹小范圍內,做一個HTML填空人員,可替代性極高,人走了也不怕,招來新人迅速就能上手。
存在就是合理的,想提高的程序員可以從增刪改查中跳出來, 研究一下這些框架,看看它是怎么解決工作中問題的,例如它是怎么從數據庫表直接生成Domain, DAO...... 等代碼的。 你掌握了思想,自己也可以寫一個,技能也就提高了。
記得有位同學是在SaaS的平臺上做需求開發,這其實是個不錯的機會,可以研究下SaaS的理論,架構,具體技術(如何保證安全,如果擴展,如何計費等等),都是很有意思的、很有挑戰的技術。
3. 在軟件工程實踐中能不能突破?
工程實踐包括單元測試、重構、持續集成、DevOps等。 每個項目都有自己獨特的地方,都需要獨特的小工具, 例如yangtaihsou同學給自己的項目寫了一個pmock的框架:https://github.com/yangtaihsou/pmock 解決了項目的一些痛點問題, 這放到簡歷中也是閃閃發光的亮點啊。
想想自己自己手頭的工作,有哪些還可以改進? 有哪些可以自動化?把它實現了,就把你和大部分人區分開了。如果你發現不了,很可能是你已經對這些問題習以為常了。
面試官看到這樣的簡歷就會想: 此人發現問題后,沒有隨波逐流,不抱怨,能想辦法解決問題,提高效率, 加入我們團隊肯定大有好處。
總之事在人為, 關鍵是態度和行動, 這些事情沒有一件是能輕松完成的,非得下一番苦功才行。
【本文為51CTO專欄作者“劉欣”的原創稿件,轉載請通過作者微信公眾號coderising獲取授權】