你的護城河在哪?老程序員的一些2016感悟


由於工作職位關系,在公司一直做一些技術儲備工作。沒有實際的開發任務,只是多看一些新東西,萬一有需求可以出解決方案。
回顧2016,從前端開發到移動,從算法到機器學習,自然語言處理等,看過的東西很多很雜。

我一直有個疑問,什么才叫技術好?其實技術好,可能是個偽概念。
一門語言,一個方向,大部分人的水平都差不多,只是熟練度,知識廣度的問題。
C#,有人可以用極其簡單的Linq寫出很復雜的功能,有人要使用大段大段的代碼來實現相同的功能。
之間的差距就是,前者熟悉Linq,后者不熟悉(熟練度不夠)或者根本不知道Linq(廣度不夠)。
很多情況下,后者如果不是很差勁,后者其實可以通過培訓做到和前者相同的事情。

那么,如果技術可以通過培訓就能獲得提升,那么,老程序員的護城河在哪里?
一個畢業生,通過不斷的學習一門語言,大量的練習,就能寫出代碼了,老程序員的價值在哪?

1.技術整合和全棧技能

可以很負責任的說,老程序員在某個領域的90%的知識,新人可以很快速的掌握。但是新人無法很快速的將所有知識整合起來,靈活使用。
例如,一個抓取網站數據的程序,其實這里牽涉到HTTP協議,HTML和DOM知識,異步和並發,數據存儲等問題。
如果這個程序出了問題,老程序員可以快速判斷錯誤的位置和解決方法,新人可能要耗費很多時間。(有些權限,異步的問題,新人可能根本沒有概念)
所以,知識儲備要有一定的廣度。

2.某個領域的深度

這個在數據庫領域特別重要。建數據庫,建表,查詢,這些都是只要肯百度就可以的。
但是,往往資深DBA,思考的是,索引的類型是否正確,索引的字段是否正確,SQL語句是否優化。集群,主從備份的參數是否妥當等等。
(在做MongoCola的時候,我幾乎將所有的MongoDB的用戶手冊看了一遍。MongoDB要真正精通,其實很難的。)
如果你長期操作MySql,Oracle,能夠將這些數據庫的精髓都學到,變成專家,也是可喜可賀的事情。
(數據優化,參數設定,故障恢復,都是以時薪計算的)

3.觀念的改變

新人和老司機,在很多觀念上不同。

對於一個新人來說,總覺得程序能做到100%正確,能夠看到畫面,是很牛逼的事情。
開發一個手機APP,正確排序一堆數據,很不錯啊。

其實,真正難的程序,往往是那些不可能做出最優解的問題。也就是所謂的PN問題。
沒有最優解,說明這個問題往往是隨着規模增大,算法的復制度高的硬件無法承受了。(今年的天池算法比賽的題目就是這樣一道NP問題)
在機器學習和自然語言處理領域,更加如此,這些領域都只能求得正確可能性最高的答案。(滴滴出行的大數據比賽,我也參加了)
在加密解密上,包括Hash算法上,工業標准也並非100%要求正確,有些Hash算法,在時間空間上要求很高的前提下,允許百萬分之一的錯誤率的。
例如,爬蟲在考慮哪些網址爬過的算法上,往往把網址通過MD5等算法,轉換為數字指紋,這個指紋,其實做不到100%正確的。

其實,真正難的程序,往往是那些沒有任何界面的庫,比如gensim(NLP),scipy(ML),MeCab(日語分詞)這樣的東西。
這些庫沒有辦法在朋友面前演示,沒有好看的界面,但是,這些庫踏踏實實是很多項目的基石。(這里沒有貶低很多GUI庫的意思,Bootstrape這樣的皮膚也很重要)

4.多個解決方案和隨機應變

新手處理Excel,可能只會VBA。
老手處理Excel,可以用C#操作,可以用NPOI這樣的庫。可以調用VBA的宏。
很多時候,解決方案有很多,正確的解決方案,最優的解決方案,需要大量的經驗。

我的護城河在哪?涉獵很多領域,深耕某個領域

在信息爆炸的時代,沒有什么技術壁壘。Python,Nodejs,React,NLP,只要你想研究,資料滿天飛。
如果有時間,各種技術最好都能看一下,知道這個技術的使用場景,優點,缺點。這樣就可以了。
大部分技術,看一下用戶手冊,API函數一調就可以跑了。如果沒有需求,沒有必要去深入學習。
知識豐富之后,你可以快速的制定一個最優的解決方案,以及多個備選方案。
和別人交流的時候,不會被別人忽悠,不會無法理解對方的想法。

但是,如果你立志於在某個領域變成不可或缺的人。就必須從基礎上認認真真學習。
例如,機器學習方向,
100%的人,都會調用Python的Package,
95%的人,知道回歸,聚類背后的理論知識,
80%的人,知道拉格朗日和對偶算法。
50%的人知道怎么一步步推導公式。
但是再深入下去,如何調整參數,如何活用LDA模型,這樣的大牛很少了。
要知道這些,閱讀大量的論文,做大量的研究,跑大量的數據,必須這樣做,沒有捷徑。
只有這樣的人,才能獲得 養兵千日用兵一時 的待遇。平時積累經驗,需要的時候,為公司一錘定音。
當然,大牛,有些關鍵知識,請自行做好保密工作。有些東西說破就不靈了。世道艱險,自我保護不可少。

當然,以上這些有個前提:學習自己喜歡的東西,注意保養自己的身體。
年初在接觸React Native這樣的東西的時候,我覺得很前衛。等到我學習機器學習,自然語言處理后,我發現,這些才是最前衛的。
可惜園子里面的機器學習氛圍不好,很多文章閱讀數不過百。再過幾年,將是機器學習的天下,大家應該開始轉型了。
機器學習,入門難,學好難,但是真的學好了,高薪高待遇容易。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM