面試官常說,培訓機構出身的程序員“代碼不乾淨”,是什麼意思?

用戶50035732909


任何一個行業,任何一個領域,只要是“火”了,肯定會有一大批人“心急火燎”地隨大流。

IT也是一樣,互聯網的興起,在加上人工智能AI的發展,導致程序員職業處於供不應求的狀態,所以工資很高。大多數人肯定眼紅啊,就想擠破頭也要擠進這個行業,沒有隻是儲備,那就隨便報個培訓機構,幾個月速成,好趕上這一波風口。

絕大多數人都是奔著錢來的,絕大多數的培訓機構也是奔著錢來的,所以就生產出一批一批的“半成品”湧入市場,就是題主說得“代碼不乾淨”。

這也是為什麼越來越多的企業對只要是培訓出身的應聘者,一律不要的原因。

一,“代碼不乾淨”就是水平還不夠。

程序員不是簡簡單單的把那26個字母打出來就行了,程序員的工作雖然是獨立的,每個人負責一個模塊,但是模塊與模塊之間需要銜接。

如果你打完的代碼與其他人銜接不上,那就是BUG,而且對整個項目都有影響,相當於你一個人拖累了整個團隊。代碼出問題一般都說誰編寫的誰處理,別人找BUG的話很麻煩,如果你連自己寫的代碼都順不下來,那可就尷尬了,大多數培訓機構出來的,都是自己寫的代碼不知道是什麼,因為沒有基礎,學的東西基本都是死的。

二,為什麼培訓機構出身的程序員會被認為“代碼不乾淨”?

最主要的原因就是沒有經驗,就像上文說的,都是奔著錢來的,很多人都覺得編程就那些固定的語句,符號,學會了就能做項目,不會深入理解編程。

而且現在的培訓機構為了搶資源,都說什麼零基礎幾個月就能成為編程大神,都是扯淡。程序員這份工作,真的非常吃經驗,參與的項目越多,代碼越簡潔,編碼水平越高。

比如你敲100行代碼寫出個程序,大神可能30行就足夠,就算人家告訴你怎麼做,你都不一定能理解。

在培訓機構才幾個月就想擁有別人在大學學了幾年的編程水平,太不切實際了吧。

三,機會總是會留給有準備的人。

不能說一棍子拍死所有培訓機構出身的程序員,有些人水平還真不錯,至少能達到公司的招聘標準。

可是很多人都沒想過一個問題:去培訓機構是為了學門手藝以防萬一,還是為了儘快出山賺錢?

任何一份工作,都不是那麼簡單就能勝任的。倒不是說有些人就是不行,不適合做程序員,最起碼在轉行時要考慮清楚啊。


朋也


看了前面幾個回答,有大神,也有賭氣的,我來說說我的意見。

培訓機構名聲不好,從這裡出去的程序員一般不會說自己是培訓出來的,因為一說就沒人要了。

“代碼不乾淨”我也是很少聽說,我想應該說的是代碼是胡亂拼湊的,沒有一定的系統性,只是為了完成任務東拼西湊而來,維護和擴展都非常困難。

也難怪,就那麼幾個月的時間,想要徹底搞懂一樣東西,還不分有無基礎,怎麼可能呢?

我面試過不少這種人,有一個做前端的,挺高挺瘦一小夥子,吹完自己的“項目”之後,我讓他展示一個滿意的作品,並詢問他的創建思路,結果人家說,極度崇拜喬布斯,所以網頁就用黑白兩色,也不管其他,中間還帶著斑馬線,字體也不清晰,是那種小女生比較喜歡的嬌弱體。

我的個媽呀,真是大開眼界,果斷攆走。

其他的有的說忘帶U盤了,有的連基礎知識都不知道(不是搞不清楚),還有的直接看著自己帶來的作品,說是從網上下載的......

我不是刻意貶低,也有好的,一箇中專畢業的,做的作品挺好,回答問題的思路也很清晰,最後要的就是這個人,大專、本科、碩士的都攆走了,實在慘不忍睹。


考研第一人


大家好,我是碼農無疆。軟件行業多年老兵,和你聊理想聊技術。

你有疑問,我來回答。面試官常說,培訓機構出身的程序員“代碼不乾淨”,是什麼意思?

我們可以從團隊合作這個角度,理解這個問題。

一個軟件產品或者項目,會涉及到代碼分工,如果按模塊編寫,每個人負責編寫模塊,相當於獨自處理一個任務。其次是模塊組裝,集成為一個更大的模塊。比如說其中提供輸出的模塊出現問題,會連累被輸入模塊。此時,我們說程序出現了Bug。

  • 集成聯調不過,“不乾淨”的代碼意味著邏輯實現問題,需要打回重寫。

  • 集成聯調通過,但是命名不合規範,沒有註釋。維護人員也會說這個人代碼不乾淨,不容易理解,沒法接手。

代碼不乾淨,什麼人會有這樣的問題?

代碼質量跟這個人編碼水平有關,而編碼水平的提高並非一日之寒。

在大公司工作鍛鍊,更能寫出高水平,高質量的代碼。

培訓機構出身的程序員,缺乏實際工作經驗,對項目的複雜度,怎樣團隊合作理解不夠。

怎樣做到代碼乾淨

公司層面:制定代碼規範制度以及合理的軟件開發流程等。

個人層面:不要編寫大段代碼;重複代碼封裝成方法;添加必要的註釋;留下可擴展的空間;測試自己的代碼;參考大廠如BAT編碼規範等。

總之,無論你是被面試的,還是正在求職路上,都不必被面試官的話嚇倒。真正的標準來自於對自我的要求,不是嗎?

無疆在線普及科技常識,更多精彩回答等你來看。關注請點右上角,加入無疆粉絲團。


碼農無疆


不乾淨應該指的是寫的代碼不嚴謹,應為在培訓機構出來的學生,只是為了實現功能,完成項目,包裝簡歷,找到工作,是不會考慮代碼的工整性,嚴謹型,完整性的。

再加上本身培訓機構的教學時間就不夠,4個月學基礎,學理論,還要做將近三個項目,是沒有時間考慮這種代碼的結構,只要完成項目,學生能做項目就ok了。

別說我沒告訴你,我說的都是真的,我之前就是IT培訓機構的教學總監,所以聽我的沒錯,培訓機構出來的學生思維能力有限,可培養性很差。


雲碼素材


培訓機構一般培訓4個月,短短四個月很難培訓所有內容,一般情況都是以實現功能為主。但是做項目不僅僅是實現功能,還要考慮代碼的複雜度,可拓展性,耦合性,內聚性,像c和cpp這種偏底層一點的還要考慮內存的佔用使用和釋放維護等。

短期內看,實現功能很簡單。比如很簡單的實現一個鏈表,有的人用數組,有的人用stl容器。但是stl容器有list,有vector,set,map等等。你無論用哪一種,都能做到存儲數據和查找功能。但是還要具體考慮使用情景和容器底層的實現方式。map和set底層是紅黑樹,對於查找非常有效率,但是插入和刪除數據,如果數據量比較大,會動整個樹的結構和序列,所以一般用於查找較多,而很少刪除和增加的。vector是內存中一塊連續的內存,方便插入和刪除,但是本身是無序的,所以查找,內部就只能遍歷查找了,適用於頻繁增刪,查找不多,數據不大的情況,之所以數據不大,是因為內存會分配一定的容量給vector,一旦數據超過了容量,內存會另外再開闢更大容量給它,vector原有的數據要全部複製過去,很耗時。而list是一組無序不連續的內存,數據之間依靠指針指向連接,理論上只要不超過可用內存,可以無限制插入刪除,插入數據時,在內存中找到差不多大的位置,然後把該位置的地址給上一個元素,一個連接一個就行了。同vector一樣,不適合大量的查找操作。此外,由於list佔用的內存比較鬆散,很大可能會發生串地址的情況,即別的指針做個自加操作,就串到list上,並不安全。這裡我也不班門弄斧了,頭條大佬也多。這些底層的東西培訓機構不會也沒時間交給你,更不會一一舉例,但是在項目中的使用很重要。


嗶哩嗶哩啪啦啦


現在很多企業對於培訓出來的程序員都帶著有色眼鏡在看,甚至一些過激的企業直接把培訓出來的程序員排除在外,這種做法很明顯是不正確的,主要很多培訓機構的宣傳以及包裝對於軟件市場有非常惡劣的影響,導致很多企業反映非常過激。

軟件培訓本來就屬於查漏補缺的一種極好方式,隨著各個行業的成熟對於職員的要求也是越來越高,所以很多人在進入真正的崗位之前先讓自己強化一下,提前試營業一些規則,現在培訓行業已經慢慢走進大家的生活了,很多機構開始對於工作多年的程序員培訓,幫助遇到瓶頸的程序員進行提升,這都是社會進步的一種體現,整個社會對於開發人員的技能要求是越來越高,培訓不失為一種好的辦法,培訓的本質是查漏補缺,就是講在具備一定基礎的條件下培訓出來的會有意想不到的效果,但是現在很多機構把培訓吹噓的太嚴重了,零基礎弄上幾個月就能順利拿到高薪,在當今這個社會對於一個普通老百姓錢不是那麼好掙。

要正確的對待培訓,零基礎的並且對於編程這個行業不感興趣就不要想這碼事情了,即使真的想參加培訓也要自學上一段時間摸摸自己的底,到底差距在哪裡下一步怎麼去學習,不要迷信覺得零基礎只要加速幾個月就把什麼事情搞定了,幾個月的時間好的機構能讓人找到如何學習編程的方法,這種相對來講更加可靠一些,現在絕大部分的機構採用的是強灌式方式,這種方式能夠激發一些人內在的動力,很多人可能都是處於半知半解的狀態。

其實參加過培訓的人都明白,培訓完了通過機構介紹找到工作的只佔很少的一部分,大部分都是覺得學的差不多了自己投簡歷找工作了,畢竟依靠培訓機構推薦的工作大部分來講是外包性質的工作,無論什麼狀態最終能夠達到什麼樣子的效果是最關鍵,培訓是一種大趨勢,但要明白自己需要在什麼場景下選擇培訓更加合適,要清晰的認識培訓的本質。

很多機構為了讓學員增加面試的機會,直接在簡歷上大做文章,結果讓很多企業非常惱火,本來拿出時間來面試人結果發現面試的人虛假成分太高,造成人力成本的極大浪費。所以有些企業直接採取極端的措施,看到培訓的直接拒之門外了,這種做法很明顯不合適。有些人基礎非常可以通過培訓讓技術更加全面了,這也是極好的一件事,所以認識上要清晰明瞭。

回到正題面試官說培訓出來的程序員代碼不乾淨,這種本身帶有一種很強的個人偏見在裡面,培訓出來的程序員由於採用的灌輸式方式,肯定會在代碼習慣以及編程行為有所欠缺,對於初級新手也算是正常的現象,初級程序員容易寫錯各種錯誤的代碼也非常正常,沒有必要帶著放大鏡看這件事情,無論誰都是從新手走過來的。

希望能幫到你。


大學生編程指南


說句題外話,大學學的計算機專業,畢業之後做的也是專業相關的工作,周圍接觸的基本都是程序員,還從來沒有聽說過“代碼不乾淨”這個詞,不規範或者不寫註釋等等倒是有。不過有可能就是指的這些?

其實現在越來越多的公司不太想用培訓機構出來的人,不是因為代碼呈現出來的方式,最主要的原因是:簡歷包裝得太過分了,導致擾亂了這個行業的一些氛圍。

再說現在科班(計算機專業)畢業的人也很多了,為什麼不直接招學校了經過了3年或者4年專業知識訓練出來的人培養而是要那些在培訓機構只經過幾個月的短暫培訓的人呢?


命裡缺木


“代碼不乾淨”應該指的是代碼的可讀性差。


寫代碼是有規矩的,比如怎麼給變量命名,是不能隨意取的,得根據命名規則來取,最好是取一目瞭然的名字,一看這名字就知道是什麼個意思。寫代碼是有套路的,大家都的按統一的套路來寫,否則各個模塊沒法集成到一起。


為什麼代碼的可讀性這麼重要呢?因為代碼不是寫完就完事了,它有可能會出漏洞,日後有可能對它進行升級。如果代碼可讀性差,出了漏洞沒法查,升級沒法做。


要寫出可讀性強的代碼,專業知識是基礎,實踐多了自然就能寫出別人能讀懂並願意讀的代碼了。


那我拍


這裡是丁哥開講,我來回答一下這個問題。

我不太關心,程序員是不是培訓機構出來的。我比較關心的是,什麼是乾淨的代碼?如何寫出乾淨的代碼?

首先來說什麼是乾淨的代碼?

乾淨的代碼客觀上說,程序複雜度一定是很低的。

乾淨與不乾淨雖然本身有點主觀的意味。但是容易懂的代碼,很容易修改的代碼,大多數程序員都是認同的。

除了程序複雜度以外,從如下幾個方面看一個代碼是否乾淨。

. 類和方法足夠的小,只執行單一的任務。

. 類的公開接口方法的定義要清楚簡潔。

. 代碼是可測試的,也就是很容易寫出測試代碼。

. 測試代碼也要容易理解,並且容易修改。

明白了什麼是乾淨的代碼,那我們就需要往這個方向努力寫出乾淨的代碼來。

再來說一說乾淨代碼的好處。

好處1就是代碼方便維護,任何人都可以讀懂你的代碼。按照現有的代碼格式就可以寫出同樣乾淨的代碼來。

好處2就是方便添加新的功能即程序的擴展。添加新的功能,以不破壞程序的乾淨度為標準和前提。在軟件開發過程中,經常遇到的一個問題就是,添加新的功能以後,導致程序的複雜度大幅提升。這是很不幸的事情,發生這樣的情況,一般有多個因素,但是主要的原因是對整個程序架構不瞭解,再加上項目進度催逼的太厲害。導致程序員會不擇手段把功能實現再說。這樣子,一個項目的代碼看起來會是多個項目的風格。

好處3就是方便培訓新的程序員,並讓他們很快的融入到團隊當中。項目後續梯隊的培養是一個項目能夠長久發展的重要因素。隨著時間的推移,老的項目成員可能會有晉升機會,或者轉移到其他的新項目中。如果你的代碼是乾淨的,那麼項目的人員更替以後,工作效率也應該不會受到影響。

好處4也是方便將來的自己看懂自己的代碼。經驗少的程序員很少能夠理解這一點。做過很多年項目的程序員,對這一點可能深有體會。

我們假定這樣的情況,項目中需要添加一個新的功能,或者需要修改一個bug,而這部分代碼只有少數的幾個人能夠懂。而湊巧的是你就是其中的大牛之一。

於是你打開那些代碼。代碼歷史記錄表明是你的代碼。但你需要很長時間才能回憶起當初的思維邏輯。甚至永遠都想不起來了。

這個時候你可能會後悔,我當初要是把代碼寫的更乾淨一些就好了。

最後,祝各位都寫出乾淨的代碼來。



丁哥開講


這個問題其實可以聯想到:為啥有的公司不要非科班畢業培訓機構出身的程序員?

“代碼不乾淨”可以理解為代碼不簡潔,可讀性不好,書寫不規範,彈性不夠好...說白了就是在說不夠專業。

從整體角度講,非科班出身,本身對編程的理解相當於從零開始,短短几個月的培訓,著實很難達到專業幾年薰陶(混日子的除外)的那種認知水平。當然這種言論都不能一概而論的,畢竟有天賦或者以勤補拙然後寫出很令人信服代碼的大神也很多。


分享到:


相關文章: