為什麼學會編程語言後,實際開發中卻沒了思路?

liujinda22

實際上很多程序員都經歷過這個階段,雖然我們在學習一門語言的時候通常都伴隨著實驗,但是畢竟學習階段的小實驗大部分都是驗證概念的,有很大的侷限性。即使很多人在學習的後期會做一些綜合性的實驗,但是實驗畢竟和實際項目需求有很大的不同,這就導致很多人即使完成了語言的學習也無法進行實際的項目開發。

每年我的項目組都有新人加入,每次也都有新人堅持不到一週就打退堂鼓了。下面是我跟一名要打退堂鼓的新入職實習程序員的一段溝通對話,發生在剛剛過去的2017年。

通過這段對話,大家應該能看出我的努力,應該能理解我說出的最後那句話的心情。其實每一名進入我項目組的程序員我都會盡自己最大的努力來帶領他,畢竟經過層層面試進到項目組的實習程序員都不容易,經過那麼久的學習和實驗(很枯燥),我也想盡力把他們都帶領到正式程序員的崗位上。

但是每次都有讓我十分遺憾的事情發生,每一名放棄的實習程序員有不錯的基礎和學歷,但是還是沒有堅持下來。根據這麼多年的經驗,我總結了導致實習程序員放棄的原因大致有以下幾個方面:

  1. 理論知識儲備充足但實驗做的太少。這種情況會導致眼高手低,當看到實際項目時無從下手,最終導致放棄。

  2. 有紮實的基礎且實踐案例較多但是承受壓力能力較差。實際項目都會有時間節點要求,必須在指定的時間內完成任務,這對初入行的程序員是個較大的考驗,很多實習程序員會選擇放棄。

  3. 溝通能力較差。這類實習程序員佔比也較高,很多時候聽不懂項目經理安排的任務還羞於溝通,導致長時間不出成果,最終導致放棄。

  4. 長時間沒有進步(學習能力較差)。這類實習程序員也有一定的佔比,原因是多方面的。有可能是自身的懶惰導致進步較慢,也有的是因為自身學習能力較差導致進步較慢,最終選擇放棄。

  5. 過於自信。這種情況的實習程序員雖然較少,但是也會出現。對項目經理的安排不屑一顧,以自己的想法來完成項目開發,導致各種兼容性問題,最終被項目組開除。

以上就是大部分實習程序員選擇放棄(或被辭退)的主要原因,作為科技公司來說,最不願意看到的情況之一就是實習程序員放棄,因為從面試一個程序員到安排實習崗位,企業都付出了很多時間成本。所以,很多企業在面試的時候都會反覆跟面試者進行多輪溝通,以防止這類事件發生,但是這類事件就像程序的Bug一樣很難杜絕。


IT人劉俊明

讓我通過自身的經歷來回答你這個問題。

本人已從事軟件開發行業5年,大學是軟件工程專業。大學學習的第一門編程語言是c語言,當我學會這門語言後,同樣剛在實際開發中沒有思路。因為那是的學會只是學會了編程語言的語法,只是學會了實現功能函數,更多的是在做編程的題目而已。而實際的程序開發中,學會編程語言只是第一步,不是說找本介紹編程語言的書,弄把它看完了你就可以開始開發程序了,拿搭積木來說你只是熟悉了沒每塊積木,至於怎麼把積木搭成各種建築模型需要的是你對房屋結構的瞭解,瞭解了建築的結構才能有思路用積木搭建模型,任何一個世界著名的建築師都是在學習參考了世界上各種優秀的建築後才能有思路開發自己設計的建築。同樣的學會了編程語言,剛開始沒有編程思路是正常的,這時候我們不需要慌張。從學會編程語言到真正獨立開發程序,我覺得要經歷以下階段。

階段一、編程練習與積累階段

學習編程的人要從平時的編程練級題開始積累,從模仿別人的代碼開始,在模仿中慢慢積累,將積累的經驗慢慢轉化為自己的東西,這樣在以後的開發過程中才能做到信手拈來。

階段二、數據結構算法實現階段

都說數據結構和算法是編程的靈魂,一點也不錯。以後我們開發的程序的基本上都是在跟數據和算法打交道,我們要把有用數據存儲起來要用到數據結構,我們要對數據進行各種處理要使用算法。所以我們要熟悉常用數據結構,像數組,鏈表,字典等數據結構的存儲原理實現機制,這樣才能在何種條件下使用何種數據結構做出正確的選擇。

階段三、小程序模仿與獨立實現階段

熟悉了數據結構和算法就可以開始小程序的開發階段,剛開始可以看一些他人實現的小程序開始,然後自己實現一個簡單的小遊戲,比如實現一個貪吃的蛇小遊戲,麻雀雖小,五臟俱全。雖然只是一個小遊戲但同樣需要從需求,功能設計,開發,測試各個環節的參與,讓你熟悉整個程序的開發過程。

階段四、參與項目開發階段

對於大部分的人,可能要到參加工作才能這個到達階段,這也是你從單大獨鬥參與到團隊合作中區的機會。剛開始參與項目只會負責其中很少的一塊,你只是項目這個拼圖中很小的一塊。你會在參與一個個項目中慢慢的積累經驗,在和別人的合作中不斷溝通交流。

階段五、項目架構階段

這個階段只有少部分人能達到,我目前也還沒有達到這個階段。在參與了一個個項目的開發以後,你的經驗會越來越豐富,你會了解各種技術,知道何種情況要用何種技術。在溝通需求的過程中你能慢慢構建出整個項目的實現藍圖。

為什麼學會編程語言後開發程序時沒有思路,因為還沒有到那個階段。只有一步一個腳印的穩步前進,你終會成為那個思路泉湧的架構師。


程序之禪

我覺得這個問題就跟我閱讀了很多小說,並且也看了很多寫作技巧,但是叫我寫一篇小說我卻寫不出來;我聽了很多歌曲,學了很多樂理知識,但是缺不會發聲一個道理。基本所有的技能,都是由淺入深不斷實踐,然後到達熟能生巧,最後內化的過程。所以樓主的問題我覺得只是目前實踐所達到的高度還不夠,用點心多多提升就好了,但是具體實際開發遇到什麼問題沒有描述,所以不好評價。


樓主的問題中提到他學會編程,這個話題我比較想以個人的經歷分享一下什麼是學會編程


在我大一的時候:我學了c語言,知道了什麼是變量,什麼是if,什麼是for,等等。這些東西不難嘛~我覺得我學會了編程。當我開始做一些類似楊輝三角,斐波那契數列等這些大家應該覺得不太難的題目時候,我盯著屏幕,內心很多隻小動物在翻騰。我以為我學會了編程,啪啪啪打臉。然後硬著頭皮,不屈不撓,慢慢折騰了出來。


在我大四的時候,我已經完成面向對象,算法分析,數據結構等等基礎知識,並且順利不掛科!我覺得我學會了編程。當我開始做畢業設計的時候,看著各種亂七八糟要實現的功能,我盯著屏幕,內心很多隻小動物在翻騰。我以為我學會了編程,啪啪啪打臉。然後硬著頭皮,不屈不撓,慢慢折騰了出來。(多年以後在回頭看自己寫的畢業代碼,簡直不堪入目)。


後來找了第一份工作,我拿著我的畢業設計,軟件設計師的資格證,46級證還有7788在當時我覺得碉堡了的證書,去了一家遊戲公司面試,並且順利通過。有著大學這些經驗,我覺得我學會了編程。當我看到公司的超級龐大的代碼(因為已經實現了很多核心功能),以及我的第一個任務,我懵逼了。我盯著屏幕,內心很多隻小動物在翻騰。我以為我學會了編程,啪啪啪打臉。然後硬著頭皮,不屈不撓,慢慢折騰了出來。


工作了幾年後,慢慢的從小的功能模塊,到做比較核心的功能。接觸底層的框架,我覺得我差不多我學會了編程。後來,開始要對整個架構進行調整,對項目進行優化,分佈式,高併發等等我盯著屏幕,內心很多隻小動物在翻騰。我以為我學會了編程,啪啪啪打臉。然後硬著頭皮,不屈不撓,慢慢折騰了出來。

現在還在學會編程的途中前行,我曾經以為學會編程不是一件難事,然而越走才發現,這個坑越深,但是一名碼農真的需要有不怕折騰的精神。越是坑越要挖,挖的坑越深,得到的成就就越高。


CODER曾小奇

1、理論與實踐的差距:說的簡單點,就拿數學舉例,所有的數學理論、公式你都掌握了就一定會做題了麼?答案顯而易見。你學會了編程語言,只是有了開發的基礎而已,但那只是理論上的,作為工科來講,必須通過不斷的練習和實踐,才能對代碼產生條件反射,遇到代碼調試不通時才能很快找到解決方法;



2、需要數學思維:開發是個系統工程,必須有嚴密的邏輯思維,才能將各功能模塊有機結合起來,而數學就能開發和調動人的邏輯思維,所以要做一個出色的開發人員,還得學好數學。編程中涉及到的數據結構和算法,更是需要數學思維,才能很好的進行鑽研;



3、學好英語:中國人的固有思維,看到全英文的首先就發怵,更別提往下走,只有強大的英語基礎,才能讓編程人員耐著性子編寫下去。不管是語言也好,開發案例也好多是全英文文檔,想要提高自己,首先提高自己的英文水平吧。



綜上,開發要有思路,其實是個綜合的過程,並不是說你學會了一種編程語言就有思路的,而是需要不斷的練習、實戰,才能將書本上的代碼激活,逐漸轉化為你自己的,“紙上談兵”會讓你永遠只是個代碼搬遷戶,一旦需要綜合起來,你零散的代碼就始終合不起來,所以,提問者可以去正規企業實習或在網上接一些項目來實戰,這樣可以儘快找到開發的感覺和思路。


濱哥675

1、沒有經驗

你所說的學會編程語言,只是學會了基礎,與項目的實際開發還是有很大差別的。

可能你會用編程語言解出一個老師佈置的程序題目,如:寫出一個迷宮算法,排序算法等等。但是,如果項目經理給你一個需求,讓你去實現,那你就會摸頭不知腦了。因為你以前就完全沒做過這方面的事情,怎麼可能會有思路尼?

學數學,得有數學思想,學編程,也得有編程思想,但這些思想還是建立在你的經驗的基礎上而來的。所以,你缺乏的還是經驗

2、如何克服

自己需要虛心學習,不能半途而廢,就是說遇到困難就想著去迴避,或者是自己找一些理由,認為自己做不好這件事情是情有可原的。

其實不然,剛開始去做項目,都會經歷一個陌生到熟練的過程,而這個過程中會一到各樣的困難、挫折、leader的指責等等,但是這些都是你成長為一名程序員所必須要經歷的。

所以,需要自己謙遜,迎難而上,沒付出,怎麼會有收穫尼?


程序小屋

我看了一下各位大佬的回答,都答得挺好了,各有所長,我在這裡只想發表一些自己的看法,互相交流。

學會編程(或者說學會了一門語言的語法規則)和運用編程(運用這一門語言)是有很大區別的。



尤其是開發過程中去使用這一門語言,因為實際情況是變化多樣的,可能是我們從來沒有見過的情況。這裡面就涉及到了如何將這些問題提取出來,轉化成我們已知的問題(這與建模的思想很像)。

而且在開發的時候,我們無法像平常寫代碼那麼隨意,可能會去用到各種編程的思想(這些思想對於一個團隊,或者一個項目的開發可能非常有幫助。),但有時候由於自身經驗的缺乏(還沒有習慣這樣一種模式),所以開發的時候沒有什麼思路。

另外,掌握編程語言,可能還需要去了解一下相關的設計模式,通過什麼樣的架構去完成一個項目,雖然開始很難去適應,但是習慣了之後,會發現這樣的方式很強大,也很方便。(感覺可以類比一下開發過程中命令行取代圖形界面)


Python雁橫

為什麼學會編成語言後,實際開發中卻沒了思路。?

這個問題就好比你學會了中文,但是你就一定能寫出好的文章嗎?



語言是語言,思路是思路。思路是在學會編程語言之後形成的一種。有的人看起來編程語言基礎比較紮實了,但是怎麼開發起來就沒有思路了呢。其實這在現實中是一個非常正常的現象。編程語言可以很快的學會,但是思路卻從一個人的工作經驗中來獲得,也就是說你工作時間越長,可能你在開發過程中的思路越清晰。


所以一門編程語言,不是說你在幾個月之內就可以完全掌握。就好比你熟練一門武功,比如乾坤大挪移。你已經,對這本武功秘籍倒背如流,但是,並不代表你能熟練的使出他的招式。

以上是個人的一些看法,如有不同意見,歡迎指教,謝謝。



分幾種情況吧

另一種是設計上出現了問題,需求不明朗,不知道如何選,那就只能和產品或者甲方硬剛,不要慫。一開始出現問題以後問題只會遺留,問題越來越大,後期改變需求簡直。。。

再有就是什麼思路都有,就是寫不出來,這樣的情況只能練,多寫一些,多看一些。哪怕多造些輪子。代碼量是程序員的必經之路。哪怕是天才,也繞不過去。


何叔說

編程編程,就是指編寫程序,編寫規則來解決問題,最終是要你有解決問題的能力。而編程語言只是讓你通過計算機的方式來解決問題的一種工具。所以樓主遇到問題的時候一定要多角度思考(包括技術方面,產品方面等等),考慮清楚了,再去想如何用編程語言這個工具去解決這個問題(當然也可以不通過編程語言解決( ー̀εー́ ))。


山下大大狼

讓我這個農村文盲來談談自己吧,不講知識不講專業,單純談談心靜。這麼多年我始終認可一句話,懂得越多才顯得自己越無知!技術,離不開理論,也拋不開實踐!360行,行行都有翹楚,有些人當做工具,藉助這個工具從基礎理論到一步步實踐,充實自己,完善自己,超越自己。那麼成功只是附帶品!也有一部分覺得一份可有可無的工作!少了份熱愛,多了份敷衍。簡單說下我自己,我喜歡音樂,沒懂之前音樂就是吼兩嗓子的事,系統的去了解,從理論,氣息,發聲,咬字等等之類的,感覺自己從河裡掉進了海洋,不斷的汲取知識,瞭解的多了,雜了,亂了!不知道那種才是適合自己的!練廢了!尋求本心,慢慢的讓大腦稀釋掉雜亂無章的套路 方法!讓你的內心去適應自己,留下的就是你需要的!

看山是山 看山不是山 看山還是山

不忘初心 方得始終!


分享到:


相關文章: