1. 作為一個好的程序員,都需要具備哪些基本的
你好,小U來為您解答這個問題,眾所周知,程序員是從事程序開發、維護的專業人員。
作一個真正合格的程序員,需要具備:
1:團隊精神和協作能力
團隊精神和協作能力是作為一個程序員應具備的最基本的素質。
2:文檔習慣
文檔是一個軟體系統的生命力。作為代碼程序員,必須將30%的工作時間寫用於技術文檔。沒有文檔的程序員勢必會被淘汰。
3:規范化的代碼編寫習慣
知名軟體公司的代碼的變數命名、注釋格式,甚至嵌套中行縮進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和糾錯,也有助於不同技術人員之間的協作。
4:需求理解能力
程序員要能正確理解任務單中描述的需求。
5:模塊化思維能力
作為一個優秀的程序員,其思想不能在局限當前的工作任務裡面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。
6:測試習慣
測試是軟體工程質量保證的重要環節,但是測試不僅僅是測試工程師的工作,而是每個程序員的一種基本職責。程序員要認識測試不僅是正常的程序調試,而要是要進行有目的有針對性的異常調用測試,這一點要結合需求理解能力。
7:學習和總結的能力
程序員是很容易被淘汰的職業,所以要善於學習總結。
2. 程序員需要具備的哪些素質
隨著計算機行業的發展,市場上程序員的數量越來越大,很多人開始轉行學習軟體開發,這就導致程序員開始分為三六九等。怎麼才能成為優秀的程序員呢?程序員不僅需要掌握開發技能,職業素養也是非常關鍵的。那麼作為程序員需要具備哪些素質呢?下面電腦培訓為大傢具體介紹。
一、團隊精神和協助能力
協助是一個團隊裡面不可或缺的精神,這是一種互相信任的無私奉獻,在任何團隊中,團隊裡面的隊員都是互補的。對於一名優秀的程序員來說,他知道團隊的力量是遠遠超過一個人的力量。在工作中沒有個人主義,團隊不僅強調個人的工作結果,更重要的是強調團隊的整體表現。IT培訓認為團隊不僅依賴於頭腦風暴和決策,還依賴於其成員的貢獻。我們都知道一根筷子容易折,一把筷子難折斷,這就是團結的力量。
二、求新求精
優秀的程序員善於尋求新的想法,並且能夠對新技術充滿更多的好奇心。
三、條理清晰
毫無疑問,優秀程序員解決問題的想法特別明確,事情能夠有條不紊的進行。北大青鳥認為對於很多程序員來說,編寫代碼是一種能夠使人非常幸福的過程。
四、書寫注釋和文檔能力
很多人認為編程就是寫代碼,其實這種想法是非常片面的。軟體開發主要是由代碼和文檔組成的,一名優秀的程序員,不僅需要寫好代碼,還需要具備很強的注釋和文檔書寫能力。注釋和租埋文檔是非常重要的環節,如果搜型稿在寫代碼的過程中沒有進行注釋和文檔,後期進行代碼修改和調整是非常困難的,並且還會出現很多麻煩。北京北大青鳥認為程序員不僅需要具備編寫代碼的能力,在學習中掌握注釋和文檔也是非世孝常關鍵的步驟。
3. 如何成為一名優秀的程序員
如何成為優秀的程序員,這個問題我也曾經問過我自己,可惜我做的還不夠好,經常這么反問自己的話,會提升你對開發流程工藝思考,同時沒事也可以問問身邊的是程序員的同事,我相信你們會引發一些有趣的討論,但是回龍觀計算機學習個人認為掌握下面五個技能非常重要,看看吧,為了我們都成為優秀的程序員。
1,問題分解
編程很大程度上是來解決問題,但是寫代碼之前,程序員需要弄清楚如何解決這些問題。一個優秀的程序員會嘗試把這些問題進行拆分,然後一部分一部分去開發,直到每個部分都可以很容易的解決。但是僅僅做到這些還不夠,一個優秀的程序員會發明一種工作模式,利用現有的標准化邏輯去開發,便於實現和測試。一些很復雜的程序,復雜部分的原因是代碼實施不能完美的解決問題,而且代碼難以理解。
當遇到難題建模,曾經采訪優秀的開發者:「很少有程序是不能修改的,但是如果你看一段代碼,它往往看起來很復雜,很多人覺得無從下手,他們往往這是缺乏思考的一種表現,而我會捲起袖子試圖修復它,慢慢的其實這些都不算困難,而且很容易。」
2,情景分析
好的開發人員有能力考慮許多不同的場景。這既適用李喚於程序中的邏輯,以及內部和外部事件可能發生。考慮不同的路徑的邏輯,他們會問這樣的問題:如果這個論點是零?如果這些條件是真的嗎?這是線程安全的方法嗎?發現軟體哪沒凱需要處理什麼類型的事件,他們會問這樣的問題:如果這個隊列變得滿了嗎?如果沒有響應這個請求嗎?如果其他伺服器重啟,這個伺服器重新啟動嗎?
優秀的程序員會問自己:「這怎麼能算結束呢?」說明他們還想察緩測試自己的能力,相比之下,沒有經驗的程序員大多隻考慮自己,能夠暫時解決問題就行,當然大部分不可避免的意外情況發生,他們都有方法解決。
3,所示命名
編程在很大程度上由命名的事情:類、方法和變數。如果做得好,程序變得很大程度上是在自我記錄,這意味著程序的功能是非常清楚的執行源代碼。自我記錄的代碼的一個作用是,它自然會導致許多較小的差錯,而不是幾個很大的功能缺陷,因為這些優秀的代碼將存在很多的地方。
想出好名字要困難得多。我喜歡一句話:「計算機科學中只有兩個艱難的事:緩存失效和命名的東西。「部分命名是很困難的,因為它需要清晰的在腦海中每個名字代表什麼。有時這是不清楚,但隨著開發的進行才會顯現。因此,重命名命名一樣重要。」
命名的東西也還包括提出的概念,以及這些概念應該叫什麼。通過考慮周全,明顯命名概念一致地使用,編寫的程序才會變得更容易。
4. 一個好的程序員應該具備什麼品質
我總結了很多品質,比如:
解決問題的能力
獨立思考的能力
要好奇,要有探索的精神
邏輯是清晰的,在流行的語言中可以清楚地理解技術問題
良好的英語閱讀能力
數學好
經過一段時間的觀察,我發現所有上述特徵,都可以通過行為習慣得到,也就是如果你有以下習蔽和慣,那麼你可能擁有且不限於以上所有的特質。
大多數程序員喜歡談論編程語言
編程語言是目前為止大多數程序員談論的話題,他們喜歡討論哪種編程語言更有優勢,專注於編程語言列表,因為這樣,一些人將會繼續學習一種新的編程語言,而不是普通程序員的證書。相反,由於缺乏經驗,另一部分無法分辨哪一種語言對他們來說是最好的,從而延遲了行動,陷入了無限的糾纏之中。在不同的編程語言的陣營之間有時會發生爭吵,這被視為對他們的信仰的辯護,反過來,也會有一群旁觀者。
大多數人都關注這個層次的編程語言,然而,最大的原因可能是編程語言是編程世界的門,它也是最實用的工具,學習一門編程語言,你可以使用一種新的方式和計算機交互。
但是,不同於現實世界,在現實世界中,學習一門外語,相伏握當於打開一個新的世界,學習英語,例如,你可以免費穿梭在英語國家,了解他們的文化和歷史,掌握第一手的外語知識,這樣他們就可以幫助你更好的決策,可以說如何掌握一門外語可以讓你認知線性增長。相反,在計算機世界中,你學習一種語言,它不會帶給你1+1=2的影響,因為從本質上講,我們的目的不是學習更多的編程語言,但使用電腦,幫助我們來完成特定的任務,想知道同樣的任務,甚至可以通過幾種不同的語言。
我曾經見過一個問題,一個提問者可能是一個新人,他說:我想學習編程,但我不知道我是否會先學習Python或Javascript。回答的人對他說:「你在這些事情上花的時間,也許能學到其中之一。」
是的,優秀的程序員不會花大量的時間編程語言,因為他們專注於更重要的事情。
大多數程序員都不重視基礎
IT行業的門檻很低,任何學過編程語言的人都能進入這一行,更深層的意思是工作是重復性勞動,不需要太有創造力的人才。
在聊天時,經常討論演算法的主題。例如,「演算法在工作中很重要並不重要。許多人給出的答案並不重要,因為他們在日常工作中不被使用。這是一個典型的實用主義的答案,也非常令人困惑,因為「日常工作比」它是真實的,但是這個事實並沒有推導出演算法對於這個結論來說並不重要。
演算法是非常重要的,就像數學是所有學科的基礎,所以它是非常重要的數學,演算法是系統的靈魂,是區別不同的軟體晶元,最典型的例子是谷歌的搜索引擎,它是依賴於著名的PageRank演算法與其他市場上搜索產品不同,該演算法直接影響到搜索體驗,人們想要的結果的概率大。
提高演算法的能力不僅可以提高軟體的競爭力,沙河電腦培訓認為還能提高我們的邏輯思維能力,人與人之間的差異實際上在於思維能力的差異,如果你每天都在敲門的話還有這類代碼,你的思維有多大不會改變,但在人工智慧的時代,缺並慶你會考慮監督學習,無監督學習演算法,我認為你的未來會更好。
5. 如何成為一名優秀的程序員
在大數讓悶據時代下,很多人認為軟體開發是非常全能的職業,軟體開發人員不僅精通Java語言,還掌握前端開發和後端開發等技術。想要成為一名優秀的程序員,需要掌握的知識是非常多的,並且還應該知道自己的職責。下面電腦培訓為大家介紹成為優秀程序員需要具備的條件。
1、前端開發人員的職責
前端開發最重要的就是網站建設和用正滑悔戶體驗。首先,我們需要了解網站或應用程序的功能,然後開始開發(並在上線之前不斷優化它。在整個過程中,我們花費很多精力來完善我們建立的網站,IT培訓認為所做的一切就是讓網站值得用戶的喜愛。只有這樣,您才能保留用戶並鼓勵他們再次訪問我們的網站。
2、了解用戶的需求
只有了解我們的用戶才能為其舉正用戶創造出色的用戶體驗。開發人員為廣泛的用戶提供互聯網服務,但是用戶和開發人員師不同的。用戶使用的終端設備是多種多樣的,用戶還會使用不同的瀏覽器。例如,四種最常用的瀏覽器是Edge,Chrome,Safari和Firefox。除此之外,還有其他瀏覽器。
3、扎實的編程基礎
在開發過程中,需要掌握HTML、CSS以及JavaScript等相關知識,這是進行開發的基礎工具,如果連基礎工具都不了解,想要成為優秀的開發人員是不可能的。說到代碼,昌平北大青鳥認為最關鍵的就是代碼的質量,干凈清晰的代碼易於維護,並且能夠提高用戶的體驗。
4、良好的溝通能力
軟體開發人員通常不善於交際。在條件允許的情況下,很多軟體開發程序員不喜歡與其他人進行交談,他們寧願坐在電腦前寫一天的代碼。很多時候不想與任何人交談,那就沒關系了。但如果項目需要,北大青鳥北京嘉薈校區官網認為最好還是與他人溝通,能夠解決很多工作中的問題。
6. 一名優秀的程序員必備的素質是什麼
程序員必備的七種素質x0dx0a1:團隊精神和協作能力 x0dx0a把它作為基本素質,並不是不重要,恰恰相反,這是程序員應該具備的最基本的,也是最重要的安身立命之本。任何個人的力量都是有限的,即便如linus這樣的 天才,也需要通過組成強大的團隊來創造奇跡,那些遍布全球的為linux寫核心的高手們,沒有協作精神是不可想像的。一旦進入系統的研發團隊,進入商業化和產品化的開發任務,缺乏這種素質的人是不合格的。 x0dx0ax0dx0a2:文檔習慣 x0dx0a說高水平程序員從來不寫文檔的肯定是乳臭未乾的毛孩子,良好的文檔是正規研發流程中非常重要的環節,作為代碼程序員,30%的工作時間寫技術文檔是很正常的,而作為高級程序員和系統分析員,這個比例還要 高很多。缺乏文檔,一個軟體系統就缺乏生命力,在未來的查錯,升級以及模塊的復用時就都會遇到極大的麻煩。 x0dx0ax0dx0a3:規范化,標准化的代碼編寫習慣 x0dx0a代碼的變數命名,代碼內注釋格式,甚至嵌套中行縮進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和糾錯,也有助於不同技術 人員之間的協作。有些codingfans叫囂高水平程序員寫的代碼旁人從來看不懂,這種叫囂只能證明他們自己?根不配自稱程序員。代碼具有良好的可讀性,是程序員基本的素質需求。沒有規范化和標准化的代碼習慣,研發之間的協作是絕對不可想的。 x0dx0ax0dx0a4:需求理解能力 x0dx0a程序員需要理解一個模塊的需求,很多程序員寫程序往往只關注一個功能需求,他們把性能指標全部歸結到硬體,操作系統和開發環境上,而忽視了本身代碼的性能考 慮,性能需求指標中,穩定性,並訪支撐能力以及安全性都很重要,作為程序員需要評估該模塊在系統運營中所處的環境,將要受到的負荷壓力以及各種潛在的危險 和惡意攻擊的可能性。就這一點,一個成熟的程序員至少需要2到3年的項目研發和跟蹤經驗才有可能有心得。 x0dx0ax0dx0a5:復用性,模塊化思維能力 x0dx0a經常可以聽到一些程序員有這樣的抱怨,寫了幾年程序,變成了熟練工,每天都是重復寫一些沒有任何新意的代碼,這其實是中國軟體人才最大浪費的地方,一些重復性工作變成了熟練程序員的主要工作,而這些,其實是完全可以避免的。 x0dx0a復用性設計,模塊化思維就是要程序員在完成任何一個功能模塊或函數的時候,要多想一些,不要局限在完成當前任務的簡單思路上,想想看該模塊是否可以脫離這個 系統存在,是否可以通過簡單的修改參數的方式在其他系統和應用環境下直接引用,這樣就能極大避免重復性的開發工作,如果一個軟體研發單位和工作組能夠在每 一次研發過程中都考慮到這些問題,那麼程序員就不會在重復性的工作中耽誤太多時間,就會有更多時間和精力投入到創新的代碼工作中去。 x0dx0a一些好的程序模塊代碼,即便是70年代寫成的,拿到現在放到一些系統裡面作為功能模塊都能適合的很好,而現在很多軟體一升級或改進就動輒全部代碼重寫,大部分重復性工作無謂的浪費了時間和精力,這是我們應當刻意克服的弊病。 x0dx0a6:測試習慣 x0dx0a作為一些正規化的開發而言,專職的測試工程師是不可少的,但是並不是說有了專職的測試工程師程序員就可以不進行自測;軟體研發作為一項工程而言,一個很重要 的特點就是問題發現的越早,解決的代價就越低,程序員在每段代碼,每個子模塊完成後進行認真的測試,就可以盡量將一些潛在的問題最早的發現和解決,這樣對 整體系統建設的效率和可靠性就有了最大的保證。 x0dx0a測試工作實際上需要考慮兩方面,一方面是正常調用的測試,也就是看程序是否能在正常調用下完成基本功能,這是最基本的測試職責,可惜在很多公司這成了唯一的測試任務,實際上還差的遠那;第二方面就是異常調用的測試,比如高壓力負荷下的穩定 性測試,用戶潛在的異常輸入情況下的測試,整體系統局部故障情況下該模塊受影響狀況的測試,頻發的異常請求阻塞資源時的模塊穩定測試等等。 x0dx0a當然並不是程序員要對自己的每段代碼都需要進行這種完整測試,但是程序員必須清醒認識自己的代碼任務在整體項目中的地位和各種性能需求,有針對性的進行相關測試並盡早發現和解決問題,當然這需要上面提到的需求理解能力。 x0dx0ax0dx0a7:學習和總結的能力 x0dx0a程序員是人才很容易被淘汰,很容易落伍的職業,因為一種技術可能僅僅在三兩年內具有領先性,程序員如果想安身立命,就必須不斷跟進新的技術,學習新的技能。善於學習,對於任何職業而言,都是前進所必需的動力,對於程序員,這種要求就更加高了。 x0dx0a但是學習也要找對目標,善於總結,也是學習能力的一種體現,每次完成一個研發任務,完成一段代碼,都應當有目的的跟蹤該程序的應用狀況和用戶反饋,隨時總結,找到自己的不足,這樣逐步提高,一個程序員才可能成長起來。
7. 做一名優秀的程序員需要什麼條件
(1).要喜歡上寫程序,如果沒有喜歡上,那就要學會去培養。程序員需要整天趴在電腦前,經常沒日沒夜的,非常辛苦,而且工作來不得半點虛假,少寫一個標點符號都不行。喜歡的人,日子過得非常開心,每寫一行代碼,都會有新的成就,尤其當自己的作品被廣泛應用的時候,那種自豪感油然而起。不喜歡的人,坐在電腦前極端無聊,被進度壓得喘不過氣來,天天為找bug改bug生氣。個人深有體會!這個「喜歡」就要大家在學習的過程中去體會。
(1).程序員應該是有感情的,程序員的程序最終是由用戶來評價的,而不是老師,或者我們的BOSS。設計程序時,要講究貼心,境界:我們也是Composer!
(2).程序員應該講究團隊協作,分配給團隊的大項目,不是一人之力能夠應付的,請尊重別人的代碼,以及設計,彼此需要全心全力配合
(3).有堅韌不拔的精神,我們編的不是程,是寂寞。愛上程序設計,靠編程潛移默化性格,大多數成功的程序員都是相信自己的人,所以,多多鼓勵自己一定是最好的。
一、優秀程序員的標准
1. 能夠准確地評估你的工作。
2. 第一時間提交有質量的工作成果。
3. 建立快速的反饋循環。
4. 確保代碼的准確性與後續跟進的協調性。
二、態度生活方面
1.踏實的工作態度;認真負責,少犯錯誤。
2.充滿熱情,努力工作;有團隊合作精神,能善於和別人相處。
3.有預見性,預先感測未知因素預估風險或後果。
8. 優秀程序員應該注意什麼
怎樣才是一個好的程序員呢?一個好的程序員最重要的是有永不放棄的精神。如果一個程序員沒有永不放棄的精神,那就不能是一個優秀的程序員,通往成功的道路是非常不容易的,那麼如何才能成為一名優秀的程序員呢?下面雲南電腦培訓為大家介紹優秀程序員應該注意什麼。
一、不輕易放棄
想要成為一名真正的程序員,最重要的是對於自己充滿信心,不要輕易放棄。編程時我們會遇到無數的握亂坦問題和困難,並且還會面對失敗,但是最終我們都會迎來成功。想要成為一名優秀的程序員,需要清楚上面的問題,在面對失敗的時候不放棄,通過更多的努力走向成功。
作為程序員,我們可能會坐在電腦前10或甚至數十小時解決問段桐題。一個問題已經解決,可能還有其他問題。如果你不能堅持下去,也許以前所有的努力都會白費。雲南IT培訓認為容易被擊敗的人是不能成為程序員的,並且不會成功。堅持不懈是最有價值的,能夠堅持的程序員都是相信自己的人,他們總是鼓勵自己。如果你這樣做,你就可以解決很多困難,走向成功,這就是堅持下去的理由。
二、不驕傲自滿
在整個編程過程中,需要不斷的研究和學習,這是一個非常漫長的過程。一名優秀的程序員是永遠不會覺得自己足夠好的,他會讓自己不斷改變和進步。一個自大自滿的人不是一名優秀的程序員,並且很快就會面臨落後和失敗。因此,昆明IT培訓發現,一名優秀的程序員會覺得自己不夠好,需要不斷的完善自己,不會在別人面前故意炫耀,這是一種謙虛的表現,只有努力的人才能親身體驗。
三、擁有激情和求知慾
一名優秀的程序員是需要充滿激情和活力的,對知識的渴望是軟體開發的驅動力。只有當你充滿求知慾的時候,你才能繼續學習陪虧,不斷的充實自己,滿足自己求知慾,這樣才能不斷的超越自己。昆明電腦培訓認為如果一個人失去了對編程的興趣,那麼很快就會被時代所淘汰。
9. 如何成為一名合格的程序員
很多人想要成為程序員,在學習編程的過程中,面對各種bug和源源不斷的問題,有時會對自己是否適合編程這一問題產生困擾。
作為一名教授全棧Web開發的教育工作者,我已經帶領很多新手成為了程序員。好消息是,我發現沒有任何人是不能學習編程的。我把它看作是一種基本的人類技能,就像閱讀、寫作和算術一樣,任何人都可以做到。它是我們人類能力的一部分,只是需要學習。
在過去的幾年的教學中,我目睹了不同的學生在學習過程中的斗爭,以及在他們的掙扎中出現的一些共同問題。
下面的列表將幫助你了解你是否喜歡編程
1、缺乏好奇心
如果你對計算機是如何工作的缺乏好奇心,那麼,作為一個程序員,你將永遠不會成功。
學習的一個基本要求是對你所學的東西有積極的興趣。如果你沒有一個對技術好奇的頭腦,你就沒有精力去堅持學習要成為一個成功的程序員所需要的廣博而深入的知識。相比之下,技術的世界就像一個巨大的海洋,裡面充滿了各種有趣的領域、相互聯系的思想和各種可能,它們可以激發人們的想像力。想要潛入這片海洋並發現你所能發現的一切,需要內在的動力。
找到你的好奇心:問問你自己,編程是否真的讓你感興趣?如果沒有興趣,去找你感興趣的東西,以節省時間和精力。但是如果你的答案是感興趣,那麼就強迫自鄭襪己去發現一些你以前沒有注意到的新事物,認識到浩瀚的技術海洋,再往下潛一點。
2、缺乏自主性
如果你不培養自己解決問題的能力,你就永遠不會成為一個成功的程序員。
毫無疑問,要成為一個成功的開發人員,你必須對自己的學習能力充滿信心。這實際上是一項基本的生活技能,如果你年滿18歲,沒有人有義務教你任何東西。這就是現實。當你想學習技術所需的技能時,首先要學會的是,在谷歌中輸入你想要的任何東西並獲取你需要的信息。除此之外,所有編程語言都有文檔和規范,這些文檔和規范對語言的工作方式解釋的非常清楚,它們就像字典一樣。作為一個程序員,最快速、最可靠的學習方法就是簡單地閱讀這些文檔。
當你有問題的時候,在問別人答案和查閱官方文檔之前,強迫自己先搜索一下,節省別人的時間。
3、面對問題缺乏毅力
如果你在遇到問題時輕易放棄,作為一個程序員,你將永遠不會成功。
編程的本質是解決問題,這也是計算機產生的全部原因!每當你開始編寫一個程序時,你總是會遇到一大堆問題。一旦你解決了一個問題,那麼幾乎總是有另一個問題在後面等著你。你在進步,但總是會有新的問題要面對。
這堆問題會讓人望而生畏,令人感到沮喪。如果你覺得程序應該「能用就好」,那麼你就沒有精力堅持下去,因為問題還在繼續出現,它們會一點一點地擊潰你的情緒和決心。從字面上來說,你的工作就是找出程序為什麼不能跑起來。
從我在授課上的經驗來看,通常每個班都有一兩個學生,和其他學生相比,他們似乎更容易遇到更多的問題——通常是非常隨機和模糊的問題。我提醒學生,他們面對的問題越多,學習越深入、越徹底的可能性就越大。如果他們能通過這些問題獲得深刻的理解,他們會很快發現他們變得更加自信了,因為他們面對和解決的問題比普通學生多。
你需要認識到,問題不僅僅只是問題,它實際上也是挑戰。你所面臨和克服的每一個挑戰都能讓你更深入地理解技術,更好地面對新的挑戰,並迅速解決舊的挑戰。
4、解決問題之後沒有成就感
如果你在解決一個問題後沒有興奮感和成就感,作為一個程序員,你將永遠不會成功。
與上一個問題相關的是,你成功地解決了一個問題,卻缺乏「良好的感覺」。當修復bug和問題變成了一個永遠不會結束的事情時,你會失去與克服問題的動力。
當你解決一個問題時,你需要的是多巴胺的釋放。這類似於在電子游戲中完成了一個關卡,或者解決了一個像縱橫字謎或數獨這樣的挑戰。我們都知道,堅持通過一項挑戰,然後最終贏得比賽,一般都會有成就感和興奮感。但是如果你失去了感受這些快樂的能力,或者從一開始就沒有真正有過這些感受,你將無法體驗到編程帶來的快樂。如果你把編程看作是一種磨礪,你只想盡可能容易地得到結果,那麼你永遠不會真正成為一個成功的程序員。
無論何時,當你解決了一個一直在努力解決的問題時,無論這個問題多麼微小,你總是為你的成就感到驕傲。你需要休息一下,祝賀你自己完成了一項出色的工作,讓成功的感覺滲透進你的心裡,為你即將面臨的下一個問題注入活力。
5、無法獨立思考
如果你期望別人為你著想,並且主動看到你自己所在的處境喊純激的細節,你將永遠不會成為一個真正成功的褲脊程序員。
當你在學習新的東西時,很容易感到缺乏知識和經驗,並沒有自己的觀點。主動做事或者說錯話似乎是有風險的。對於錯誤,我們的內心都有一種恐懼感。當對錯誤的恐懼抑制了你的探索和好奇心時,你會扼殺開發真正知識、從經驗中獲得的知識和「失敗」的能力。當你需要依靠「權威」的觀點、一個受歡迎的博客、一個最佳實踐或「教科書」的答案時,那麼你就沒有真正地整合編程的知識。你需要對什麼有效,什麼無效形成自己的觀點。你需要理解為什麼你認為你的解決方案有效,以及使用這個方案有什麼好處。你需要建立一個微妙的視角,超越那些顯而易見的東西。你需要能夠「證實」你的立場。
為自己著想。通過你的經驗和批判性思維技巧,發展出你自己的思想體系。做出合理的猜測,堅定立場,並願意隨著新信息的出現而改變立場。
6、僵化、狹隘、混亂的思維
如果你的思維僵化,並且難以保持代碼的條理化,那麼你將永遠無法成為一名真正成功的程序員。
我有時在學生中看到兩個極端。第一種是僵化和狹隘的思維方式。擁有這種態度的人拒絕幫助,盡管會有反饋,但不會有改變。他們看事情只從一個角度看,別人給的建議被忽略。
我看到的第二個極端是思維混亂。學生們似乎使事情變得更加復雜,他們的代碼雜亂無章,難以理解。他們過度思考問題,寫100行代碼,而其中只有10行是有用的。
當這兩種心態結合在一起時,結果就是一種用蠻力的方法去設計程序。我們需要的是回顧解決方案,重新評估它,放棄最初的方法,並重新組織方法。
無法看到其他可能性或無法反思反饋會抑製成長的能力。思維雜亂無章會減慢你的成長速度,阻止你看到那些原本顯而易見的模式。你的工作質量也會下降。
自我反省。你需要退後一步,看看你是接觸的事物的大局是什麼樣子的。你要怎樣才能做得更好?你能做些什麼讓你的生活更輕松嗎?你需要什麼來幫助你?
7、需要「正確」的答案,而不是識別一系列「好」和「壞」的答案的方法
如果你認為編程的最終目標是找到正確的解決方案,而不是一系列解決方案,那麼作為一個程序員,你將永遠不會真正成功。
當開始學習技能或編程時,學生往往想知道他們所做的是否「正確」,而答案總是「視情況而定」。
計算機科學是一門評估權衡的科學。在不同的環境下,哪條路更好,這完全取決於所處的環境和目標。當你把編程看作是一個有正確答案或錯誤答案的測試時,你就失去了對全局的認識,放棄了你的創造力。任何答案都可以是「正確的」,前提是你能根據具體情況證明這一點。現實情況是,編程更像是寫詩或寫短篇小說(如果程序很大,則可能是小說)。在你的代碼中可以看到一種美學和美麗,這些東西有時只有你和其他程序員能夠識別出來。你決定解決方案的原因,以及你對答案的設想,比「正確的方式」或「錯誤的方式」更重要。擁有一個藝術家的頭腦可以讓你編的程序具有選擇和可能性,而不是認為只有一種處理方式。這就是編程的美——有很多方法可以解決問題,考慮不同的可能性,然後決定哪種方法最適合當前的情況。
創造性很重要。你要認識到,解決問題的方法有很多種,通過經驗和積累,你會對哪些解決方案比其他解決方案感覺更好產生細微的理解。縱觀全局,想像不同的可能性,相信你的直覺,你會得到更滿意、更好的解決方案
如果你對學習編程感興趣,我鼓勵你開始這段旅程。記住提到的七條,並開始學習、探索在線資源,這些資源可以讓你快速學習。你不會後悔的!
合格程序員,對於一種計算機程序設計語言,我們將其分為語法、語義、語用三個層面。僅僅掌握語法是不夠的,不算學好。但是很多人,在履歷上寫自己掌握(甚至精通)了某種語言,其實就是解了語法,會寫簡單的程序而已。這就是為什麼我們行業特別不喜歡「精通」這個詞的原因。
現代軟體開發,規模都比較大,不是寫個HelloWorld那麼簡單,也不可能每個項目每件事都從頭開始造輪子,我們都是站在前輩、同行們的肩膀上工作的。也就是說,語言之外,還有「庫」這個東西需要掌握,不然就寸步難行。庫有語言級別支持的BuildIn的庫,比如JAVA裡面的util、concurrent,CPP的IOSTREAM、STL等等;更多的更豐富的還有第三方提供的庫,比如JDBC、Servlet、EJB的implementations等等。這些東西掌握了,幹活兒才可能得心應手,不然寸步難行。
比Libaray更高層一些的,是Framework。框架的作用在於,將某一方面開發的BestPractices搞到一起,給你提供一個更易用的、不關注底層的腳手架。比如做企業應用的,SpringFramework是標配了;訪問數據,Hibernate或者MyBatis也離不開,很少直接用JDBC去幹活的了;做WEB的,各種MVCFramework起碼得掌握一兩個(springmvcorstruts2?);做網路的,Netty,MINA怎麼也得掌握一個......總而言之,框架是繞不過去的一個門檻。
然後呢,就是環境、輔助工具。應用伺服器,怎麼也得會調試配置那麼兩個吧。TOMCAT是入門標配,JBOSS,WEBLOGIC之類,起碼要弄得跑得起來;針對不同應用場景,還要會選擇。開發/管理工具,ECLIPSE是標配、GIT和SVN起碼要搞熟一款;其它比如單元測試工具、Build工具、測試覆蓋率、CodeReview這些插件...也得知道怎麼用。
最後,通用的,計算機科學的基礎,不說多扎實,至少不能一竅不通。說起來就那幾大件,操作系統、數據結構&演算法、編譯原理、體系結構。要懂一點點,你才知道你編的程序是怎麼run起來的,哪兒可能存在效率問題性能瓶頸,除了問題知道怎麼debug。如果僅僅把計算機當作一個黑盒子,那也不算學好了。
最最後,還有一樣,就是你要訓練一下,快速理解領域知識的能力。你參與做一個項目,你懂的只是上面這些專業知識,但並不懂客戶的行業知識。如何盡快地理解業務,並用你手頭的工具實現業務邏輯,這點對程序員而言是非常重要的,否則你做的東西客戶總不滿意,GET不到重點,很麻煩。
我覺得這是一個合格的程序員的基本要求。你看,我並沒要求你懂需求工程、懂項目管理、懂架構設計、懂很多演算法、模式,甚至更深的專業知識。
10. 成為優秀的程序員需要什麼
如果要成為優秀的程序員正鏈的話,我覺舉吵孫得需要具備很多因素,因為程序員是非常難的工作,所以我覺得一定要有一定的恆心,也要讓自己的反應力夠快,有一定的信息技術的能力,這樣才能夠成為信息碰做員。