想想自己寫代碼已有一年多了,有很多感觸和想法,特意寫下來讓剛入門的程序員避免踩坑。
一、 我適合做程序員嗎
這是這個很重要的問題。首先你要知道程序員是怎樣的一群人。眾所周知,程序員屬于高收入群體,個別實力特別強的或運氣特別好的程序員,可以輕易的躋身富豪行列,全世界最有錢的人里面,也有不少程序員,比如扎克博格,李彥宏,馬化騰等等。但就算當個普普通通的老實程序員,正常的工作三五年,也會有富足的收入。 當然,如果我們老是談錢,那和戴金項鏈的煤老板又有什么區別呢?區別還是有的,錢沒有人家多。不過我認為事情的關鍵是生活的態度。有的程序員不修邊幅,有的程序員很會打扮,有些程序員大腹便便,有些程序員有人魚線,這都是小問題,任何群體都會有這樣的人。 程序員喜歡一種頗有趣味的黑色冷幽默,他們對于機械,動漫,機器人,飛船,電子電路往往有著特別的熱衷。他們不喜歡現實中的爭論和謾罵,他們寧愿找個安靜的地方寫代碼,但有些時候,他們也會利用自己的特長做一些惡作劇。 我一直覺得,在骨子里面,程序員都是一群調皮的小朋友。 這個世界有無數傳統的行業,在這些行業里面,上升通道幾乎被特權和身世給堵死了,要在這些行業里面出人頭地,有所作為,就必須精于人情世故,甚至做違心的事情,因為你更多的是和人打交道。 然而程序員是和電腦打交道的,電腦會嚴格按照指令行事,不會把指令執行錯,也不會執行錯誤的指令,說一是一,說二不三。 整天和電腦打交道的人,你很難想象他會有什么壞心思。 編程是一項腦力活動,需要邏輯思維能力,在文字游戲上面,程序員都是一把好手。而整天被代碼摧殘,讓程序員變的非常聰明,這種聰明并不表現在買菜砍價上面,而是在面對這個復雜多變的世界的時候,這種聰明能夠看到更多的可能性。 程序員整天都開著電腦,除了寫代碼,這些電腦還接受大量的信息,任何新產品,程序員都樂意體驗,他們也同樣關心這個世界每天產生的新奇事物,這帶來的影響是遠見和包容的心態。 人們對待新興的行業,尤其是這個行業太過蓬勃的時候,都會心懷惡意,然而程序員這個群體實在是太友好而可愛了,因此這種惡意轉換成了沒有什么惡意的調侃,我認為這是程序員的大智慧。但你如果把這些調侃當真,就有點不明智了。 農民種出一萬斤大米,工程師建造一座大橋,政客設計政治,法官裁定好壞,醫生拯救生命,這些事情意義非凡,但卻不是魔法,一千年前的農民也在種大米,一千年前的工程師也在建大橋,一千年前的政客也在設計政治,一千年前的法官也在裁定好壞,一千年前的醫生也在拯救生命。 但突然某個時候,一個嶄新的行業誕生,這個行業里的人們每天都在創造出意義非凡的東西,他們讓資源被更加合理的分配,他們讓每個普通人的生活深受影響,這才是魔法。當然,一個醫生拯救的一條生命可能比一個有幾百萬用戶的軟件更加可貴,但生活但趣味卻在后者。 無論任何人再怎么黑程序員,都無法阻止這個行業蓬勃的發展,都無法阻止這群懷著善意和愛的小朋友創造出誰也不會預料到的東西。而這,真是酷斃了。最后一點就是一定要有興趣,如果你只是為了混口飯吃,勸你還是趁早離開程序員這個行業吧。
二、程序員的內功
萬丈高樓平地起,基礎是一切的一切,所以要在程序員這個行業深入發展,下面幾點要著重培養。
英語必須好
導致國內的技術人員落后于國際的重要原因,不是不夠聰明, 而是國內的程序員英文水平不好。 在國內,英語又好,計算機能力又強的程序員,在2001~ 2010年左右,都會被招進 外企。這個情況在BAT等國內互聯網公司做大之后,有所好轉,但是,我見到的英語好 的程序員,很多走的路線都是:大公司工作 , 出國。 而國內的程序員為什么會比國外技術落后1~2年呢? 這個時間就是 認識到這個技術好(大約1年時間) + 翻譯(一年時間) + 出書( 找出版社,出版,大約4個月)的時間。 現在,由于新興技術越來越多,我們不能再采取“學中文書”的習慣了。 所以,基本要求是: 要么CET6. 過了六級的人,英語肯定沒問題的。 要么可以進行一段口語對話。口語是英語聽說讀寫四個能力中最薄弱的環節。 如果這個人的口語是60分,那么閱讀可以達到80分。
思路敏捷,清晰
打個比方,我們上學老師講課的時候,有的人,他的思路跟不上老師。有的人,他往往 能糾正老師的錯誤,提醒老師下一步的思路。 我們要的,就是后一種人。 思路的敏捷,直接導致程序員是否有“靈氣”。 有靈氣的人,幾乎都是一點就通。 你給他一個方向,剩下的事他都能自己辦完。 思路不行的人,讓他做事就會讓你特別痛苦,他離不開你,你一離開他就幾乎沒有 進度。 判斷一個人思路是否敏捷,清晰,很重要的一點是看他口齒是否清晰,表述能力是否 足夠好。
表達溝通能力強
表達和溝通能力強是非常重要的因素。一個軟件項目能否做好,完全取決于大家的溝通。 比如說, 這個需求沒有說明白 昨天提交的版本為什么沒有通過 那個bug昨天修改了,為什么今天又出現了 用戶的需求又改變了 我們在開發過程中,絕大部分出現的問題,我們都要與人商量,跟人溝通。 有溝通恐懼癥的人是無法勝任軟件開發的。而“話癆”程序員就特別難得。而對于不會溝通的人,往往工作就做不好,不受別人的待見。時間一長,這樣的人 就容易惡性循環,越不敢跟人溝通。這個問題真的很常見。
計算機基礎知識必須要好
我讀大學的時候并不覺得操作系統,計算機網絡,線性代數,離散數學等等有什么實際用途。所以并沒有好好去學,等到bat校園招聘的時候就后悔了,招聘考的問的都是這些知識啊,并不會要求你懂很多實際業務的東西,后悔死了都。最后,在開發過程中,大家不要死記硬背或者死學某些庫,看到一個庫,大概知道什么意思,然后用的時候再去看,查文檔,特別是官方文檔。我在網上看到一段評論,覺得很有意思框架編程語言都是幺蛾子,好好學編譯原理數據結構算法操作系統計算機網絡比什么都強,還有數據庫,最后你會發現那些php java c+c#web server 都是渣啊。好好修煉內功就足夠了,剛畢業沒人要你對框架很了解。。大多數是要你寫個算法,寫個排序,寫個深度優先寫個廣度優先。。再不然就是面向對象思想以及工程的思想,。。如果真對前端有興趣,你先學好js吧,ng上手不要太快,準確的說學ng對于你找到好工作,沒什么卵用。。。永遠要分清楚,什么是變得,什么是不變的。變化的總是容易學的。
三、對于工作上的問題
習慣即刻回報
他不懂得只有春天播種,秋天才會有收獲。剛剛付出一點點,甚至還沒有付出,就想要得到回報。技術剛剛掌握,能一邊百度一邊干活了就覺得該拿到多少多少錢了。找工作先想著多少多少錢,入職了沒干幾個月就想著要加多少多少錢,干了沒幾個月,薪水要是沒漲,就放棄了,準備通過跳槽加薪,不跳槽的話,往往也會因為沒加薪而牢騷滿腹,工作敷衍了事。 一個程序員的價值,是通過他帶給公司的價值體現的。先給公司帶來了價值,然后才會反過來在薪水上體現出自己的價值。公司都很現實,很少會為你的潛力買單,在你還沒有體現出價值時就給你很高的薪水。 在生活和工作中,一定要懂得付出,不要那么急功近利,馬上想得到回報。天下沒有白吃的午餐,你想獲得什么,就得先付出什么。唯有種下種子,然后澆水、施肥、除草、殺蟲,然后才能等來收獲。
缺乏學習熱情
很少有哪個崗位的人像程序員這樣需要持續不斷的學習,軟件開發的技術日新月異,而每一項技術又往往博大精深,不持續、深入鉆研是很難掌握的,更別談精通了。如果你對一項技術不能深刻理解熟練應用,表現出來的水準僅僅是能干活、還行,那很難說會有公司愿意為“還行”付出大的代價,只有脫穎而出,才可能備受重視。 假如你對學習、掌握、精通技術沒有興趣,面對不斷涌現的新語言新技術新框架沒有學習欲望,那但就軟件開發這個工作而言,你不但眼下不太可能拿到高薪,將來也不會。在這樣一個快速變化的時代,只有不斷地學習才不會被拋棄。
不夠努力
雖然我們都知道努力學習可以改變我們的技能水平,持續努力不懈堅持可以讓自己有所建樹,可還是有很多人淺嘗輒止,三天打魚兩天曬網,搞兩下能Run就放下了。 人和人在聰明才智上的差距并沒有想象中大,甚至很多時候,從大多數人的努力程度之低來看,根本還輪不到拼天賦。如果兩個人的實力半斤八兩的話,熱情工作努力堅持的人,一定比較容易成功。
畏難
做事拈輕怕重,不愿挑戰。殊不知能力就是在不斷挑戰不斷突破自己的過程中歷練出來的。在一個公司里面,經常承擔高難度任務的程序員,一定是成長比較快的,薪水增長也一定是比較快的。越是困難的事情,越能體現出個人價值,也越能帶給個人成長。 萬事起頭難,不要害怕困難。事情做不好往往不是因為沒有能力,大都是由于缺乏恒心。只要不怕困難,堅持前行,一定會有不一樣的收獲。 事業就像女人,誰去追求,誰就能得手。金錢也一樣。
缺乏責任心
工作上不管什么事兒,反正不是自己的事兒,缺乏責任心,干好干不好都無所謂,對交付承諾、對產品質量都不在意,沒什么事兒能讓他上心。 一個人的責任心如何,決定著他在工作中的態度,決定著其事業的好壞和成敗。如果一個人沒有責任心,即使他有再大的能耐,也不一定能做出好的成績來。
消極,抱怨
工作稍有不順,就怨氣沸騰,這個怎么怎么樣,那個怎么怎么樣,而我怎么就這樣,任務不公平,資源不公平,那誰誰不支持我,那誰誰不配合…… 抱怨不能使事情變好,反之,它會讓負面情緒蔓延,蠶食你的精力和時間,讓你產出更低。成功者永不抱怨,抱怨者永不成功。立刻停止抱怨,早一分鐘停止,你就離目標近一分鐘。
沒有時間管理觀念
每個人的一天都只有24小時,人和人的差別就在于如何利用時間上。 有的人每周都有目標,每天都有計劃,早上起來會想今天要做的幾件重要的事,晚上會回顧今天完成的事,總結干成了什么干壞了什么,還會有計劃的學習新知識新技能,這樣日積月累不斷堅持,每一天都是高效的,每一天都朝著更豐富更完美的自己前進。 而有的人則漫無目的,走哪算哪,到了公司,上午基本做不成事兒,到下午了還不知道要做什么,晚上也發愁如何消磨時間……
為薪水工作
雖然工作的一大目的是獲取薪水,養活自己以及供給家庭所需;但是,這只是工作最直接的報償,同時也是最低級的目標。 如果我們為薪水而工作,將注定我們是短視的,也將注定受到最深的傷害。假如你看不到工資以外的東西,斤斤計較于薪水、福利、職位等,那外界的些微風吹草動就可能讓你像浮萍一樣飄來蕩去,你很快就會失去平衡,失去信心,失去熱情,失去平和,進而在工作時總是采取一種應付了事的態度,能少做就少做,能躲避就躲避,覺得只要對得起自己的那份薪水就成了。長此以往,你追求的高薪水反倒得不到。 我們進入一個公司工作,是為了自己,不是薪水也不是別人,比薪水更重要的,是成長和成就自己的機會。我們一定要明白,公司、企業、組織,都是我們鍛煉自己、修煉自我的平臺,我們不是為薪水工作、不是為老板工作、不是為家人工作,是為實現自我而工作,是為更完美的自己而工作。 唯有志存高遠,方能風行天下。 #### 其實不喜歡軟件開發
有一部分人從事軟件開發工作,并不是因為喜歡,也沒有干著干著從不喜歡變成喜歡。他們可能是喜歡軟件開發附帶的高薪水——平均薪水比其他行業高。人做一件自己不喜歡的事情時,心理上沒有親近感,不會想著怎樣把事情做得更好,往往是差不多就成了,不太可能有精益求精積極向上的追求。因為在做不喜歡的事情時,情感上是拒絕的,情緒上是想逃離的,總想著早點兒完事兒拉倒,每一天去單位時不是充滿期待,而是各種擔憂、煩躁、畏懼,到了單位,稍有困難或不順心,就會消極、抱怨、抵觸、拒絕…… 做喜歡的事,能最大可能發揮一個人的潛能和熱情,會最快速地通向成功成就自己。而做不喜歡的事,一開始就注定了事倍功半,最后也往往會是痛苦不堪或半途而廢。
作者:cll
轉載需注明出處