寬泛的意義上講,程序員是這樣一群人:他們用某種語言或技術,開發某種軟件產品(系統),解決特定現實領域的問題。
有了這個定義,我們就可以來討論程序員的幾種常見定位:
解決某類問題的專業人士
軟件架構與設計
技術專家
技術傳播與布道
解決問題的人
我到底能夠解決什么問題?給別人帶來什么樣的方便?
這是每個程序員首先要考慮的問題。這決定了你要在什么樣的領域、什么樣的公司工作,決定了你做什么產品,也決定了你要選擇什么技術。
比如你想提升遠程辦公的效率,那可能就會去做與協同辦公、溝通、項目管理等相關的產品,像Slack、TeamViewer、蜜蜂(全時的產品)、釘釘等。
比如你想解決訪問國外網站的問題,那可能會去做VPN類產品;
王江民想解決安全問題,結果單人獨騎白衣飄飄,帶著江民殺毒在中關村創造了一場神話。
當年梁肇新想解決電腦播放VCD、DVD的問題,于是就有了豪杰超級解霸的傳奇。
張小龍想解決郵件收發與管理的問題,才有了Foxmail,有了Foxmail的成功,才有了后來進入騰訊,才有了微信。
……
一旦你把自己定位成解決某一類問題的人,聚焦到某一個領域的具體問題,那么接下來的一切都順理成章,你會很容易就能了解到解決這類問題需要什么知識、業務、技術,然后你就可以充滿動力地去學習,去準備。
當然,你也可能因此脫離具體的技術去做管理工作,甚至去創業,用你的技術來打造能夠解決特定問題的產品或服務。
所以,這個定位其實是一種元定位,可以衍生出其它的方向。
軟件架構與設計
相對于把自己定位成解決某類問題的人,有的朋友可能更感興趣如何做出一個復雜的軟件系統,對實現這個系統的過程更感興趣,也愿意不斷去設計、實現各種各樣復雜的系統,反復地挑戰自己。
那他可能給自己的定位是架構與設計。
這也是很多程序員的夢想:做一個真正牛B的架構師,體驗運籌帷幄與庖丁解牛帶來的超強成就感。
比如你定位到大型網站的架構與設計。那你就可能去學習Java、http、數據庫、分布式、云計算、大數據、Docker等各種技術,以及常見的網站架構(參考李智慧《大型網站技術架構:核心原理與案例分析》),然后到一個正在發展(或者已具規模)的電商類公司去跟著公司一起成長,鑄就自己的架構之路。
技術專家
就像教育的目的是為了讓每個人都成為自己想成為的樣子,但實際上教育本身卻成了一種產業,考試也成了一種產業。軟件開發也是類似的:技術是用來創造軟件系統(產品)以便解決現實問題的,但實際上圍繞技術本身也形成了新的產業。
比如技術培訓,比如各種技術認證,比如技術圖書……
所以,也有很多程序員把自己定位在技術本身,寄望于成為某一個特定技術領域的專家,建立自己的頂端優勢,從而成就自己。
比如有的人專攻Hadoop,有的人專攻Docker,有的人就是把OpenGL用的很溜,有的人在視頻編碼上有很深的造詣,還有的人成了Go語言專家,還有的人調試技術特別牛(比如《軟件調試》和《格蠹匯編》的作者張銀奎,膜拜一下)……
當你在某個技術領域有深入的研究,形成了優勢,你就可以把這種扎根于技術的優勢復制到各種領域去解決各種問題。這也是非常好的道路。
技術傳播與布道
我想來想去,自己的位置非常尷尬……
因為我既沒有把自己定位到解決什么問題上,也沒有成為架構師,更沒有在某個領域成為骨灰級專家……
所以我只好安慰自己說,Ok,我想做的是:如何更好地幫助初學者學會一種技術,跨越從不了解到會應用這種技術解決問題的過程。
Ok,這就是技術傳播與布道的定位了。
所以,從這個定位出發,我會寫一些入門級的博客文章,講述某種語言、某個技術點如何用,什么包括環境配置等不那么有技術含量的文章,也會寫一些技術圖書來幫助別人(比如《Qt Quick核心編程》和《Qt on Android核心編程》),然后我還錄了一些入門級的視頻課程……
當然這個定位也可能催生一些產品,類似Codecademy、計蒜客、萌碼、慕課等。
我有一段曾經迷惑過:作為有多年開發經驗的程序員,還在博客上撰寫入門級的技術文章,合適嗎?當我用這個定位合理化了自己的行為后,居然不困惑了。
程序員的迷茫與解脫
很多程序員都很迷茫,學了一兩門語言,做了三五年開發,不知道接下來該怎么辦。
這就是定位的問題:找不到自己的定位,是迷茫的根源。
現實情況是很多人說自己是Java開發,前端開發,C++開發,但你真的是把自己定位到語言與技術這個層面了嗎?還是說,你其實并不打算成為技術產業的一份子,只是除了“熟悉某種技術”,并不知道自己要走向哪里?
請思考一下,在信息的汪洋大海中遨游時,你的方向在哪里?
……
當你把自己定位成技術專家,那你就會努力在某個方向上建立自己的知識圖譜,形成頂端優勢。這條路漫長而艱難,可能三年五年,也可能八年十年。比如李飛飛聚焦在圖像識別這個方向,取得了令人矚目的成就,現在正在把圖像識別嫁接到各種領域去解決實際的問題。
……
當你把自己定位成解決問題的人,那Java、C++、Spark、Docker、區塊鏈這類技術層面的東西,就不再會困擾你,需要什么,你可能就會去學習什么,你培養的,是自己解決問題的思維和框架,是拿到任何的問題,都能快速發現解決之道。
這種定位,還可能會引領你走出具體的技術工作,轉型去做管理,因為帶領一個團隊,可能會更有助于你去解決更大更復雜的問題。
……
定位能夠產生目標,目標會讓你聚焦在一個方向上,遠離迷茫。所以,只要你根據自身的實際情況,找好定位,就擁有了擺脫迷茫的銀彈。
最后,送一張圖,供定位時參考:
-
程序員
+關注
關注
4文章
953瀏覽量
29822
發布評論請先 登錄
相關推薦
評論