老师傅告诉你,学校学的编程知识,和工作所需要的差别有多大!
工作和在大學學的知識是不一樣的,我已經從事C/C++編程開發十多年。當初也是計算機專業畢業。這一點算是深有體會
我在面試很多計算機本科甚至碩士畢業生時,他們很難向我們展現出實際的項目經驗和工作能力,因此我們只能考驗他們對某門編程語言的熟悉程度,也就只能是語法和算法。因此也不可避免地讓他們做些算法題。說實話,我覺得這種方式很傻,有誰會在紙上寫程序呢?但你會有更好的選拔方法嗎?
不夸張的說,一切學校學習的目的是為了通過考試。因此在學校學習編程無非是通過期末的考試??荚囀窃诰碜由蠈懗绦?#xff0c;還是在機器上寫程序并不重要,因為無論哪種考核方式,都和你將來是否成為一個合格的程序員沒有什么卵關系,它僅僅就是純粹的考試。但是,我想說編程的能力不在于你對這門計算機語言語法背誦以及幾個算法的記憶。在實際工作中,更多在于你怎么組織你的代碼。 語法是可以百度的,算法前人早已經給你寫好了,你只需要知道怎么調用。但是新手和老手寫出的程序是很容易就能分辨出來的。
有些人面試的時候很厲害,但到后面,你會發現他/她并不適合也不想成為一個程序員。因為真正的編程工作是如何理清一大堆代碼,而不是在幾個燒腦的算法上玩智力游戲。如果你剛入行接手的是一堆糟糕的代碼,那么我只能遺憾的告訴你,你的程序員生涯有了一個糟糕的開始。第一次糟糕的體驗是會影響一生的。所以我希望你一開始接手到的是一堆高人留下的代碼,這對你的發展以及培養你對編程興趣是起到至關重要的作用的。當然,如果你天賦好,你最好有能力選擇好的代碼堆,或者自立門戶。畢竟自己挖坑總比填別人的坑要來得爽。
我這里有點小小的人生經驗要分享,就是你看一個人適不適合編程,就得看他是不是喜歡把事物整理得井井有條。在學校里你看他的床鋪,看他的寫字臺,看他組織集體活動的能力,等等。不要以為程序猿都是胡子拉碴,臟里八稀的,那些都是電影小說杜撰的。就算有時候會出現這種情況,那也是為了短期的沖刺工作。程序猿就是藝術家,雖然很多人不這么看,就連很多程序員自己也并不這么認為。但實際上,程序員就是藝術家。語法和算法,還有程序組織能力,那些都只是基本功,就像畫家的畫功一樣。厲害的程序員是要有對現實世界抽象的能力,是要用系統性的思維去理解世界,并有可能模仿上帝去創造自己世界的人。因此,你會看到許多高階程序員寫的書和文章都像哲學家寫的一樣。
看一段糟糕的代碼就如同你走進一間臟亂的房間,你會聞到不好的味道,你會看到東西被放在不該放的位置上。新手寫的代碼就如同一間不知道整理的小孩的房間,被子團在床上,玩具亂扔,墻上亂畫.....你暫時是不會指望他能把整個家都收拾好的。因此,很多情況下我帶新人更多的是會告訴他們代碼應該寫在哪里,而不是i++和++i的區別。
實際的編程工作中,你做的事情往往是一個大系統中的一個組件。完成一個大系統的開發工作是一個團隊的事情,因此你必須學會如何團隊開發。而這點上和學校學習的編程是有本質區別的。學校的編程課教授的東西是點狀的,它教你如何寫出可以編譯過去的一小段代碼,它教你一些經典算法,但都沒什么實際卵用。有興趣和筆者一起交流學習c/c++編程的小伙伴去微信公眾號:編程學習園發送“編程”二字獲得學習資料。舉個例子,比如排序算法,教科書上一大堆。有些同學硬是能將各種排序算法默寫出來。然而他們永遠不會想到關系型數據庫是如何實現排序的,因此我一問他們如果內存裝不下所有數據的情況下,怎么排序,就個個傻眼了。因為他們只知道在內存中排序數據,不知道多了硬盤后怎么處理;他們只知道馮·諾依曼這個名字,并不理解它在計算機架構中的本質。
這些點狀的知識點對于一個不接觸實際的學生來說是很難串起來的。團隊開發是個很搞的課題,涉及組織理論。雖然很多人都能意識到這樣一個事實:人多未必能辦好事。但真正聯系到實際,就是如何發揮一個團隊的最高組織效率時,往往對自己的認識是估計不足的。很多想當然的事情是行不通的。編程工作是純粹的腦力勞動,是很難量化的勞動。咨詢公司樂此不疲地發明各種指標(如:代碼行數)和各種團隊編程模式(如:SCRUM),但也是基本沒什么卵用的。永遠記住程序員是藝術家,不要試圖用管理指標來衡量藝術家的工作,這只能靠盡可能發揮程序員的主觀能動性來提高效率和質量。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的老师傅告诉你,学校学的编程知识,和工作所需要的差别有多大!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 真实的程序员是什么样子的!
- 下一篇: 3000字长文剖析!企业大数据到底是什么