主要是勤奮刻苦、開拓思想、堅持不懈、不斷學習的精神。
1、先說素質:欲做事,先做人。做技術類的童鞋往往忽視做人,覺得學好習,搞好技術,就一定能獲得好的發展。其實未必,大部分程序員不是天才,也不是神通。要想讓別人教雹高你知識,與你分享技術,與你共事,素質是最關鍵的。高素質又高技能的人才才能獲得別人的敬仰與尊敬,也能獲得領導的賞識與提拔,更能獲得更高的回報和機會。
2、再說代碼:優秀的程序員必需能寫優秀的代碼,程序員就好比計算機界的作家,你寫的程序就如一篇篇優美的文章,計算機才能很好的閱讀並執行,別的程序員也能看懂你的代碼。最優勢的程序員寫的代碼就如詩歌一樣,引人入勝。
3、編程思想:java是面向對象編程,很多Java程序員,尤其是一些走培訓班的,不認真思考原理和思想,囫圇吞棗。結果學了技術,不懂思想,沒有掌握Java的精髓。
4、基礎扎實:有些Java工程師都做了好幾年了,結果一些最基本的知識還沒記牢,再編程的時候總用工具的提示,沒有工具就寫不出正確的代碼,這樣的人怎麼會成為高手呢,更不會被別人認為高手,就好比一個大作家連很多字都寫錯一樣。
5、編程速純肆棚度:優秀的程序員編程必不慢,這除了基礎扎實、經驗豐富外,更需要清晰的編程思路和節奏,在寫程序前,一定做好規劃和設計,預想到各種情況,尋找最快速的演算法。
6、注重效率:一個功能,張三用了100000行代碼,而你只用了300行代碼,那你做的既簡單又高效,運行速度還快,還省內存和資源,那你就是牛人,那個人就是低做則手。
7、學習能力:優秀的程序員永遠不停的學習,其學習能力是最強的。他隨時隨地掌握最先進的技術,這都離不開快速的學習能力。
Ⅱ c++為啥做起來沒思路啊。
第一,要用面向對象的思維方式去看待C++編程,即在C++程序員眼中,所有事物都是具有一些屬性的,我們只要實例化一個「具體的事物」即對象就可以使用它的屬性,比如一輛汽車,在面向過程編程,我們要開動它就需要為它添加一個開的函數,再調用這個函數就可以開了,但是在C++中我們就假設這輛車已經存在,它自己本身就有一個開的功能,只要存在一輛車,那麼這輛車就可以開了,其餘事物也都是大同小異。
第二,要多寫一些代碼,從最簡單的開始,不要好高騖遠,一步一步來,慢慢的就有感覺了。
第三,多看看別人寫的代碼,既要讀懂又要學習別人的思想,即博眾家之長而超之。。
以上均為個人看法,採納需謹慎!
Ⅲ 編程怎麼才能讓自己有思路呢
其實很簡單
首先明白你要寫一個什麼東西【比如你要寫一個登陸的程序】
然後分析你這個程序要那些步驟來完成 【以登陸舉例】
(1)登陸頁面寫好
(2)分析基礎元素有登陸賬號,登陸密碼,為了安全會有驗證碼 然後提交登陸
(3)這里就說登陸程序了 你把這些參數提交到後台,你的程序就開始了:
【1】驗證驗證是否正確
【2】驗證賬號是否存在
【3】驗證賬號密碼是否正確
【4】驗證通過記錄session你這個登陸信息
通過基本分析你得到了這個程序大概要寫哪些步驟 當然我寫的是簡單的例子分析,如果要更安全肯定還有一些操作
把你這些步驟以注釋形式寫道你的編程內,按照你的思路步驟來逐步編寫
編寫完成可以考慮下你的思路是否可以精簡步驟,滿滿磨練就好了
Ⅳ 我是幹了八個月的程序員,幹了十幾年的同事給我說我腦子不靈活,思維嚴謹,我是不是該轉換一下做事思路
既然他這么說,而且他有十多年的工作經驗,那肯定只看出了你工作上的一些弊端,那你可以虛心的請教他,你也應該轉換一下工作思路,因為程序員這工作比較枯燥,但是也不能太死板。能盡量寫短一些的代碼就完成工作比繞個大圈寫一堆代碼完成工作要好得多呀,效率也高。
Ⅳ 怎樣做一名高效率程序員
1、理解編程語言的原理
三流的人才懂應用,二流的人才懂開發,一流的人才懂原理。各種語言之間存在著相似的地方,掌握語言的原理是必不可少的。最重要的,讓語言去適應項目,反之亦然。
2、向優秀程序員學習
你有一個蘋果,我也有一個蘋果,我們交換蘋果,你我還是有一個蘋果;你有一種思想,我也有一種思想,我們交換思想,你我就有了兩種思想。
與優秀的程序員為伍,你將吸收的最實用的經驗,這遠比你一個人自學、死磕編程來的快一些。有一句話說到好,與臭棋佬下棋,棋會越下越臭。不可否認這樣一個事實:和什麼樣的人在一起,就有什麼樣的格局,就會有什麼樣的人生。
3、了解數據結構和演算法
如果你要成為一個高效的開發者,就必須學會快速排序、學會辨認O(n2)程序、學會編寫遞歸函數。
學會多種語言,你便會更清楚不同的框架是相同問題的是如何解決的。盡可能去了解底層命令(plumbing),以便能夠作出明智的決定(Web框架是怎麼存儲session狀態的?Cookie到底是什麼?)。
4、精通一個編輯器
高效開發者通常是用IDE編輯器嗎?其實不是的,他們更常用的文本編輯器,因為這樣更會學到東西。
如果使用編輯器選擇通用的Emacs或Vim,自然是最好的。其次,挑選你的首選平台最支持的。使用宏,不斷地寫代碼;使用Visual Studio或SublimeText的自動補齊功能。
5、整潔的代碼勝過巧妙的代碼
如果想讓別人可以輕松讀懂你編寫的代碼,請盡量使用最少的代碼來完成任務。在編寫代碼過程中,遵循DRY(Don』t repeat yourself)的原則,使用明確定義的對象和庫,將任務分解成小而簡單的代碼段。
6、掌握代碼調試技巧
現如今市場和需求變化相當快,項目的周期有時就會縮短。一個月的工作計劃,會縮短到2個星期。項目的壓力難免會導致程序員的代碼質量會有所下降!
因此,調試技巧在這樣的環境下就顯得尤為重要。高級程序員會在函數的開始和結束輸出Log,把所有的參數和返回值列印到日誌系統,便於追蹤。在解決問題的過程中,使用開發工具一行一行進行調試,實時觀看參數的變化。
7、重新回顧代碼
重新去回顧和審視自己寫過的代碼,通常會有兩種體驗,一種是我怎麼寫了這么爛的代碼;另外一種則是對自己寫過的代碼充滿了成就感。回顧代碼有時可以觸發我們新的想法,甚至還能對編碼有一個更深層次的思考。
Ⅵ 有什麼東西,程序員覺得很普遍普通,而別人卻沒有的
《The Effective Engineer》的作者在寫書的過程中,為了了解那些頂級程序員和普通程序員的區別,采訪了很多矽谷頂級科技公司的頂尖軟體工程師。他發現這些給世界帶來巨大影響的的工程師們至少有以下5個共同的思維模式:
1.勇於去研究你不懂的代碼
一般人都不願意去研究自己不曾接觸過的代碼,很多人都沒有嘗試就放棄了。如果你經常去研究你沒有接觸過的代碼,你就會越來越熟悉不同的代碼結構和設計模式。現在人們很容易就接觸到優秀的開源代碼資源,你可以很方便的就下載下來做一些改動或者調試,去研究為什麼代碼可以這么寫。
除了代碼之外,很多人對於陌生的工作內容也會感到恐懼。每次換工作的時候,你可能都會遇到新公司的工作內容和以前工作的內容不一樣的情況,以至於剛開始的時候工作效率沒有以前那麼高。很多人甚至覺得,他們是不是騙了面試官。
其實,大家都是在學習的過程中。在一個陌生的領域,沒有人從一開始就是大神。如果你想變得越來越好,無論是寫代碼,與人溝通或者其它的技能,都是需要投入時間去學習的。
2.精通代碼調試(debug)
很多人在寫代碼的過程中,經常會有的一個問題就是:為什麼我寫出來的代碼不能運行?為什麼運行的結果不是我想要的?
幾乎所有的程序員寫代碼都不是一遍就能寫好的。但是頂尖的程序員非常快的就明白自己代碼的問題可能是什麼。這是一個很重要的能力,但是偏偏學校里不教,面試的時候考官也不經常提及。
那麼怎麼去調試代碼呢?其實核心就是以下幾個方法:
1、不妨先猜測一下到底發生了什麼。
2、假設你的猜測是對的,想想你的猜測會導致程序有什麼結果。
3、試著觀察這些結果有沒有異常的地方。
4、如果你沒有發現異樣,那麼說明你的猜測就是對的。
5、如果你發現了異樣,那麼說明你的猜測是錯的,接下來換一個猜測試試。
對於頂尖程序員來說,這個過程在腦海中就是電光火石的一瞬間。只要你解決的問題足夠多,你做出來的猜測就會越准確。
至於如何發現異樣?你就需要有一套自己的工具或者方法論了。最簡單的就是在代碼里輸出日誌來判斷。但是這是比較笨的辦法,你需要去接觸一些高級的工具或者直接帶有Debug功能的編輯器。
3.重視能夠節約時間的工具
最近打敗人類的AlphaGo每天可以進行上百萬局的下棋訓練,我們人類一萬個小時的訓練卻需要10年之久。也就是說,電腦運行幾分鍾,可能就等於人類工作好幾年。
曾經在Facebook擔任技術總監的Bobby Johnson描述過,高效率的程序員都把時間花在製作工具上。
很多人也認為工具是很重要的,但是他們並沒有花時間去製作、整合自己的工具。但是,Jonson團隊最出色的員工耗費了他們1/3的時間在工具製作上,這些工具可以用來發布代碼,監控系統,以及能讓他們花更少的時間去做更多事情。
總之,不要花時間去做機器可以代替你去做的事情。
4.優化你的迭代速度
假設你要花12秒鍾去搜索某個函數是在哪裡定義的。再假設你每天做這個動作60次,那麼你每天就要花12分鍾去搜索函數定義。
如果你用一個好一點的編輯器,每次找到函數定義只要2秒鍾,那麼你每天就會節約10分鍾。每年你就可以節約40個小時。
如果你能找到3個這樣的場景去優化一下,那麼你每年可以節約一個月的時間。想想這一個月你可以做多少有意義的事情。
再假如你在調試一個App的bug的時候,改完一次代碼都需要重啟一下App,然後點擊4、5次才能看到bug有沒有改好。那麼你是不是可以先花幾分鍾設置以下,讓App一啟動就轉到顯示Bug的頁面呢?
千萬不要小看這些瑣碎的細節,改善它們的回報是巨大。
5.系統性的思考方式
當你在寫代碼的時候,你很容易就認為只要你按照需求實現了指定的功能,你的代碼就寫完了。但是這其實只是冰山一角。任何沒有發布到生產環境的代碼都不會產生任何價值。
如果想寫出真正有影響力的代碼,你需要從整個系統去理解你的工作:
1、你的代碼和其他人寫的代碼在功能上是什麼關系?
2、你有沒有好好測試你的代碼?或者其他人是否很容易測試你的代碼?
3、為了部署你的代碼,線上生產環境的代碼是不是需要改動?
4、新的代碼會不會影響到已經運行的代碼?
5、在新的功能下,你的目標用戶的行為是不是你期望的?
6、你的代碼有沒有產生商業上的影響?
這些問題都不是很容易就能回答的,但是在寫代碼的時候,你需要明白你的代碼最後會不會得到最好的結果。
Ⅶ 程序員演算法解題方法與思路
此方法通過寫出問題的一些特定的例子,分析總結其中的規律。具體而言,就是通過列舉少量的特殊情況,經過分析,最後找出一般的關系。
問題與以前莫個演算法解決過的問題相似,此時就可以觸類旁通,嘗試改進原有演算法來解決
此方法首先將問題簡單化,如改變數據類型、空間大小等,然後嘗試著將簡化後的問題解決。
為了降低問題的復雜度,很多時候都會將問題逐層分解,最後歸結為一些簡單的問題,這就是遞歸法
將一個難以直接解決的大問題,分割成一些規模較小的相同問題,以便各個擊破,分而治之。分治法一般包括以下三個步驟:
1)將問題的實例劃分為幾個較小的實例,最好最有相等的規模。
2)對這些較小的實例求解,而最常見的方法一般是遞歸。
3)如歌有必要,合並這些較小問題的解,以得到原始問題的解。
一般而言,時間復雜度越低的演算法越高效。而更想達到時間復雜度的高效,很多時候就必須在空間上有所犧牲,用空間來換時間。而用空間換時間最有效的方法就是Hash法、大數組和點陣圖法。
在設計題目時,往往會有一個載體,這個載體便是數據結構。如數組、鏈表、二叉樹和圖等,當窄體確定後,可用的演算法自然而然就會顯現出來。可問題是很多時候並不確定這個載體是什麼,當無法確定這個載體時,一般也就很難想到合適的方法了。
當遇到上面的問題時,可以採用最原始的思考問題的方式——輪詢法。常考的數據結構與演算法一共就幾種,如下圖
此種方法看似笨拙,卻很實用,只要對常見的數據結構與演算法爛熟於心,一點都沒有問題。