【知乎】怎么成为一个优秀的程序员,而不是一个优秀的码农?
怎么成為一個優秀的程序員,而不是一個優秀的碼農?
9 條評論? 分享 默認排序按時間排序98 個回答
3844贊同反對,不會顯示你的姓名 蕭井陌?微信公眾號:煉瓜研究所 技術社區 … 3844?人贊同優秀的程序員會告訴你打根基的重要性,會勸你在厚積薄發前要隱忍。
優秀的碼農會告訴你學啥底層、啥啥啥一拖就好了,學了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?的微軟標簽
有人明明實力一般,但是善于鼓動小白,包裝得好,所以有一批忠實粉絲,這種人我都不太敢說名字了,呵呵。。
所以優秀的程序員應該善用包裝啊
+++結尾的分割線+++
上面說了那么多,但是堅持做來需要不少推動力,有人能考上清華,但是也能在大學墮落,有人能取得成績,但是也會固步自封。。
要想優秀,得有巨大的推動力,你為啥想成為優秀的程序員?你的推動力是什么?
好比,我們說,嫖娼是有巨大道德壓力、金錢壓力和風險的事情,為啥知乎上那么多嫖客樂此不疲并努力給自己洗腦合理化這件事呢?因為在他們的眼中嫖娼是最有趣的事情、是不吃飯不睡覺也不能不做的事情、是不做就活著沒勁的事,有了這種死也要死在床上的精神,還怕什么呢?
這就是推動力
編輯于 2014-10-21?129 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 收起 104贊同反對,不會顯示你的姓名 子柳?重度網癮患者,尚未放棄治療 104?人贊同 我見到的優秀的程序員多數是“隨著一個迅速發展的企業一起迅速成長起來的”。學校里教不了多少東西,一味看書也無法理解復雜的場景,唯有在實踐中鍛煉,不停的解決問題。在企業發展中不掉隊,最好是走在隊伍前面。(很多掉隊的轉做PM了) 發布于 2015-08-26?21 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 141贊同反對,不會顯示你的姓名 知乎用戶?less is more 141?人贊同 思考需求設計六小時,動手碼字測試兩小時。如果工作時間是八小時。 發布于 2015-08-21?22 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 766贊同反對,不會顯示你的姓名 李運華?10年軟件開發,Java、C/C++、Linux、MySQ… 766?人贊同 那些一上來就數學、算法、人工智能、編譯原理。。。。。。balabala的答主,你們現在回去大學考試,微積分、圖論、編譯原理等學科,能考80分以上么?你們有自己實現過B-tree算法么?你們有自己實現過linux tcp協議棧么?
我敢打賭99.99%的人都不敢拍著胸脯說自己能做到,所以不分領域不分場景,上來就算法、數學很重要的都是耍流氓!!!
程序員是一個很寬泛的統稱,嵌入式程序員也是程序員、ios程序員也是程序員、linux內核開發也是程序員、Oracle開發也是程序員、應用服務開發也是程序員,試圖以一個標準來統一這些程序員的優秀特征,就是耍流氓!!
比如說:嵌入式程序員對系統內核、數學、匯編可能就要求較高,但是對于和用戶溝通交流的溝通力、理解力要求就不那么高,因為嵌入式更多都是和底層打交道;而像我這種應用服務開發程序員,更多是和用戶打交道,內核和數學理解基本原理即可(知道什么時候用Map,什么時候用List就可),匯編完全就挨不著邊,但對于和用戶(包括外部用戶、內部用戶例如產品、測試等)交流時的溝通力、理解力要求很高。你數學拿國際奧賽金牌、linux內核源碼度過三遍?。。。。。。然并卵,沒有理解客戶的需求,你做的再牛,最終都是錯的,都是垃圾!
即使我非常推崇的《UNIX編程藝術》一書中,很多原理其實也只是適合某些場景,并不是放之四海皆準。例如其中一條原則“清晰性”,就不適合PHP內核這種開發場景,PHP內核中的Hash函數的循環,是寫了7 ~8 條重復的語句,以達到高性能。
所以世界上根本沒有具體統一的優秀成員的標準,如果真要給出一個標準,那我就只能給出一個比較抽象的標準了:
1)充分了解你所在的行業的特點和要求,并全力去滿足
千萬別做著嵌入式,卻按照應用服務開發的標準去要求自己
2)不斷學習和提升,而不是滿足于完成目前的工作
碼農滿足于完成目前的工作,優秀程序員時刻準備著將來更有挑戰力的工作
3)能夠動用一切方法和手段,去解決你所在行業遇到的疑難雜癥
完成需求和解決問題對人的綜合素質要求相差不止10倍。例如,線上服務器響應慢,一個很簡單的現象,但可能原因太多了:服務器負載高、磁盤慢、沒內存了、數據庫慢查詢、數據庫磁盤壞了、程序死循環、jvm fgc、網絡抖動、黑客攻擊、流量暴漲(例如秒殺活動)。。。。。。在這么多可能原因中快速定位真正的原因,和寫1000行代碼的要求完全不一樣
===============2015.08.27補充=====================
有的評論的同學可能對我的回答有誤解,或者說我還沒有表述清楚,這里再補充一下:
1)我不是說數學、算法一定不重要,我是說要看行業和領域
數學和算法在大數據分析、圖像識別、內核開發等領域非常重要,其實不能說重要還是不重要,在這些領域,數學和算法是基本要求,這個都不懂,那基本上就玩不轉,連碼農都沒得當。
但數學、算法在應用服務開發領域,在APP開發領域就不會有那么高的要求。當然沒有那么高的要求 != 完全沒有要求,理解問題的時候不要走極端
2)我不是說基礎不重要,我是說不同行業和方向基礎要求不一樣
打籃球、踢足球、打臺球、扔鐵餅、110米欄。。。。。。哪個都對基礎要求很高,但喬丹不會按照110米欄的要求去加強基礎,丁俊暉也不會按照梅西的要求來提升基礎。
假如有人問”優秀的運動員和普通的運動員差異在哪里?“,你會說:速度、力量、敏捷、耐力這些指標么?
3)有人說國內面試都這樣,所以這些很重要
我只能說這是國內的現象(或者國外也一樣吧,免得有人吹毛求疵),但并不認為這就是正確的,面試的內容如果和工作無關,吃虧在后頭,我就吃過虧,面試的時候對答如流,入職后發現完全不滿足工作要求
==========2015.08.31補充===============
還是有人沒有很好的理解我的意思,我給個實例吧,看看所謂的“基礎”到底有多少層。
我以最廣泛的java為例吧,因為java使用范圍最廣,幾乎每個程序員或多或少都會了解一些。
1)掌握java的基本語法和公共庫,能夠完成最簡單的基本業務開發
2)熟練掌握java的高級用法:nio、多線程等,能夠完成較為復雜的業務開發
3)掌握jvm的基本原理,能夠進行jvm調優
4)掌握java虛擬機的原理
5)掌握java虛擬機的原理,并能夠開發基于虛擬機的編程語言,例如scala等
6)熟悉hotspot的源碼
7)熟悉hotspot的源碼,能夠開發hotspot功能
8)能夠優化或者重構hotspot代碼
9)熟練掌握編譯原理
10)熟練掌握編譯原理的數學知識
11)能夠使用flex和bison開發編程語言
12)能夠開發和優化flex和bison
。。。。。。
20)能夠將編程語言翻譯成匯編
21)能夠將匯編翻譯為機器碼(包括X86、spark等cpu)
。。。。。。
30)熟悉cpu架構
。。。。。。。。
那些不區分場景,不區分行業,上來就告訴別人數學和算法很重要,或者說基礎很重要的人,請按照以上的描述來對應自己的“基礎”,看看你的基礎到底能夠達到什么程度。
================2015.09.04補充========================
正好看到知乎的一個問題:你碰到過的最難調的 Bug 是什么樣的? - 互聯網
那些說基礎牛逼的大神做啥都牛逼、數學和算法好就能秒殺一切、高斯林來做ios app開發分分鐘鐘秒殺其他人。。。。。。等等的各位,請看看上面這個知乎問答吧,里面有各行各業各個領域的回答 編輯于 2015-09-04?93 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 3贊同反對,不會顯示你的姓名 fantiny?碼農 3?人贊同
- 個人職業技能水平(就是大家強調的程序員基本功——數據結構,算法,設計等)
- 專精的深入方向(能夠為自己站穩腳跟打下堅實的基礎)
- 軟件專業職業素質(就是軟件工程那一套的基本工作方法和配套效率工具)
- 一般職業素質(就是如何和人溝通合作這一套)
- 不斷提高的能力(適應行業快速變化和適應未來發展)
Always be coding.?
Just code it.
分享一個quora的鏈接:David Byttow's answer to Computer Programming: How do you keep your programming skills sharp? 編輯于 2013-12-10?2 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 3贊同反對,不會顯示你的姓名 杜一?攝影/ 生活/ 互聯網 3?人贊同
榜樣的力量是無窮的,作為一個程序員一定要是一個有理想的程序員,一個有夢想的程序員。不要認為自己非常糟糕,技術不怎樣、能力糟糕,每天為了生存而不是生活敲著無窮無盡的代碼。但小人物也可以有大大的夢想,可以自嘲但不能自苦,每個人的成功都不是天成,我們且暫時在別人的成功中暢想,然后編織自己的充實人生。看,這幾個程序員大牛:
計算機之父艾倫·麥席森·圖靈
艾倫·麥席森·圖靈 (Alan Mathison Turing),英國數學家、邏輯學家,計算機之父、人工智能之父。他是計算機邏輯的奠基者,在《論計算機及其在判定問題的應用》論文中,用圖靈機替代了哥德爾的以通用算術為基礎的形式語言。許多人工智能的方法也源自于他,他提出了人工智能的重要衡量標準“圖靈測試”。如今,為紀念他而命名的“圖靈獎”已是計算機界的最高榮譽,這應該是對這個計算機領域傳奇人物最崇高的緬懷。
Hadoop之父Doug Cutting
Doug Cutting是Lucene、Nutch 、Hadoop等項目的發起人,他把高深莫測的搜索技術形成產品,還打造了目前在云計算和大數據領域里如日中天的Hadoop,在這個大數據時代,我們每個人都間接用過他的作品。他研發的Lucene是第一個提供全文文本搜索的開源函數庫,讓搜索引擎被更多人使用成為可能。Google為支持自家的搜索引擎開發的兩個軟件平臺GFS(Google File System)和MapReduce為Hadoop的誕生奠定了條件,其中,GFS用于存儲不同設備所產生的海量數據,MapReduce運行在GFS之上,負責分布式大規模數據。后來,Doug Cutting又在Yahoo!完善了Hadoop。
Amazon AWS推動者Werner Vogels
對于Amazon云計算平臺AWS(Amazon Web Services),稍微了解互聯網的人都不會陌生,它在云計算領域的地位如今依然不可撼動,AWS 對Dropbox、Instagram、Quora等等互聯網成功平臺的貢獻不容忽視,并且讓那些源源不斷的創業團隊受益,有想法的小團隊也能通過AWS低價獲得世界級的運營服務,負擔得起用戶迅速增長的壓力。而Werner Vogels是Amazon的CTO,也是AWS主架構師之一。2000年左右,服務于Reliable Network Solutions公司的Werner Vogels已是頂級的分布系統專家,2004年加入Amazon開始負責Amazon全球的架構設計,以及包括云計算在內的技術創新,在2008年成為AWS架構師之一。
這三位都是計算機領域的大神,也許終其我們一生都無法企及,他們分別因為超凡的創造力、頂級的成功技術、揚名天下的項目而被我們熟知,他們也許不糾結于代碼、不在源源不斷的bug里死去活來,但他們都是成功的程序員,值得我們默默仰慕。海明威說:這個世界不美,但值得我們去奮斗。汲取正能量,讓我們的生活每一天都有不同。
部分內容摘自DevStore,如涉及內容侵權請@我
發布于 2015-02-02?添加評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 99贊同反對,不會顯示你的姓名 Hanyu Liu?會寫點代碼 99?人贊同 優秀碼農,干活,兇猛的干活;優秀程序員,發現問題,解決問題。僅此而已。
好的程序員的基本要求(我認為):
1. 學好數學:高等數學,線性代數,離散數學,算法,圖論(可選),數值方法(可選),優化方法(可選),計算理論(可選);
2. 打好基礎:操作系統,編譯原理,匯編語言,數據庫原理,計算機網絡,密碼學,人工智能;
3. 多動手:至少用面向對象語言(C++/Java)寫5萬行;腳本語言(Perl,Ruby)寫5千行;至少在工作中正確實踐5種設計模式;維護過10萬行代碼的系統;參與過一次大項目的重構(或設計);
4. 多交流: 至少做過3個新人的mentor;參與需求分析和項目計劃的制定;獨立領導過項目的開發進度;能建立在團隊里的威信(人品和技術兩方面);
1和2是一個人在學生時代該干的,本科四年足夠了;工作后干3和4,一般2年也能有所心得,最好能理論聯系實際,做到融會貫通舉一反三。而且要放下“唯代碼獨尊”的優越感,能正確定義開發的目標,并不斷提醒自己這個目標。到此為止,優秀的程序員應該可以出爐了。
有些人可能不同意我的定義,但我認為,優秀的程序員不只是能寫多好的代碼,而是能獨立解決問題(理論加經驗),帶領團隊一起最大限度的實現需求(溝通能力)。代碼只是其中的冰山一角啊。在實踐中,“高效又優美”并不一定是好程序員,因為程序員的一個通病就是追求“代碼完美”,耽誤工期是常有的事,項目經理往往也沒辦法。優秀程序員則能正確做出取舍,做出“deliverable”的產品。優先的干的漂亮,不優先的不鉆牛角尖。畢竟人的精力是有限的,在有限的時間里,做出最好的產品,還是很有講究的。更進一步,好的程序員還要能防微杜漸,通過有效的溝通,了解團隊的走向,并在必要的時候提醒團隊,甚至挺身“填坑”。
PS. 當然,我不是否認代碼的重要性,代碼能力很重要。但再優美的代碼,如果不能“deliverable”,那它又有什么意義?公司給你一個項目,讓你找一百萬個文件中的重復文件,你可以用一個開發周期來做一個超完美的hash function,效率高,碰撞率低...但你這函數不是“deliverable”的,因為他還不能“找一百萬個文件中的重復文件”。這樣的程序員真的優秀么?我認為不是,因為他不分主次。 發布于 2013-12-10?16 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 5贊同反對,不會顯示你的姓名 陳滿硯?程序員里吉他彈得最好的, 吉他手里程序寫… 5?人贊同 這個問題有主觀和客觀因素
客觀因素是,公司想你成為一個好的程序員么?還是他們只是單純的希望你去執行而已?比如outsourcing,或者說公司內部的outsoucring?
又或者說,你有足夠的room去成為一個優秀的程序員么?比如公司有榜樣么?公司給你時間去思考么?等等
主觀因素,你想成為好程序員么?你能犧牲多少打游戲的時間來學習?你有足夠的天賦么?
如果以上都是positive,恭喜你,其實你不用做什么特別的,這本來就是一個水到渠成的事情 發布于 2015-08-29?添加評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 254贊同反對,不會顯示你的姓名 vczh?《C++Primer 5th》強勢審校 254?人贊同 不要浮躁,好好造輪子。我的老板總是跟我說,年輕人不要總是在乎錢,等到你到那個歲數了,自然就有了。后面的你只需要談一個肯跟你結婚的時候還租房子的人就好了(其實這一點都不難,這種妹紙滿大街都是) 發布于 2013-12-10?98 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 5贊同反對,不會顯示你的姓名 呂磊?每一個單身的人得砍頭 5?人贊同 人類和猿類的區別從使用工具開始 發布于 2014-09-13?1 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 19贊同反對,不會顯示你的姓名 王雷?程序員、創業者 - 戎碼一生 19?人贊同 做個程序員并不難,但是少年,你知道代價嗎?
你熟悉各種語言 但你從早到晚不發一言
你精通面向對象 然而你可能還沒有對象
你懂前端后端移動端 但是還是在搬磚
你了解各種框架各種庫 逛街只知優衣庫
Github一片綠 眼睛周圍兩圈黑
Bug修好笑開顏 頸椎腰椎肩周炎
Code提交十萬行 存款不值半間房
系統重構大挪移 臥室只有十平米
程序簡潔精煉 人是大腹便便
網站日活百千萬 頭發脫落一多半
為了編程,這些代價你都愿意承受,那恭喜你,已經成功了一半。
汝能持否? 發布于 2015-08-23?9 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???申請轉載 5贊同反對,不會顯示你的姓名 張翼德?為祖國健康吐槽五十年 5?人贊同 請題主先定義下列概念:
程序員
碼農
優秀的程序員
優秀的碼農
然后……這個問題還有必要回答嗎? 發布于 2014-09-16?添加評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 15贊同反對,不會顯示你的姓名 在好 15?人贊同 程序人生的寂靜歡喜
標題起得太大咯,是在故作老成么?
“程序人生的寂靜歡喜”——怎么看都感覺像是某位已故計算機大師的墓志銘,可卻偏偏被一個菜得摳腳的毛頭小子拿來當做人生寄語——也是日了狗了!
人都沒生過,談什么人生!?
莫怪我,我偏要“奢談”一下!
一.記敘一開始我是拒絕的!因為我根本就不喜歡寫程序。
打高中數理化就不好,什么排列組合、圓錐曲線、電磁場中一帶電粒子、水溶液中的水解電離,困擾我有如夢魘。
高考時,祖墳上冒出一縷青煙,數學創歷史新高考了88,理綜破有史記錄考了200,數據不僅太美太感人,而且大吉大利、元亨利貞!終于,我以總分522分考上了一所夢寐以求的2本就讀于計算機科學與技術1202班——命中犯2!
可是對于編程其實我是拒絕的——大一花了一年的時間來研究心理學,大二花了一年的時間來研究哲學,大三花了一年的時間來研究中醫——結果,《離散數學》掛了,《數字邏輯》掛了,《數據結構》掛了,《編譯原理》掛了——恨不得自掛東南枝!
人在做天在看,出來混總是要還的!曾堅信“天生我才必有用”,“我輩豈是蓬蒿人”;曾篤定“心所愿力畢至”,“有志者事竟成”;曾夙愿“天授其賦必賜其福”,“好風憑借力,送我上青云”。可是,一個冷峻若紫電青霜的問題劈面而來:不寫程序又能干嘛呢?
然而我根本就不會寫程序!試想,一個打字只能用到右手食指、左手食指和左手無名指的人,敲代碼時是多么捉急!試想,一個高數補考考了19分,滿腦子宏大敘事的理科弱智,寫程序時是多么腦洞大開!
后來去公司實習,遇到的第一個項目就是要使用ESFramework通信框架,當我第一眼看到了開發手冊上的如下句子時,我就知道,春天不會再來了!
客戶端通過調用ESPlus.Application.Basic.Passive.IBasicOutter接口對應的方法以及預定其相關的事件,就可以完成基礎功能或得到相關狀態改變通知。我們可以從 ESPlus.Rapid.IRapidPassiveEngine暴露的BasicOutter屬性來獲取IBasicOutter引用。
接口、預定、事件、暴露、屬性、引用,你們一個一個來,我還大概能明白,你們群起而攻之,我便委地如泥了!
重載的Query方法(帶有CallbackHandler參數的)在發送請求信息后,不會阻塞而繼續向下執行,而框架在收到對應的回復信息時,會回調CallbackHandler委托指向的方法。由于調用線程與回復回調的線程不是同一個線程,所以稱這種機制為回復異步調用。
再當我看到“重載”、看到“阻塞”時,我徹底憤怒了!而緊接著映入眼簾的“委托”、“回調”更使我出離憤怒!最后“線程”、“異步”更令我萬念俱滅,心如死灰!
從此,我便以一種菜得摳腳的姿態狼狽不堪地行走在險象環生的程序世界里。莫非是寒更雨歇,葬花天氣,獵獵北風襲單衣;荒原寂寂,遠聽猿啼,近看寒鴉起;鬼影幢幢,步步驚心,不知今夕何夕。
好多次我都想,別瞎費勁了,你不是寫程序的料!真正適合寫程序的人根本就不可能是這個樣子!
于是乎放棄。可是不寫程序又能干嘛呢?好歹讀了四年大學,何況拉弓沒有回頭箭。還是要頂風逆水雄心在,不負人民養育情!
終于,苦水的浸泡痛徹了肌膚,磨練了身心,同時也澆灌出了涅槃之花!
某天我突然發現,那些原本看來佶屈聱牙的技術文檔如今看來卻直白如話,那些原本晦澀難懂的語法如今卻能夠熟練運用,那些原本看都看不懂的源碼如今也能夠在自己指下流淌,實習之前我連循環語句都寫不對,如今卻也能用ESFramework和OMCS等框架開發出像樣的網絡通信應用。
二.議論更重要的是,從當初的不喜歡、不擅長、不自信,到而今能夠懷揣著一顆歡喜之心來寫程序,能夠以樂在其中的心緒來開啟自己的程序人生,這不僅是我收獲到的莫大財富,更是我把握住的莫大幸福!
胡適先生的名言:“怕什么真理無窮,進一寸有一寸的歡喜。”真理無窮并不可怕,因為我們在每一寸的前進中始終獲得歡喜。編程之路并非坦途,我們也并非天賦異稟,然而那個最幸福的人,并非是玩轉代碼的編程高手,也并非是億萬家資的IT精英,而是那個在流年中始終以歡喜之心書寫代碼,又通過書寫代碼恒久再獲歡喜之人!
常言道:“男怕入錯行,女怕嫁錯郎”。嫁郎要嫁有情郎——有情飲水飽,無情龍肉都無味!入行也是一樣。入了所愛之行,舉手投足皆得歡喜;入了所憎之行,坐臥立行盡是苦悲!嫁郎的幸福不在于嫁郎所獲得的富貴榮華,其根本在于郎本身。那些通過嫁郎以獲取外在利益的女子,她們充其量只是獲得了生意上的成功,而根本沒有獲得婚姻本身的幸福,而這何嘗不是一種買櫝還珠?同樣,那些以工作作為純粹手段的人,他們也從來沒有獲得過工作本身的幸福快樂。
由此看來,我想恐怕對于絕大多數的程序員而言——你不是真正的快樂!
所有程序員恐怕可以粗略的劃分為這五種狀態:
1.不愛,但是迫于生計
2.無感,反正亦步亦趨
3.熱愛,但卻身心俱疲
4.狂熱,打了雞血一般
5.歡喜,畢竟樂在其中
你是屬于哪一種呢?
如果要我來選,我一定會選5,因為唯其如此才能獲得程序人生的個中真昧,才能擁有彼此交融的內在完滿。而其他的幾種狀態在不同程度上都是殘缺的。
也許我們寫程序總是不可避免的為了各種外在的目的,但是寫程序時的那份小確幸的歡喜,卻始終是我們精神飛鳥的棲息地。 正如孔子贊顏回——子曰∶“賢哉回也,一簞食,一瓢飲,在陋巷,人不堪其憂,回也不改其樂 。賢哉回也!”
罷筆時風煙俱凈,但愿自己剛剛開啟的程序人生能夠無關風月,寂靜歡喜。
編輯于 2015-08-27?7 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 2贊同反對,不會顯示你的姓名 碼丐?四袋碼丐 2?人贊同 碼農只是程序員的一種謙稱,或者自嘲。很多優秀的程序員都自稱碼農。 發布于 2014-09-14?添加評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 3贊同反對,不會顯示你的姓名 姚峰?不是程序的締造者,只是程序的搬運工 3?人贊同 私以為程序員是用代碼去解決問題優化流程的。而碼農只是一味的去追求寫代碼寫代碼。程序員是寫得了代碼并且說人話的。。。讓人去明白他們做了什么的。而碼農只能和碼農交流。哈哈哈。所以說與提高碼力相輔相成的是分析問題的能力以及溝通能力。還在努力成為一個優秀的程序員。 發布于 2015-08-27?添加評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 9贊同反對,不會顯示你的姓名 斷指鶴?豆瓣新書《絕命筆記》,歡迎來讀 9?人贊同 碼農不過是程序員自黑的一個稱呼而已,程序員=碼農了,難道題主覺得不是?難度題主覺得程序員是做的技術活,碼農是做的體力活?以自身的寫程序經歷來說,每天工作有幾種狀態:最開心的一天——沒做多少活,學了很多新東西,弄懂了某個知識點;較開心的一天——做了很多活,但收獲也很多;無聊的一天——沒做多少活,不知該做啥,導致一天下來,啥也沒學到;苦悶的一天——忙了一天,全是重復的、不用動腦的活,啥收獲也沒有;
第一種工作狀態,或者是第二種狀態是否就是題主口中的程序員的一天,最后一種就是碼農的一天?
我可以很肯定的說,這種狀態不由員工來定,尤其是剛入門的底層員工,已經升級到高級工程師或者是架構的人另說,但想要晉升到高級工程師或者架構,你還必須經歷底層員工這步,再加上你自身聰明好學,再加上工作時間和經驗的積累。 發布于 2014-09-13?1 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 1贊同反對,不會顯示你的姓名 張華?沉默的大多數 1?人贊同 首先承認自己是個碼農 發布于 2015-08-26?4 條評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 0贊同反對,不會顯示你的姓名 知乎用戶?天氣好熱 類似于工程師與技工(技術工人)的區別吧。 發布于 2016-07-12?添加評論?感謝? 分享 ?收藏???沒有幫助???舉報???作者保留權利 4贊同反對,不會顯示你的姓名 飛龍?Creative Common 4?人贊同 用api,也同時弄清楚其原理。復用別人的代碼,同時也能獨立思考。通過封裝和調用來復用代碼,而不是復制粘貼。
總結
以上是生活随笔為你收集整理的【知乎】怎么成为一个优秀的程序员,而不是一个优秀的码农?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: apache poi 解析excel
- 下一篇: 从网站上下载视频