Ⅰ 一個程序員要具備的基本素質是什麼
團隊精神和協作能力 :
把它作為基本素質,並不是不重要,恰恰相反,這是程序員應該具備的最基本的,也是最重要的安身立命之本。
文檔習慣:
作為代碼程序員,30%的工作時間寫技術文檔是很正常的,而作為高級程序員和系統分析員,這個比例還要高很多。缺乏文檔,一個軟體系統就缺乏生命力,在未來的查錯,升級以及模塊的復用時就都會遇到極大的麻煩。
規范化,標准化的代碼編寫習慣:
作為一些外國知名軟體公司的規矩,代碼的變數命名,代碼內注釋格式,甚至嵌套中行縮進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和糾錯,也有助於不同技術人員之間的協作。
需求理解能力:
作為程序員需要評估該模塊在系統運營中所處的環境,將要受到的負荷壓力以及各種潛在的危險和惡意攻擊的可能性。就這一點,一個成熟的程序員至少需要2到3年的項目研發和跟蹤經驗才有可能有心得。
復用性,模塊化思維能力:
復用性設計,模塊化思維就是要程序員在完成任何一個功能模塊或函數的時候,要多想一些,不要局限在完成當前任務的簡單思路上,想想看該模塊是否可以脫離這個系統存在,是否可以通過簡單的修改參數的方式在其他系統和應用環境下直接引用,這樣就能極大避免重復性的開發工作。
測試習慣:
軟體研發作為一項工程而言,一個很重要的特點就是問題發現的越早,解決的代價就越低,程序員在每段代碼,每個子模塊完成後進行認真的測試,就可以盡量將一些潛在的問題最早的發現和解決,這樣對整體系統建設的效率和可靠性就有了最大的保證。
學習和總結的能力:
善於學習,對於任何職業而言,都是前進所必需的動力,對於程序員,這種要求就更加高了。但是學習也要找對目標,一些小coding fans們,他們也津津樂道於他們的學習能力,一會學會了asp,一會兒學會了php,一會兒學會了jsp,他們把這個作為炫耀的資本,盲目的追逐一些膚淺的,表面的東西和名詞,做網路程序不懂通訊傳輸協議,做應用程序不懂中斷向量處理,這樣的技術人員,不管掌握了多少所謂的新語言,永遠不會有質的提高。
Ⅱ 怎樣才能成為高級軟體工程師
高級軟體工程師(java)
◇
培養對象
中高級Java程序員
◇
課程介紹
測試用JAVA
開發應用程序的能力,考試者必須先完成一個程序的設計方案,再回答與此方案相關的一些問題。本課程將提供給學員設計關系資料庫伺服器程序的實際方法,學員將使用Java聲音、圖形、網路通訊等介面,編寫與伺服器相連接的Java應用程序,通過本課程學員還能學到如何在Java程序中調用本機上用其它計算機語言編寫的程序。
◇
學習目標
在這門課程學習完之後,您可以勝任Java應用程序開發工作、JSP網路程序開發工作,並能掌握J2EE企業構架體系。
◇
課程內容
第一章
Java
Beans介紹
第二章
EJB
第三章
企業Bean的設計和實現
第四章
有狀態會話Bean示例
第五章
BMP的例子
第六章
CMP的例子
第七章
一個消息驅動Bean的例子
第八章
EJB查詢語言
第九章
網路客戶端及組件
第十章
Java
Servlet技術
第十一章
JSP技術
第十二章
JSP頁面中的JavaBean組件
第十三章
在JSP頁面中自定義標簽
第十四章
事務
第十五章
安全
第十六章
資源連接
第十七章
DUKE的銀行應用程序
第十八章
xxx保險公司座席系統
第十九章
系統概要設計
第二十章
管理系統概要設計
第二十一章
業務咨詢概要設計
第二十二章
業務查詢概要設計
第二十三章
業務受理概要設計
第二十四章
統計報表概要設計
◇
課程時間
授課時間為:240學時
編程中函數運用比較多,數學好的話對這項工作有很大的幫助,JAVA的基礎和C++的差不多,想把基礎弄扎實點是好事,但是不要過於求快,要一點點的做,邏輯思維能力要強,用一些時間去練習。雖然是基礎,你也要做大量的小程序來鍛煉自己,不要只做教程上面的那一點點,多找些例子。多思考。這樣,你的編程經驗多了,做起東西來就快了。編程是不只靠語言來實現,更重要的是有思想。也就是那些數學理論。
引自:
and
Net
Ⅲ 程序員的十種級別
第一級:神人,天資過人而又是技術狂熱者同時還擁有過人的商業頭腦,高瞻遠矚,技術過人,大器也。如丁磊,
求伯君。
第二級:高人,有天賦,技術過人但沒有過人的商業頭腦,通常此類人不是頂尖黑客就是技術總監之流。
第三級:牛人,技術精湛,熟悉行業知識,敢於創新,有自己的公司和軟體產品。
第四級:工頭,技術精湛,有領導團隊的能力,此類人大公司項目經理居多。
第五級:技術工人,技術精湛,熟悉行業知識但領導能力欠加,此類人大多為系分人員或資深程序員,基本
上桀驁不遜,自視清高,不願於一般技術人員為伍,在論壇上基本以高手面目出現。
第六級:熟練工人,技術有廣度無深度,喜歡鑽研但淺嘗輒止。此類人大多為老程序員,其中一部分喜歡利用工
具去查找網上有漏洞的伺服器,干點壞事以獲取成績感。如果心情好,在論壇上他們會回答菜鳥的大部
分問題。此級別為軟體業苦力的重要組成部分。
第七級:工人,某些技術較熟練但缺乏深度和廣度,此類人大多為程序員級別,經常在論壇上提問偶爾也回答菜
鳥的問題。為軟體產業苦力的主要組成部分。
第八級:菜鳥,入門時間不長,在論壇上會反復提問很初級的問題,有一種唐僧的精神。雖然招人煩但基本很可
愛。只要認真鑽研,一兩年後就能升級到上一層。
第九級:大忽悠,利用中國教育的弊病,頂著一頂高學歷的帽子,在小公司里混個軟體部經理,設計不行,代碼
不行,只會胡亂支配下屬,拍領導馬屁,在領導面前胡吹海侃,把自己打扮成技術高手的模樣。把勾心
斗角的辦公室文化引入技術部門,實在齷齪!
第十級:驢或傻X,會寫SELECT語句就說自己精通ORALCE,連寄存器有幾種都不知道就說自己懂匯編,建議全部
送到日本當IT產業工人,掙了日本人的錢還嚴重打擊日本的軟體業!
Ⅳ 程序員在職業生涯中易犯的7個錯誤
1.沒有明確的職業目標
沒有目標的人生,就像無根的浮萍,水流到哪裡就飄到哪裡,一生漂泊。
如果你想要在軟體開發領域獲得真正的成功,那麼就必須知道該何去何從。或許面對遙遠的未來,你已經有了一個粗略的目標了。但是除了這點還不夠,你應當堅實自己的目標——清楚的定義在實現過程中的每個重要時間點所需要達到的效果。
我認識許多程序員和其它方面的專業人士,數十年來他們都在相同的職位上反復地做著同樣的事情。是的,你沒有看錯,是數十年。接受職業現狀,不做任何改變,是造成這種悲劇的根源。對於未來,如果你沒有明確的職業規劃,這樣的悲劇就很可能會發生在你身上。
面對於此,你該怎麼做呢?
從現在開始,花一些時間來認真規劃一下職業並確定最近的目標。一旦你達到了這個目標,你就要選擇一個新的目標了。在職業生涯中,這樣的目標會一個接著一個。你可以把這些目標寫下來,放在一個每天都可以看見的地方,這樣就可以讓你隨時回想起當前需要做的工作。
2.不重視「軟技能」或非技術的東西
我認識許多擅長寫代碼的程序員,他們可以用所寫的演算法把我耍得團團轉,他們對復雜架構的理解力和思考能力令我自愧不如。
但是真實的狀況卻是:技術不如他們的我,軟體開發領域的職業發展卻全面超過了他們,除了職位,還包括薪水、生產力等諸多方面。
在這里我並不是為了吹噓自己多了不起,而是為了向那些只埋頭專研技術的程序員們說明「軟技能」對於職業發展有多重要。
作為一個軟體開發者,我相信你也清楚,編寫代碼並不是工作的全部。在通往成功的道路上,還需要學習很多其它技能。我們需要長期與他人打交道,所以必須學習為人處事;軟體開發面臨長期的趕工與不同的需求變化,所以需要學習對心態和注意力的調整;在不斷變化的環境里有許多事情需要處理,所以應當學習對事情劃分優先順序以做到效率的最大化。另外,我們對待身體健康應當和對待自己收入一樣敏感,這個才是革命的本錢。
我還可以繼續列舉出更多的東西,關於了解開發者應當掌握的「軟技能」你可以去閱讀我寫的《SoftSkills:TheSoftwareDeveloper』sManua》一書。
總的來說,在生活中無論從事什麼樣的工作,那些軟技能通常都比硬性的技術能力更為重要,所以請保持不斷地學習這些技能。
3.不融入社區生活
在程序員生涯中有一樣東西令我受益頗深,它就是社區的幫助。成為這個大群體的一部分,不僅讓我擁有了歸屬感不再孤獨,也幫助我改進了自身的技能,向著更高的平台發展。
如果你還沒有參與社區生活的話,我強烈建議你融入這個圈子裡來。它是一個比自我寬廣得多的平台,有助於你的發展。
如果你感覺自己的軟體開發工作停滯不前,費勁腦力也無法獲得更大突破的時候,最好的方式就是加入社區,與一群有志同道合的人共同探討所遇到的困難,獲得有助於解決問題的建議。另外,融入社區生活還能夠聚集人氣,培養人脈,這對於提升自身的職業發展也有很大幫助。
但是,如何才能融入到社區生活中呢?
這很簡單,世界各地都有很多開發者團體,你可以通過程序員網站找到並加入到他們當中去。你還可以參加開源夏令營,這是一個一年一度的免費地方性活動,眾多開發人員會聚在一起分享他們的工作,任何人都可登記參加自己感興趣的話題。
如果你不希望在現實生活中與過多的人接觸,也可以選擇加入虛擬社區。
那些大眾的程序員社區會是你的第一選擇。在社區中你會發現有一些非常厲害的程序員,他們會在自己的博客上寫一些精闢的文章並解答大家的問題。除此之外,還有另外一些不錯的在線社區,比如大牛們的博客網站、各種技術論壇、討論群等。
當你開始學會分享,把自己的所知與所想都寫出來的時候,你就真正的融入進了社區生活——而這個博客就是我為自己加入這個程序員社區所做的第一件事。:-)
4.沒有專長
如果你過去常訪問我的博客或者YouTube視頻,你會發現我很多時候都在談論這個話題。這個話題是如此重要,以至於我一有機會就會說到它。
俗話說,術業有專攻。你應當選擇一項想要專精的技術並努力磨煉它。但這並不意味著你就可以放棄對其它技術的基本理解而一味地去專研某項技術——我對那些會數種語言的人是非常欣賞的。這一點非常重要,尤其是在你職業生涯的早期培養一技之長的時候。
專長可以滿足更高級的需求,因此,在同等條件下,它會帶來更豐厚的報酬並更快的積累聲望——這些對於業界對你的認可是很有幫助的。
有專長的人好比是小池塘中的大魚,受人矚目。或許最終這條大魚會跳入更寬廣的池子,但是所累積的聲望和名氣同樣有助於在軟體開發行業的其它領域的發展。
凡事只要七分就好,對於專長技術的研究學習同樣如此。過度的投入會對程序員的時間與精力造成浪費,這是得不償失的。
5.無視個人品牌價值
生活中充滿著各種變數:搬家、結婚、換工作、一夜暴富、突然發福等等。無論如何,有一樣東西始終會伴隨著你一生,而這個東西就是——名字。
你的名字會貫穿於你的全部生活,難道它還不值得你去重視么?
你的名字或者也可以稱作是你的個人品牌是一件非常有投資價值的東西,可許多軟體開發人員對此卻一無所知。
對於獲得工作、取得晉升、客戶端的登陸以及工作的開展等,名字無疑都展現了其強大的作用。毫不誇張的說,假如你臭名昭著的話,會萬事難行,而如果你有良好的名譽的話,大多事情只需通過簡單的握手就能搞定。
我認識很多的軟體開發人員,他們從不擔心自己會失業,這是因為他們投資了時間和精力來打造堅實的個人品牌。他們知道,無論發生什麼事情,在他們失業後的幾個小時內就可以獲得一份新的工作,這是因為他們在業界有良好的聲譽。
對產品和服務進行的投資看起來很正常,但是你是否考慮過自我營銷的價值?要在軟體開發行業建立起自己的個人品牌,我的建議是從創建自己的博客開始,選擇將自己的專長或者有很深了解的領域作為提高自己影響力的跳板,學會把自己的名字一步步做成行業的金字招牌。如何快速的提高自己的影響力呢?最好的方法之一就是創建對別人有幫助的文章。
就拿這個博客為例吧。這個博客建立了我在互聯網上的個人品牌和聲譽,如果你認為我的文章或者網站是有價值的,你會選擇進行分享。甚至你有可能把它列入收藏或者進行訂閱,以方便以後繼續訪問。而這只是其中一種打造個人品牌的方式。同樣的,你還可以選擇視頻網站、播客等媒體,或者在書刊上發表文章,在會議上演講等方式。如果你對如何在軟體開發領域深度挖掘自身的品牌價值很感興趣,這個網站會告訴你如何去做。
6.荒廢業務時間
在工作之餘,你應當做一些項目來練練手。
做業余工作有許多你不知道的好處。首先,它可以有效的改進你的專業技能,特別是那些在平時的工作中很少用到的技術。相比起平時朝九晚五的工作,業余工作類型多變,對於專業技能的提高更有好處。其次,它有助於你對新的開發技術和技巧的學習。這對於日後你想從事新的工作是很有幫助的。我碰到過許多程序員,他們向我抱怨在當前工作中沒有機會去學習新技術,這讓他們今後無法在工作市場上立足。而我向他們建議工作之餘去做一些小項目,使用他們今後想要立足的新技術——這種方式對於提高相關技術是很有幫助的。
除此之外,我們不要忽視做業余工作所帶來的經濟利益。人們常認為業余時間做的那些小項目是掙不到什麼錢的,而事實上它卻是額外收入的重要來源。4年以前,我在業余時間里開發了一個在Android和iOS平台上使用的應用程序,而到現在,這個應用程序還能為我創造價值。
我還認識一些程序員,他們從業余工作做起,最後把這些工作發展為了全職工作。而事實上我就是這些程序員中的一位。這個博客本身以及SimpleProgrammer周圍的其它部分現在成為了我的全職工作。我喜歡稱自己為程序員的生活導師,但是也有很多人認為我是一個專職的博客寫手。
業余工作可以讓你充滿樂趣,它能夠把你從那些你不喜歡但又必須去做的工作中解脫出來。作為一種釋放工作壓力的好方法,它會每天帶給你新的希望。
7.沒有自我學習的計劃
在我面試軟體人員的時候,我首先會問到的一個問題就是關於他們的自我學習和持續完善的計劃——如何進行自我完善。程序員如何在這個快速變化的領域保持技術與觀念上的更新?我希望獲得的回答是他們能告訴我對於自我學習與成長他們有著一個實際可行的計劃。因為一個致力於不斷學習進步的人不僅能夠讓自己邁向成功還能影響到周圍的人,使他們一同邁向成功。
然而,有如此之多的程序員對於自我學習沒有任何計劃。假如你是這些人中的一員,你就應該立即行動起來做一個自我學習的計劃。
這兒有一個可供參考的個人簡單計劃:
堅持每月讀一本關於技術學習或者職業發展的書籍。
這意味著一年時間里你需要閱讀12本書。對於我來說,我會在每天用至少45分鍾時間來閱讀。當我在跑步機上運動的時候我會同時閱讀一些與我個人職業發展相關的文章。
積沙成塔,集腋成裘。每天只需花費30分鍾時間來閱讀書籍,一兩年時間之後你的人生境遇就會發生很大的改變。
Ⅳ 程序員的七種武器是什麼
根據本人的多年開發經驗,向那些剛剛踏入IT行業的新程序員們或正在迷茫的程序員們整理出了程序員必須掌握 的七種武器以及相關的視頻教程。 第一種武器:開發工具 基於C++、VC++開發平台工具快速入門: 第一部份: VS2008 IDE開發環境的基本使用方法 第二部份:VS2008調試環境的使用 第三部份:VS2008性能分析工具 基於MyEclipse平台的Java程序快捷開發: 第一部份:JAVA開發環境的搭建 第二部份:MyEclipse工具常用開發操作和技巧 第三部份:MyEclipse高級使用技藝 - 重構與快速實現 基於Linux操作系統平台下的Java語言開發: 第一部份: 安裝虛擬機以及Linux操作系統 第二部份: Linux桌面系統 第三部份: Linux文件和目錄管理 第四部份: VIM的使用(上) 第五部份: VIM的使用(下) 第六部份: Linux終端常用命令第七部份: Java開發環境的搭建 第二種武器:資料庫 SQL Server 2008 資料庫基礎及應用: 第一講:SQL Server的安裝與配置 第二講:SQL Server中的庫、表、數據完整性 第三講:SQL Server中的CRUD語法 第四講:SQL Server中的查詢語句 第五講:SQL Server中的高級查詢 第六講:SQL Server高級查詢綜合示例(一) 第七講:SQL Server高級查詢綜合示例(二) 第八講:SQL Server高級查詢綜合示例(三) ORACLE系列之SQL從入門到精通: 第一講:資料庫基礎知識 第二講:創建資料庫 第三講:管理和控制Oracle資料庫 第四講:Oracle資料庫表管理 第五講:基本SQL語句 第六講:對數據進行限定和排序 第七講:處理單行的函數 第八講:從多個表中獲取數據 第九講:數據查詢的綜合案例(一) 第十講:使用分組函數來對數據進行聚集 第十一講:子查詢及高級應用 第三種武器:操作系統 Linux系統編程(文件篇、進程篇、信號與管道篇、時間篇、實戰篇): 第一部分:Linux系統編程之文件篇 第二部分:Linux系統編程之進程篇 第三部分:Linux系統編程之信號與管道篇 第四部分:Linux系統編程之時間篇 第五部分:Linux系統編程之實戰篇(minishell實現) 第四種武器:網路協議TCP.IP Windows伺服器與網路編程實戰課程(VC++系列之網路編程、WinSock超基礎): 第一部份:計算機網路和網際協議(TCPIP) 第二部份:標准套接字SOCKET原理及編程 第三部份:WinSock工作模式和編程模型 第四部份:WinSock2.0API和SOCKET池 剖析.NET網路通信、音頻、移動平台IM及伺服器端編程: 第一部份:.NET網路通信了解基本的.NET網路通信基礎 第二部份:UDP點對點網路通信 第三部份:UDP伺服器/客戶端通信 第四部份:UDP網路文件傳輸 基於TCPIP協議的java多線程高並發伺服器實戰: 第1課:TCPIP協議,多線程,高並發網路編程概述 第2課:基於TCPIP協議的自定義網路通信協議實現(一) 第3課:基於TCPIP協議的自定義網路通信協議實現(二) 第4課:多線程精講(一) 第5課:多線程精講(二) 第6課:網路基礎編程(一) 第7課:網路基礎編程(二) 第8課:網路基礎編程(三) 第9課:java NIO(一) 第10課:java NIO(二) 第11課:java NIO(三) 第五種武器:DCOM.CORBA.XML.WEB Services .NET下面的WebService開發: 1.掌握 Web Service 的基本工作原理 2.理解 Web Service 的優勢 3.掌握 Web Service 的開發和使用 4.ASP.net中如何通過代理類調用WebServic 5.ASP.net中如何手工調用WebService(Get/Post兩種方式) 6.JavaScript如何同步調用WebService 7.JavaScript如何非同步調用WebService 8.ExtJs中如何調用WS 9.通過SOAP頭來增強WebService安全性 10.Web Service開發中需要注意的問題 Java平台下的WebService框架Xfire深入解析: 第一部分、WebService 概念與xFire入門 第二部分、xFire開發起步 第三部分、Web服務客戶端及Web服務安全性 第四部分、xFire與Spring集成 第五部分、xFire使用綜合示例 第六種武器:軟體工程與CMM IT人必備實用項目管理系列訂餐系統實例化教學—Java版,10年IT經驗總結,涉及測試、風險、負載等: 1. 課程綜述:我們目前項目管理中遇到的困惑和我們所處的現狀。 2. 團隊組建和項目計劃。 3. 需求管理:任何人都為之頭疼的東西。 4. 實戰訂餐系統需求管理:,體驗一把從頭構建需求的快樂和痛。 5. 軟體配置管理:只是技術,純粹解決項目開發問題。 6. 軟體設計:該怎麼去設計一個軟體。 7. 進度控制:進度是大部分項目組頭疼的事情。 8. 風險管理:我們能做到的到底有多少。 9. 成本管理:不是說如何報價,而是說如何做能合理些。 10.軟體測試:確保軟體質量的關鍵點。 11. 單元測試:如何使用junit實施單元測試。 12. 負載測試:看看這輛車到底能拉多少貨? 13. 驗收交付:客戶滿意,公司滿意,我們的追求。 14. 過程改進:下個項目我們還需要這么費力嗎? IT項目管理實戰ASP.NET版(負載均衡+Web測試+VSTS單元測試+VSS+訂餐系統,10年經驗總結): 1. 課程綜述:我們目前項目管理中遇到的困惑和我們所處的現狀。 2. 團隊組建和項目計劃。 3. 需求管理:任何人都為之頭疼的東西。 4. 實戰訂餐系統需求管理:,一起體驗一把從頭構建需求的快樂和痛。 5. 軟體配置管理:只是技術,純粹解決項目開發問題。 6. 軟體設計:該怎麼去設計一個軟體。 7. 進度控制:進度是大部分項目組頭疼的事情。 8. 風險管理:我們能做到的到底有多少。 9. 成本管理:不是說如何報價,而是說如何做能合理些。 10.軟體測試:確保軟體質量的關鍵點。 11. 單元測試:如何使用junit實施單元測試。 12. 負載測試:看看這輛車到底能拉多少貨? 13. 驗收交付:客戶滿意,公司滿意,我們的追求。 14. 過程改進:下個項目我們還需要這么費力嗎? 第七種武器:演算法與數據結構 C#版數據結構與演算法高級教程(深入探討)--附各種演算法實例: 一、演算法的評價指標 (1) 二、線性表:(3) 三、棧和隊列 (3) 四、串(3節) 五、樹(5) 六、排序(4) 實戰應用Java演算法分析與設計(鏈表、二叉樹、哈夫曼樹、圖、動態規劃、HashTable演算法): 第一講、演算法基本概述、抽象數據類型 第二講、演算法的設計目標、時間復雜度和空間復雜度 第三講、線性結構與順序表的實現與應用 第四講、單向鏈表以及單向鏈表的應用 第五講、循環鏈表模擬鏈表以及循環鏈表應用 第六講、棧的基本概念以及順序棧的應用 第七講、鏈式堆棧以及棧的應用 第八講、中綴表達式轉換後綴表達式演算法 第九講、隊列以及順序循環隊列的應用 第十講、鏈式隊列以及優先順序隊列應用
記得採納啊
Ⅵ 程序員要具備什麼技能
一名合格的程序員需要掌握哪些技能呢?
熟練掌握開發工具
做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點推薦的開發工具,C/C++以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C編寫。而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVA One很可能會成為未來的主流開發工具之一。其次,能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,C Builder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。
熟知資料庫
為什麼資料庫是如此重要?作為程序員,他們自然有自己的理由:很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。如果沒有機會接觸商業資料庫系統,可以使用免費的資料庫產品是一個不錯的選擇,如mySQL, Postgres等。
對操作系統有一定的了解
當前主流的操作系統是Windows,Linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。要想成為一個真正的編程高手,需要深入了解操作系統,了解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。Linux作為開發源碼的操作系統,是一個很好的學習平台,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。只有對操作系統有一定的了解後,你會發現自己上了一個新的台階。
懂得網路協議TCP/IP
在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課,網路技術已改變了軟體運行的模式,從最早的客戶/伺服器結構,到今天的WEB Services,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,所以,深入掌握TCP/IP協議是非常必要的。至少,你需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。
明白DCOM/CORBA/XML/WEB Services存在的意義
隨著技術的發展,軟體與網路的無縫結合是必然趨勢,軟體系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分布計算的中間平台,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規范。程序員需要做的不僅僅是利用商業的開發平台來開發軟體,而是要理解這些技術的初衷,即為什麼需要這項技術,如果你能理解了這一點,再回頭看這些技術的具體實現,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布計算的基石之一。
不要將軟體工程與CMM分開
現代大型軟體系統的開發中,工程化的開發控製取代個人英雄主義,成為軟體系統成功的保證,一個編程高手並不一定是一個優秀的程序員,一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟體工程思想有機結合,編程只是軟體生命周期中的其中一環,優秀的程序員應該掌握軟體開發各個階段的基本技能,如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟體測試等。一句話可以概括我的看法:「創意無限,流程保證」。
擁有強烈的好奇心
什麼才是一個程序員的終極武器呢,那就是強烈的好奇心和學習精神。沒有比強烈的好奇心和學習精神更好的武器了,它是程序員們永攀高峰的源泉和動力所在。
Ⅶ Java程序員需要掌握哪些技術
Java程序員需要掌握哪些技術?Java的技術體系是非常龐大的,需要我們學習的技術非常多,往往很多初學的人,通過互聯網查閱了一個龐大的學習列表,然後不知道如何下手。網上很多大牛列的技術不是不重要,但是掌握住企業應用的Java的核心技術,快速上手,是一種高效的學習手段。下面匯總了一下關於Java程序員需要掌握那些技術
第一、Java程序員需要掌握哪些技術?學會一個web服務
J2EE伺服器——tomcat、Nginx、httpd等。其實要掌握的也簡單那,知道什麼文件部署在什麼地方,只要會下載,能啟動,能知道最直接、最關鍵的配置文件名字和位置就可以了。其他的伺服器的名字了解一下就足夠了。
第二、Java程序員需要掌握哪些技術?會一個框架
建議你學springMVC,因為所有的mvc框架都類似,只要堅持學習了MVC,其他的SSH、SSM等是容易借鑒的。作為一名新人在面試的時候可以說你自己擅長的,其他的框架了解一點點原理就行了,但是欠賬還是要補上的,雖然說平時用順手的框架也就那麼幾個,但是後期還要繼續學習。
第三、Java程序員需要掌握哪些技術?資料庫
mysql關系型資料庫就很好,坑淺應用多,最近連集群支持的都很好了,你只要強調一點,資料庫,你不是DBA,你還不懂如何調優,如何調執行計劃,你只懂增刪改查,所以你要學的就是T-SQL,標準是你能手寫帶條件的增刪改查,會復雜語句更好,稍微了解下sql效率方面的問題,為了面試也是可以。MSSQL在國內被鄙視的不行,如果有人叫你弄oracle,那又是太裝逼,我身邊有一票的5年+程序員,其中有超過一半連oracle的AWR都不會讀,有的連數據字典都不知道。
第四、Java程序員需要掌握哪些技術?程序方面
jdbc需要了解下,相關的有連接字的寫法,如何准備和獲取結果,什麼是resultset這類東西,當然,資料庫連接的關閉和釋放也是需要的。
類和抽象類和介面的關系搞清楚,繼承和實現搞清楚,重載重寫搞清楚這些都是基本概念。
由於Java主要是B/S結構,無論是集成還是自己的前後端,你都要看一下http,整個http的生命周期是什麼?存在哪些步驟和不同的application負責哪個階段,相關的有幾個request和response實體,包含什麼是session了解下。
業務邏輯的話,上手仔細寫幾個例子就好了
第五、Java程序員需要掌握哪些技術?IDE
你總逃不過eclipse和幾個大廠的東西。要用簡單易用的,別花太多時間在這個上面。
第六、Java程序員需要掌握哪些技術?設計模式
你要稍微看一下,了解什麼是設計模式,你大可以老實說,你根本剛入行,只是粗通工廠模式和單粒,其他的需要在工作中學習,這樣既不會顯得完全不懂,也不會出什麼紕漏。
第七、Java程序員需要掌握哪些技術?前端
前端不需要了解太多,JSP+JS就足夠了。jsp上有個容易忽視的基礎點:tag到底是什麼如何處理。jsp的生命周期這些也最好看一下。
基礎的devops稍微了解下,git的代表,github可以注冊一個賬號,搞清楚本地repo和遠程repo之間的關系即可。SVN更為簡單一點。
Maven也要學習一下,主要是pom文件的幾個主要的部分,尤其是depedency。
Java程序員需要掌握哪些技術?想要成為一名合格的Java程序員需要具備以上技術技能,並且不斷地進行學習才能獲得更好的發展。
Ⅷ 一名優秀的程序員必備的素質
一個好的程序員必備條件之一就是嚴謹的思維
1、養成良好的書寫代碼的習慣,該加註釋的時候一定要加註釋,該大寫的地方一定要大寫,變數命名不能模糊不清。這是基礎,是為了讓別人能看明白你所寫的代碼,不能你寫的代碼只有你自己才看的明白。
2、注意所寫軟體的版本控制。
3、勤奮學習最新的技術,計算機技術日新月異,這點我不說相信你也知道。
4、養成寫開發文檔的好習慣,再接到一個項目時,第一件事情是進行需求分析,然後寫開發文檔,把你每一步要做什麼都先寫清楚,再動手做。
5、不要怕技術難題,在計算機領域,只有不能解決難題的人,沒有人解決不了的難題。
6、虛心象他人學習,即使技術實力比你差很多的人,也肯定會知道一些你所不知道的技術點。
Ⅸ 程序員的工作環境是怎樣的
每個人職場人都希望在一個輕松、開心、干凈、舒適的環境裡面工作,這樣心情好工作起來自然效率高,但是這畢竟是理想狀態下的工作環境,當然現在絕大多數企業工作環境雖然達不到百分百,但至少有百分之六七十以上吧。
那麼對於程序員這種有點特殊的工種工作環境又是怎麼樣的呢?
程序員又被人們稱之為碼農,也有人調侃戲稱「程序猿」,程序員對工作環境往往需要有一張大的辦公桌,他們不僅用一台電腦在工作,有時候需要幾台電腦同時操作,而且遇到一些bug或者瓶頸的時候需要和同事協同工作,當然在硬體方面除了辦公桌要大外,還需要配置比較高的電腦,畢竟這是程序員最基本的工作工具,試想如果剛有靈感,結果電腦卡頓或者死機了,那有可能靈感頓時就消失了,所以他們大多數工作環境都擁有足夠大的辦公桌和高配置的電腦。
前面就提到了程序員是有點特殊的工種,因為他們往往加班到很晚,時常會通宵,這就和我們正常上班的時間上錯開了,他們往往白天睡覺,晚上工作,有時候為了打起精神工作,他們提神的方式各自不同,有抽煙的、有喝咖啡的、有聽歌的等等,大家可以想像這是什麼樣的工作環境嗎?但是程序員工作的時候,大多數情況下都需要安靜的環境,畢竟安靜能讓人更好的思考問題。
每個人對工作環境要求都不一樣,讓自己覺得舒服的環境是自己願意留在公司的原因之一吧,程序員也是一樣的。
大公司的程序員,工作環境基本上就是一個電腦版的「衡水中學」,每天就是開會寫代碼改代碼查代碼開會繼續循環往復,跟中學里每天就是拚命讀書刷題刷題讀書吃飯無味上廁所要跑一個樣。
硬體配置無需你考慮,肯定是夠你用。跟人的成本比起來,硬體就是個渣。
大公司的程序員工作比較穩定,每個人的分工是比較明確的,職業路徑也很明晰,越往上的職位對智商的要求越高,這點和靠情商往上升的工作還真有點不一樣。在程序員這個隊伍里拍馬屁搞關系基本沒啥用,你寫的代碼都無需用戶檢驗,自己一跑就知道成不成。這也是IT公司通常人際關系和氛圍都比較輕松且簡單直接的根本原因,特別適合那些不喜歡搞關系的同學去擼起袖子加油干。
如果你想在這個行業長期發展,智商一定要夠用,真的。有沒有基礎倒在其次,如果數學好更佳。有些業內大咖本身是學數學或物理這些靠智商吃飯的學科的。
小公司的程序員,尤其是那些非IT類小公司里的程序員工作壓力更大。面對不懂程序的銷售和老闆,還有極度貪心又不願多付費的客戶,需求三天兩頭變,界面是個人就可以提意見改,時間永遠是「明天就要」。他們覺得程序員比悟空辦法多,所以什麼要求都提得出來。能在小公司做出成績的程序員,真心讓人敬佩不已。
小公司的程序員是掌握公司核心機密最多的人,比老闆都掌握得多,所以通常他們的待遇也還過得去。另外他們一來二去把公司業務摸透了,出來自己乾的也不少,當然能不能幹成是另一回事。
其實程序員的工作環境真沒什麼要求,只要沒什麼干擾就行。學霸們在這里會找到十分熟悉的感覺,所以程序員之間以「同學」相稱的極多。
我是2015年本科畢業的,但是2014年就開始工作了,從程序員+運營的工作開始實習(其實也是看最後哪一個更合適就走哪一個方向)。
對於實習階段,因為當時待的是小公司,所以大家的配置都很一般。幾個主力程序員加上我這個實習的,工作用的都是windows筆記本,聯想的,除了我自己配的固態硬碟之外,很多都是機械硬碟在跑,沒有特別明確的代碼庫規范、沒有知識系統,交流全靠跑,有的是後端和前端一起干、前端和客服一起干,所以我兼職運營也是如此……平時要是不忙的話,那還沒什麼事兒,大家會閑聊扯淡,也算是其樂融融;但是要是忙起來,可能會突然加班到很晚——當然這種情況還是比較罕見的。
工作到了中型公司,跟以前的小公司就不在一個量級上了。這個時候主要的工作是後端開發,配置的電腦是聯想的ThinkPad,但不是最高配那種,仍然沒有固態硬碟,慢的要死。第一梯隊的程序員配置有雙顯示器、機械鍵盤、mac。我的話配置的是外接顯示器,座椅很一般,坐久了比較累。公司分工明確,辦公室跨越兩座樓,各個團隊都有自己的辦公室。有自己的wiki、定期站會、嚴格的代碼規范、安全規范。一般情況下主要是在解決各種bug,或者開發新系統。偶爾流量高峰的時候,會加班到一兩點,平常並不是特別忙,工作還是比較有序的。
其實想要招妹子進團隊的,因為我們團隊唯一的測試工程師長得真的一般,而且性格也很差……一個性格好長得好看的運營妹子真的能調動整個團隊的氣氛。
所以什麼機械鍵盤、Mac、外接多少顯示器、加多大固態硬碟、多好的人體工學座椅……這些都是假的,開發的團隊裡面有好看的妹子才真的是「好的開發環境」。
可以穿拖鞋?可以戴著耳機聽著歌?配備兩個顯示器?身邊總是圍繞這MM端茶遞水果?還是以上都不是,而是詩和遠方?
程序員,一個高薪卻嚴重亞 健康 的群體 。他們有著極客精神,瘋狂coding的時候可以廢寢忘食,但他們也追求精神自由,喜歡自由自在。對於這樣一個群體,良好而又恰到好處的工作環境顯得尤為重要。
1. 彈性上班制
常規企業的朝九晚五上班制度,說實話並不適合程序員一族,因為這種制度一定程度上扼殺了這個最需要差異性的群體的差異性,把程序員的Coding靈感等同於工廠流水線上機械手臂,希望按鈕一按下,靈感發動,按鈕再一按下,靈感結束。這是一種一廂情願的想法。
所以對於高層次的程序員群體,請不要在作息時間上嚴格限制他們,因為他們不是裝配工,有著獨一無二的個體差異性,有著不同的思維G點,他們需要差異性的時間作息來調整自己的最佳狀態,從而迸發激情和靈感。
2. 寬松的工作氛圍
程序員群體討厭管理,任何自上而下的所謂管理都容易引起程序員們的心理抵觸,特別是那種死板的、指令式的管理模式,尤其讓程序員們作嘔。
程序員們希望自己做的事情是出於內心的意願,那樣他們就會干勁十足,而不是來自於經理計劃文檔中那條冷冰冰的文字,哪怕是他們心裡意願的和經理的計劃本是同一件事。所以對於程序員群體的管理需要技巧,要化管理於無形,讓他們感覺不到管理的痕跡,讓他們感覺著做這些事情就是出自於他們自己的意願。
總結來說就是讓他們作為自己的管理者,而團隊的管理者所要做就是培養他們這種自管理的能力。
適度的壓力可以產生做事的動力,但長時間的持續的壓力卻是扼殺激情和創造力的罪魁禍首。壓力會讓程序員焦慮,同時也會造成低劣的設計和代碼實現,因為交付的壓力會讓程序員對匆忙設計出來的方案妥協,而不會持續的優化找到最優方案。而一系列看似微不足道的缺陷設計集合到一起,就會形成讓人意想不到的、不可控制的亂象。
所以,「快」不見得是好事,「慢」也不見得是壞事。
3. 鼓勵參與開源項目
開源項目社區的欣欣向榮,是一朵盛開的奇葩,無論怎麼贊譽都不為過。
一些著名的開源項目,例如Linux,Apahce, openssl等等,數不勝數的優秀設計,給我們帶來了多少的驚喜,同時也催生了多少的商業公司。
參與到開源項目中,是一個程序員從初級走向高級、完善技術的最有效途徑之一。一些著名的開源項目,架構設計和Coding技巧上都屬上乘之作, 浸淫其中,受益匪淺。
其實以上三點不僅是對程序員群體,對任何一個職業的人來說都是適用的。再看下知乎上程序員們理想中的工作環境是怎樣的。
@蕭井陌:我讀書的時候就有一個執念,一定要找一家可以穿拖鞋背心大褲衩上班的公司(當然我不穿大褲衩),如果我找不到這樣的公司,說明我學得不好,所以我一直以來努力的目標似乎只是為了進一個能穿拖鞋的公司?哈哈哈哈。。。
@知乎用戶:我只想要2個顯示器
@知乎用戶:1.安靜,沒有人隨便喊你或者在你耳邊說話;2.絕對的自由,程序員都有一定的怪癖,比如我喜歡聽著搖滾樂寫代碼。這些都要被允許。3.溫度,氣味舒適的環境。
4.有個養眼的MM同事,大概是這樣的
嘿,箭頭方向那個哥們才是真正的程序員吧
5.獨立10M光釺線
@Indream Luo,軟體工程師:1.女多男少,人均年齡不到27;2.身處白雲山上,與廣東外語外貿大學一牆之隔;3.無邊界文化,有問題可以找任何人溝通,包括高層,如果你見得到;4. 健康 文化,加班有補休,提倡8小時,自建食堂和農場,買下巴馬泉眼特供礦泉水
@石磊
硬體:
1. 頂配的 MacBook Pro。
2. 上廁所不需要排隊。
與人相關:
1. 不會在開發到一半時被通知要重新討論功能,然後把以前做的東西全部推翻。
2. 沒有不必要的會議,必要的會議速戰速決。
3. 行政人事什麼的做事清爽高效,這樣不用在各種日常手續上浪費時間,只管寫代碼就好。
4. 同事們效率高、工作態度嚴肅、善於溝通、活潑有趣。
@張英鋒:最理想的工作環境應該是能幫助團隊沉下心來,開發出最好產品的環境。
1.上級對程序員工作的認可和尊重;
2.對所作的工作有自主權和決定權;
3.營造能讓程序員專注於工作的設施,比如大家都提到的安靜、以及各種提高生產率的硬體條件;
4.最後是公司是盈利的,最好是暴利,能持續提供更多福利。
@庄生:其實最重要的工作環境,還是有一幫靠譜的同事,真心的。可以術業有專攻,但是該你負責的你負責到底,保質保量,不要麻煩別人。
那你呢?你希望你的工作環境是怎樣的?
上聯:一個項目兩部電腦三餐盒飯只為四千工資搞得五臟俱損六神無主仍然七點起床八點開會處理九個漏洞十分辛苦 ;
下聯:十年編碼九年加班八面無光忙的七竅生煙到頭六親不認五體投地依舊四肢酸軟三更加班只為二個臭錢一生孤苦;
橫批:苦逼程序員。
程序員飄過
作為一名程序員的我可以很負責任的說:是的,工作環境就像問主圖片那樣,可能會稍微好點,我們公司都是中央空調,不用電風扇!
我在程序員的崗位上也有好幾年了,也待過幾家公司,其實就工作環境來說,程序員的工作環境還是不錯的,不用風吹日曬雨淋,而且是冬暖夏涼!和人們眼中的白領工作人員的工作環境是差不多的。
工作氛圍其實也是很好的,程序員在穿著方面大部分公司是沒有什麼太大要求,可以穿著自己喜歡的風格(腦補一下大褲衩配涼拖的程序員正在擼代碼),同事之間的交流也是很活躍的,所以程序員的苦逼之處不在工作環境,而是工作內容和壓力。
程序員分工:
1.純軟體工程師,就是只靠電腦吃飯的,設計包括但不僅限於---網頁、架構、UI、數據、運維、系統等等,整天與代碼打交道;
2.Firmware(分位)工程師,半軟半硬的工種,要焊板,要搭建環境,還要寫代碼維護代碼,演算法可能沒有純軟體工程師牛,但動手能力絕對強,涉及的知識面可能更廣。
本人就是後者,來看下我的桌面:
各個公司對於辦公環境都不一樣,國外都注重個人隱私,很多都是一個人一個封閉的房間。國內大部分就像圖中所示那樣,半隔開。也有 科技 公司,鼓勵大家敏捷開發,多溝通,開方式辦公
請忽略那些包含「安靜,優美,閑逸的辦公環境」的答案吧!
圖中的環境,只是正常普通公司的工作環境。
不一定是程序員的。
程序員的工作環境,因工作內容,導致需要很多屏幕。
而且電腦配置也需要很高。
每個人因面對的公司、自身能力等因素,都會導致工作環境的不一樣。
所以就有了工作環境好壞的區分。
如果你曾對著大海構思過某個介面,
在櫻花飄落的院落里調試過代碼,
那麼你還覺得在寫字間喝著咖啡對著三屏顯示器敲鍵盤是理想的環境嗎?
工作環境,還是得靠自己改變。
在程序者的不斷追求下,編程是可以和寫作一樣成為藝術創造過程,
那麼任何一個能夠激發出你靈感的時刻和環境都應該可以成為你的辦公環境。
資深碼農應邀回答這個問題。籠統來說,程序員的工作環境與圖中展現的差別不大。但根據工作屬性和所屬行業來講,還是有一些區別。
甲方和乙方的區別
我在剛畢業時進入了一家軟體外包公司,幾乎所有的工作都是在甲方所在地完成的。
因為甲方員工是公司的穩定員工,所以工位來講就要精緻一些,配備也要完善一些。一般都會是隔間,有抽屜、插座、文件架、座機、台式電腦,甚至還有床等等。
而我們作為乙方因為流動性大,人數也不固定,甲方公司不太可能為我們准備這些精緻的辦公位,一般只是拉幾張桌子拼湊起來,然後再接幾個線板,有時候靠椅都沒有,還得坐獨凳。
技術驅動和業務驅動的區別
現在任何一個互聯網公司,技術部門是必不可少的。但是有的公司會以業務為驅動,有的公司會以技術驅動業務。
以業務為驅動的公司就會優先考慮業務的發展,然後技術來輔助實現。我現在所在的就是這樣一家公司,這樣的公司技術部門就會非常的小,人員也會很少。這樣的公司程序員的工位大體上和整個公司的風格沒有太大的區別,因為人少,一般只有5-6個人,做技術的也喜歡安靜,所以一般位置會選擇靠近辦公室的角落。
以技術為驅動的公司會依靠自身技術實力結合行業發展,碰撞出一些具有競爭力的業務品種,並與業務部門配合來實現並推廣產品。這樣的公司技術人員起碼佔到50%以上,這樣的公司更有可能為程序員規劃一個單獨的大辦公室,與外界隔離。一方面是為技術人員提供安靜、舒適的辦公環境,另一方面也是盡量避免閑雜人等進出公司技術核心所在地。
以技術為驅動的公司往往技術實力比較突出,所以他們會為自己的技術團隊配備「駕駛艙」、小機房等設施。
就問題中的格子間來講,不管是什麼性質的公司,只要場地不是特別的擁擠,都會設計成格子間,這樣既保護了員工隱私也充分利用了辦公場地的空間。這並不是程序員特有的風格。