這是我看過最精彩的回答

来源:http://www.cnblogs.com/salam/archive/2016/03/19/5295176.html
-Advertisement-
Play Games

或許我沒見過世面,但是這卻是我看過對“怎麼成為一個優秀的程式員,而不是一個優秀的碼農?”最精彩的回答【全部複製粘貼】 其實我的心一直因為現在的工作【餐飲服務】而動搖,忽而想學網站,忽而c語言根基,忽而c#忽而java Android方向,然而當讀到這個問答時,我堅定我所喜歡的iOS,不管結局如何(一


  或許我沒見過世面,但是這卻是我看過對“怎麼成為一個優秀的程式員,而不是一個優秀的碼農?”最精彩的回答【全部複製粘貼】

其實我的心一直因為現在的工作【餐飲服務】而動搖,忽而想學網站,忽而c語言根基,忽而c#忽而java Android方向,然而當讀到這個問答時,我堅定我所喜歡的iOS,不管結局如何(一輩子餐飲服務,一輩子底層,一輩子沒法從事軟體行業)

優秀的程式員會告訴你打根基的重要性,會勸你在厚積薄發前要隱忍。

優秀的碼農會告訴你學啥底層、啥啥啥一拖就好了,學了python還要啥自行車啊,數據結構排序函數二分搜索這不都內置了嗎?工作中永遠用不到,學演算法有啥用啊?成為高手有很多種方法彙編是個屁啊?



+++基礎的分割線+++


列舉幾個我認為比較重要的根基並附入門書

編程語言,《程式設計語言-實踐之路》《concepts of programming languages》

電腦通用知識,《csapp》

演算法、數據結構,《演算法導論》

程式設計、結構,沒有書推薦

軟體工程,這個詞大家理解不同,我以為,《人月》《代碼大全》《the pragmatic programmer》《sicp》、講測試講重構的都是軟體工程,其實上面設計模式也是軟體工程,哈哈


這些書,初時讀來感覺全無作用,而且要讀多次才能體會其中意味,所以叫它根基也是十分合適,你根基越深才能爬得越高嘛。




+++方向的分割線+++


啥是優秀程式員?

記者和很多網民說熊貓燒香作者是高手

公司里你出什麼bug他都能告訴你原因用什麼軟體有問題他都能回答你的你就覺得是高手

有人說徒手做產品的全棧才是高手

各語言的作者都是高手

有不寫代碼,扔出一個restful論文的

還有人說高德納是神,他如果是神,那他那些代碼一定是在考驗我們,嗯

。。。。

上面這些的確都算是高手,我琢磨著前兩年被開掉的moto公司員工里肯定也有做功能機的高手和寫廉價板驅動的高手


你想自己選自己的方向還是被人忽悠方向?

我的想法是自己都嘗試玩玩,然後做自己喜歡的方向。當然,程式員的生態金字塔是上面做工具、基礎設施給下麵人用來給普通人編程式,所以你選方向可以參考一下這個金字塔模型




+++爬坑的分割線+++


方向定下,然後就是做事了,一大誤區就是 【追求最好的東西】,於是非得弄清楚:

  • php是最好的語言嗎?
  • OpenGL比directx差嗎?
  • 程式員要先學數學嗎?
  • 最好的c語言書是譚浩強寫的嗎?
  • 放屁要先脫褲子嗎?
  • linux發行版那麼多該選哪個?
  • 某大牛說IDE不如編輯器
  • 聽說黑客都是用記事本寫程式的
  • C#是升調記號應該讀csharp而java不應念 [加wa(輕聲)]
  • 。。。

如果你是一個*nix世界的玩家的話,你應該知道有一個jargon來上面的毛病,叫yak-shaving,我以前提過幾次yak-shaving,但是很多人看不懂,它的字面意思是Any seemingly pointless activity which is actually necessary to solve a problem which solves a problem which, several levels of recursion later, solves the real problem you're working on.

但一般都引申其意使用它,我這裡舉例一下:

你本來要打開軟體寫一個helloworld,軟體提示你升級,你點了升級,提示你xx庫不夠新,然後你更新xx庫,提示你要升級yy驅動,然後你升級yy驅動,系統告訴你要編譯這個驅動,你必須下載s.f版本的編譯器和庫,你更新編譯器,系統說s.f版本編譯器必須在e.n系統上運行,然後你就升級系統了,幾個小時過去,你發現系統升級導致了幾個軟體損壞,然後你更新那些軟體,去找解決問題的方法,不知不覺到了半夜,你累成了狗,卻發現問題還有一大堆,而helloworld也沒寫成。。。。


這些問題我都遇到過,我的建議是挑一本大牛說的書就是了,看會了其他也會了。當然,如果你不幸不認識大牛(都上知乎了只要會搜索這種事情不可能發生),或者單純好奇——就像我當年那樣的話,那就每種都試試,不過有的答案你自己知道就好,像是編輯器emacs比vim更好,寫程式ide比編輯器更好這種話,你是不應該亂說出來的。

對了,像是不同範式的編程語言、不同的開發環境是應該嘗試體驗一下的,不過這種建議書上都寫了,我這裡說顯得有些廢話了。


所以說,不能被無關的東西弄偏了目標,要專註,堅持。

等你學深了一門語言,就算是學另一們其他範式的語言也不會太難,你學會了opengl,dx也就看看就能寫了。


你看看武俠小說里,段譽就是一個傻逼,仗著有時發出有時發不出的脈衝波和繞圈圈就能快跑直線的bug技就加上一門佛學能獨步武林最終迎娶了白富美,出任了CEO,走向了人生巔峰,喬峰永遠是一招降龍十八掌,更誇張。而慕容覆文武雙才,基本精通天下武學,每天讀書4時辰練功4時辰,論用功誰能和他比啊。。。可到了30多歲還是一事無成,pk連段譽這種新手都搞不過,最後被人搶了老婆,就是因為方向不對,而且太不專註了。

所以求多不如求專,深度到了,再花20%的時間去擴展一下廣度即可。




+++重要的分割線+++


以上東西你都做好了,要花個2年時間的樣子,對於學生來說,如果你有一個好的學校背景,人生可以就此揚帆起步了

但這不是終點,俗話說人靠衣裝,美靠包裝。包裝是門學問,這裡的包裝不是讓你西裝領帶亮皮鞋黑絲套裙白襯衫整一個營銷狗hr的造型,是說專業技能上的包裝。


為什麼這是最重要的部分呢?因為別人一般不和你說這麼多,尤其是懂得包裝的人,更不會傳你這些不傳之秘啦。。。。。


包裝自己的第一步是提高實力

沒有實力的包裝那是空中樓閣,只能靠每天日常搞外包的忽悠架構大數據云計算過活,明眼人也能看出來,所以純屬作秀,沒有意義。

在某個領域(編譯器、虛擬機、開發架構、前端。。。)成為專家(專家的定義嘛,,我的理解是能在簡歷里寫精通)後,包裝的實力就算具備了。


包裝的第二步是定位

提到美國會有一大堆人跳出來說是人類的希望民主的大救星,提到google就是最純的技術公司不作惡、軟體業的翹楚開發界的標桿、心美人美白蓮花。。。哪怕你列舉google賣假藥、惡意打壓yelp、挾持web標準等等等等這些事,他們也會說百度更差(咦這不5角錢常用的語句嗎怎麼被民主進步人士盜取了?。。。),可我根本沒提到百度好嗎。。。

這全是包裝造成的,所以包裝的巨大威力,以此可窺之。


google是搜索引擎,百度難道也說自己是搜索引擎?不,百度說自己是最懂中文的搜索引擎。。。哈哈哈,你別笑,這的確很管用,就像google說自己不作惡是好女孩一樣。


程式員的包裝定位,無非稀缺和獨特這兩點。物以稀為貴,稀缺就是要做到不可替代,這很好理解,比如你知道世界第一高峰是珠穆朗瑪峰,如果沒看過禪師精選集你很難知道第二高峰是喬戈里峰,但文青特別偏好乞力馬扎羅山,不爬不跟你結婚,為啥?獨特性嘛。。。我不跟你比高,我和你比文化底蘊,於是就贏了。


由於你有實力,所以你應該儘量把自己的實力包裝成稀缺屬性,你是專家嘛。。然後你實力多,應該把獨特的實力包裝出來,避免和他人共同曝光,以免被人壓在身下。


我說一個我朋友包裝自己的故事,他進公司接手了一個項目,已經是被隔壁組開發了3,4個月的一個軟體,其實這軟體2個月也能做好的,但是隔壁人忙而且也不上心,不熟悉這個技術,加上又不是自己的老闆,所以做事拖沓了那麼久才做好。他接手後一刻沒閑,晚上帶回家也做,做到半夜,10天做成,然後整個公司的人都知道他的名字了,他也就立穩腳跟了。

這個包裝的主題是,技術實力強,開發速度快。


包裝的第三步是推廣

推廣就是讓人知道你做得好,強化你的個人品牌,可以用博客、知乎、mailing-list、github等,通過寫文章、參加線下聚會演講、回答問題、幫助他人等方法。這個用好了是門學問,用不好就是裝逼,不展開了。。。

記住不要匿名,匿名你基本啥也得不到


有人明明技術實力強,但是由於沒有包裝好,或被埋沒了才能,或被貼上了各種不應該有的標簽,或被人偏見看待。比如 趙劼 的c#和 vczh 的微軟標簽

有人明明實力一般,但是善於鼓動小白,包裝得好,所以有一批忠實粉絲,這種人我都不太敢說名字了,呵呵。。

所以優秀的程式員應該善用包裝啊




+++結尾的分割線+++


上面說了那麼多,但是堅持做來需要不少推動力,有人能考上清華,但是也能在大學墮落,有人能取得成績,但是也會固步自封。。

要想優秀,得有巨大的推動力,你為啥想成為優秀的程式員?你的推動力是什麼?


好比,我們說,嫖娼是有巨大道德壓力、金錢壓力和風險的事情,為啥知乎上那麼多嫖客樂此不疲並努力給自己洗腦合理化這件事呢?因為在他們的眼中嫖娼是最有趣的事情、是不吃飯不睡覺也不能不做的事情、是不做就活著沒勁的事,有了這種死也要死在床上的精神,還怕什麼呢?


這就是推動力



作者:蕭井陌
鏈接:http://www.zhihu.com/question/22032651/answer/30474626
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。               致敬!   感謝!   最後還是想說出自己的心酸,我只是想找一份軟體開發工作,不要求什麼高薪,咋就那麼難呢?難道不善於表達的人真的很難發展嗎?                 好吧,不抱怨了,還是繼續學習隱忍和集中思想吧~
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在寫網頁過程中,會遇到這種需要多個圖標展示: 如上圖中的「女裝」文字左邊的圖標。容易想到的解決方法是為每張圖片加入<img>標簽,但這樣做會增加HTTP請求數量,影響網站載入速度。比這更優的解決方案是:雪碧圖sprite。 所謂雪碧圖就是把我們所需要的所有小圖片用CSS sprite或者PS工具拼接
  • 1、讓用戶輸入兩個數字,然後輸出相加的結果。 *prompt() 方法用於顯示可提示用戶進行輸入的對話框。 語法: 說明: 如果用戶單擊提示框的取消按鈕,則返回 null。如果用戶單擊確認按鈕,則返回輸入欄位當前顯示的文本。 在用戶點擊確定按鈕或取消按鈕把對話框關閉之前,它將阻止用戶對瀏覽器的所有輸
  • 三種情況:1、行內元素(文本、圖片等) 給父元素設置text-align:center;來實現 2、定寬塊狀元素 3、不定寬塊狀元素(3種方法) (1)為需要水平居中的元素加table標簽;然後為table設置樣式: table{margin:0 auto;} (2)將塊級元素轉換為內聯元素(eg:
  • 引言 使用JavaScript能夠完整迅速做出Web應用程式,目前一套工具包括MongoDB、ExpressJS,AngularJS和Node.js越來越受到歡迎,其開發的靈活性和易用性加快開發效率,簡化開發者的工作。 在今天你有很多架構可以選擇建立一個Web應用,你需要的是快速開發,提高效率和註重
  • 整理了JavaScript中函數Function的各種,感覺函數就是一大對象啊,各種知識點都能牽扯進來,不單單是 Function 這個本身原生的引用類型的各種用法,還包含執行環境,作用域,閉包,上下文,私有變數等知識點的深入理解。 函數中的return Function類型函數實際上是對象,每個函
  • 問題 在ios 9中使用HTTP請求,Xcode就會拋出下麵的Exception: App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary
  • 管理範圍: 管理任何繼承NSObject的對象,對其他的基本數據類型無 效 本質原因是因為對象和其他數據類型在系統中的存儲空間不一樣,其它局部變數主要存放於 棧中,而對象存儲於堆中,當代碼塊結束時這個代碼塊中涉及的所有局部變數會被回收,指 向對象的指針也被回收,此時對象已經沒有指針指向,但依然存在於
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...