## 程序員的定位
按照廣度和深度來區分,編程的方向分為兩種:
應用型
科研型
應用型 關鍵詞是『應用』,以 Web 開發為例如:博客、CMS、論壇、電商(B2C, C2C)、CRM、企業內部管理系統、視頻、實時聊天、直播、外賣等。跟現實生活比較貼近的,能通過編程來實現產品功能,以此來改進社會生產效率的領域。
科研型 例如在以 PHP + Laravel 為主的 Web 開發中,專注的話題有程序內部架構、設計模式、算法、編譯原理、PHP 源碼、PHP 原生 C 編寫擴展等。這些比較抽象,相比應用來講比較『抽象』,經常被我們稱為『底層』的領域。
### 關注點不同
應用型工程師 主觀上把技術當做工具,重點放在如何利用技術去實現產品的商業邏輯上。不拘泥于技術細節,專注點在于要做出來的東西上。
科研型工程師 對技術的態度是追本溯源,他們熟知 PHP 底層的運行機制、變量的底層實現、垃圾回收機制等,甚至接觸 LAMP 常見技術堆棧的源碼。關注的是代碼執行效率和工程合理性。
### 能力區分
應用型工程師能力 的衡量標準有兩點,『一是項目的類型要泛,另一個是項目量要多』。當然這些項目最好是獨立完成編碼或者參與了大部分核心技術架構的設計與實施,如數據庫設計、API 機制的設計、技術堆棧的選型等。
以過往經驗來看,應用工程師需要經歷 5 個以上不同類型,10 個以上的項目才能算畢業。這些項目大部分情況下是自己獨立完成的,他們需要對這些項目的技術構架都了如指掌,這要求在接觸每一個項目時有意識的去主動學習。
科研型工程師能力 如果說應用型是『廣』的話,科研型就是『深』。衡量標準是清楚知悉架構的缺陷,知道當現有架構出現問題時,如何優化。他們注重性能,深入研究各種周邊技術。
例如 PHP 領域大拿鳥哥(博客 http://www.laruence.com/) 。鳥哥是 PHP 開發組核心成員,PHP7 主要開發者,?Yaf(C 寫的 PHP 框架),?Yar,?Yac 等開源項目作者。
### 舞臺各異
應用型工程師 信條是『天下武功唯快不破』,擅長項目的快速開發和迭代。因此他們比較適合開疆擴土、快速推進商業項目上線的場景,創業公司尤其喜歡這類員工。他們也更能適應需求多變,技術堆棧靈活的工作狀態。
科研型工程師 相對比來講比較穩扎穩打。他們比較適合大公司。大公司一般都有比較穩定的盈利模式,商業邏輯變動一般不會不大,也就是說產品穩定。技術部門本著『不求有功但求無過』的思路,底層技術架構很少做太大的變動,再加上用戶基數大(大流量)帶來的高壓環境,為深入研究技術提供了需求和條件,大公司也是培養 科研型工程師 人才的沃土。
### 如何選擇方向
決策的因素會有很多,例如個人喜好、特長什么(例如有些人邏輯推理能力強,有些人數學好,有人產品意識高),這些我們就不展開了。
這里推薦從自己的目標出發,也就是 :
>你學編程的終極目標是為了啥?
如果你學編程就是為了以后某一天可以出來創業(你怎么這么想不開啊),做技術合伙人或者自己主導創業,然后走向人生巔峰 ~_~。大部分初創的科技公司技術負責人必備技能是:組建技術團隊,并帶領他們推進產品上線和快速迭代,熟知各種互聯網產品的功能,以及清楚地知道這些功能的開發難度,懂得在開發效率和商業機會上權衡,懂得如何避坑。那么推薦你從現在把自己定位為 應用型工程師 ,然后開始積累項目經驗。可以理解為打怪升級,不惜一切代價接觸新項目,積累一個個的項目經驗,10 個項目算畢業,30 個項目算資深。
如果你的目標是進大公司,也就是抱大腿走穩定路線,那么推薦你把自己定位為 科研型工程師。從今天開始死磕文檔,把主要相關技術文檔看很多遍,閱讀各大開源項目的源碼,可以嘗試參與源碼貢獻和改進,或者寫一些高性能的原生擴展。
### 怎么樣才算熟練掌握了這一門技術?
方向選好后,就好辦多了。
如果你是 應用型工程師 ,那么在你做了幾十個項目后,一般項目中經常用到的技術,你都很熟練了,并且隨著每一個項目經驗的累積,眼界的提高,你也會越來越自信。
如果是 科研型工程師,不斷深入,窮源竟委,長此以往數年后必會有所建樹。屆時你的深入細致的博文,或者技術文獻,或者開源影響力,都會成為你驕傲的成本,自然也就不會有『算不算掌握了 XXX』的疑惑了。
## 廣度為輔,深度為主
記得之前看過一篇文章,說作者在初入開發的時候,技術總監和他說,如果你能確定一個方向,比如數據庫,那么持續學習5年以后,就是一個數據庫專家。這個作者就真的堅持下去了,若干年后,他的很多同事還是各種語言都會寫helloWorld的工程師的時候,他已經是數據庫方面的專家了。
### 1.廣度為輔,深度為主
人生、時間有限,我們不可能精通所有的技術,但我們可以努力地精通工作相關的、有前景的、感興趣的技術。
### 2.基礎扎實,深入底層
只是解決工作上的問題是遠遠不夠的,應該在工作之余去學習更底層的技術,所謂知其然還得知其所以然。比如說我們使用java做開發,僅僅會使用是不夠的,我們還得再理解JVM的原理等,多多思考:為什么要這樣用?怎么實現的?還有更好的辦法去實現嗎?
### 3.觸類旁通,適度學習
學任何的知識都要形成一個體系,才能學得深,記得牢。
## T 型人才
什么是T型人才呢?
T型人才是指按知識結構區分出來的一種新型人才類型。用字母“T”來表示他們的知識結構特點。“—”表示有廣博的知識面,“|”表示知識的深度。兩者的結合,既有較深的專業知識,又有廣博的知識面,這類集深與博于一身的人才。
如何成為一個T型人才,大家常用的一種方式就是輪崗。輪崗的意思是,當你成為某一方面的專家后,跳出自己的舒適區,轉而到一個新的技術領域從頭學起。輪崗的意思絕不是在一個技術方向上三心二意,每一次轉換技術方向,都應該是對前一個技術方向至少做到熟練掌握的程度才行,而我自己覺得,不經過1-2年的實踐,很難稱作熟練掌握。所以,輪崗的行為是低頻的。
如何正確的做一個技術 T 型人才,這兒有一些建議:
1.制定自己的職業發展路線;
2.技術和興趣結合;
3.選擇熱門、成熟的技術。
最后,借用莎士比亞的一句話:笨蛋自以為聰明,聰明人才知道自己是笨蛋。做技術先有深度,再有廣度,然后腳踏實地的去做!
## 如果要放棄技術,如何優雅的從技術轉產品呢
不考慮,不支持,沒有建議。
參考:
https://learnku.com/articles/37834
https://blog.csdn.net/qq\_36330643/article/details/82820377