看頂級高手如何編程--從帶程序員新手想到的

  當了幾年的程序員了,雖然寫碼的時間多點,但手上也管理過、帶過一部分程序員。一直都在想一個問題,什麼是程序員,程序員應該作好那些事情,什麼樣的程序員是有素質的程序員?什麼樣的程序員算是負責的程序員呢? 工做當中我發現有很多員工是爲了工做而工做,怎麼回事呢?他們只是把我分配的工做分絕不差的完成,但從不問爲何?有些程序員是喜歡隨便改變需求,本身感受不錯就得改,改了還不作報告,最後上交項目時才發現和需求不同?因而傻了。 
  我根據本身的經驗把程序員分爲如下幾種
  一、單純沒有腦子的:這種員工是最氣人的一種,由於他們大可能是剛入門的,或是學生剛走出校門,不喜歡問,也不懂得分析,只是一味的很聽話,爲何說他們單純呢?那是由於他們歷來不會問,不會說也沒有本身的想法,你讓幹什麼就幹什麼,讓本身怎麼幹就怎麼幹,聽上去感受特好的員工,很聽話,若是隻是這樣就行了,可怕的是他們沒有腦子,好比你說讓他完成一個增長的功能吧,他們很聽話的給你作出來,但只是一個增長的功能,他根本不會在增長功能以後再給你處理一下刷新數據的問題,或是作一些必要的驗證,更說不上代碼的擴展性,那都是見不着邊的事,不可能。 你說讓作一個查詢功能,他徹底有可能給你作出來一個查詢全部的功能,不會管你要不要根據時間,要不要分頁,或是其它的方式的查詢,人家還可有理,會告訴你,你需求上沒說啊,只說要有一個查詢的功能?而後你無語。
  二、有腦子先斬後湊的:這類程序員大體是工做有一年或是兩年工做經驗的人,自認爲本身有些經驗了,作了幾個項目,感受本身NB的不得了了。分配一個功能總有一些本身的想法,其實他本身不知道這些想法還不成熟,只是我的主觀意向,你說讓人家作一個導航條吧,你清楚的告訴他是在頭部用的,要直排下拉類型的。 好了獲得需求了,他根本無論你爲何要這樣作,在作的過程當中,他發現本身之前作一些項目裏有導航條的,並且很好看,他們想,經理是怎麼想的,設計的還不如我設計的好看,我給他改一下說不定還能獲得他的獎勵,因而本身把直排下拉的導航改爲了,直排出面板那種的,由於好看,並且還不告訴經理,想給你們一個驚喜,誰知道經理一看,說怎麼改需求了,客戶不要這樣的,而後他就跟你講理,說這樣的好看,並且什麼擴展性還好,技術先進,流行,而後你會很無耐的告訴他,你作的確實很好看,可是客戶不付錢怎麼辦,因而沒辦法在你的「強逼」之下他不得不改,因而你對他的工做很不滿意,首先是這我的很差管,老本身作主,不把你當回事,怎麼辦,好點的經理會慢慢引導一下,脾氣大的經理會直接扔出兩字「滾蛋」。

  咱們來分析一下他的心理:
  第一種可能就是感受本身作了不少項目,有一點自大,目中無人的心態,看不起別人設計的東西,總覺得本身的技術和代碼很棒了,由於本身在程序界摸爬滾打一兩年了,也算是有所見識了。但他們確不明白,如今的本身正像當前的曹仁學曹操同樣,只是學得其形而爲盡其神。大部分的軟件,網站,不能只看網站自己的價值,成功不成功,不是本身說了算,也不是經理說了算,還得看客戶,一句話客戶喜歡的就是好東西,客戶不懂技術啊,你寫的再好,客戶不懂哦,因此必定不要亂改需求,軟件要和市場結合才能真正體現出它的價值,作讓你們喜歡的軟件,而不是單純的技術堆積。
  第二種可能就是,本身懶,由於兩年內也寫了很多代碼,手上有不少的源代碼,直接找個好點的能上就好了,爲何要本身寫啊,並且好看還快速。
  第三種多是本身實現不了,而又不想學習,感受浪費時間,因此直接改動一下得了。感受本身若是寫的話,寫好了還好說,寫很差,耽誤時間,一個導航幾天能不完,會很丟人的。因而要加速。
  這類程序員有腦子,可是不聽話,管理是問題,必定要好好的引導,也但願在這個階段的朋友們注意了。增強學習,認真作項目,讓本身正規化。不要入魔道了。多看看資深的程序員的代碼,想一下經理爲何要這樣作,聽聽他的理由,在改需求的同時必定要寫報告,或是直接找經商量一下,不要本身作主。
  三、有腦子,很聽話,很認真,但基礎很差,代碼有侷限性:這類型的程序員大可能是工做一到兩年的程序員,但和上面的不一樣,他們頗有腦子思路很好,並且很聽經理的話,作東西很認真,作不完了本身會加班寫,學新的東西也很快,可是有一點很差的是,他們有不少理由說本身沒時間學習基礎,這些人通常是在學校沒有學好,出來以後後悔了,學起來很認真,因爲學了些新的知識,起點高,看不起基礎的東西,從不想着沒事去看看編程基礎,看看算法,看看數據結構,老是覺得我都能作出這樣的項目了,還看那些小東西會很丟人的,因而在公司從不看回家更不想看,時間長了,技術會有很大的侷限性,對某一塊技術很不錯,可是對其它技術不怎麼好,因而在接到一個項目時,總喜歡使用本身現有的,會的技術去實現,轉了一圈又一圈總算是把東西寫出來了,並且仍是加班完成了,可是代碼的性能,穩定性,和效率上差的很遠,擴展性也談不上,時間一長,項目一多起來,就會出現屢次反工,由於需求是會不斷變化的,因而本身的代碼也要變化,感受非常理所固然,一個項目沒事,接手的多了就麻煩了,新項目剛到手,老項目就出問題了,不是這裏有點小毛病就是那個功能要升級,因而新項目放下,着手改老項目,手上能有三四個項目時,就會忙個不停,改的多了,沒辦法再改了就得從新設計,或是直接說這個功能實現不了。
  其實在這個階段的朋友頗有潛力的,只要花點心思補習一下本身的技術缺陷,多看看高手的代碼,寫以前想一下,設計一下,天然事半功倍,千萬不要有眼高手低的心態。
  下面來聊聊真正的高手NB人物是怎麼工做的------------程序員
  1.不隨便改變需求:他們不會主觀的改變一些東西,無論是對仍是錯,若是要改的話他們會在開會時,或是私下跟你提出來,經過後再改,不然會按需求辦事。
  2.不寫沒有思想的代碼:在寫功能時會加上一些人性化的功能,比果加個小圖標,加一些驗證,處理一些操做習慣,加加快捷鍵,處理好Tab順序,等這些,不用你說,他們本身會處理好。
  3.不寫沒有遠見的代碼:他們在寫代碼時會想,不會是單純的實現功能,他要想,若是別人也要用這個方法怎麼辦,之後要改的時候怎麼辦,代碼這樣寫是否是合理,是否是會影響性能,而後纔會」吝嗇「的出手。
  4.不寫不負責任的代碼:咱們寫代碼一是爲客戶用,二是方便其餘人看,不僅僅是本身維護,要對本身的代碼負責,從本身手上出去的代碼表明的就是本身的臉,代碼很差,人家會「打臉」的。他們不肯意捱打因此他們負責。
  高手在編程效率方面可能並不比普通程序員快多少,由於他們會吝嗇本身敲下的每一行代碼。這種「吝嗇」有兩方面的含義,一是項目的架構性和總體性考量,二是從性能和優化的角度進行Coding。其實,這裏所映射的是一個開發者的技術視野。
  有不少技術專家強調項目執行時的全局觀。面對一個項目,即便是團隊中的普通一員,也要力求從項目總體架構的角度審視開發需求,對各個模塊、接口和通訊作最優化的預想和配置。這樣能夠從全局審視整個項目的技術佈局,預判可能出現的問題。
  在肯定了總體以後,落實到具體的模塊實現,每一行代碼不但有上下文的考量與規劃,還要具有模塊間的總體佈局。這是模塊內的技術視野,好比接口的定義、註釋的可讀性、代碼的執行效率等。當你寫下一行代碼前,要考慮它是否會對整個系統形成影響,是否方便其餘接口進行調用,這些都是一個開發高手的「技術潛意識」。
  據一些常常帶領入門級開發者的技術經理介紹,多數人只考慮本身所負責的模塊進行開發,缺少一個全局性的技術視野和對代碼性能苛刻的態度,這樣雖然能按交付日期完成項目,卻對項目質量和開發者的自我提升有很大阻礙。
  開發高手是代碼閱讀者。大多數技術專家的代碼閱讀量是普通程序員的百倍,代碼閱讀的時間比寫代碼的時間要長得多。 多數程序員只把程序開發當成一份工做,他們在意平臺的前景、語言的優劣、報酬的高低;他們不肯爲一個技術點反覆鑽研,不肯爲一個bug精心測試,不肯爲自身技術水平的提升多花時間。而開發高手每每具備單純的技術夢想,願意爲技術付出本身所有的時間。
  要擁有單純的技術夢想,併爲此付出本身所有的時間。
  是的,所有的時間。
  在此祝願每個有單純技術夢想的人都能成爲編程高手。
相關文章
相關標籤/搜索