A. 程序員做什麼運動可以提高自己的身體素質
程序員的工資非常高,但是工資很高,壓力也很大,工作時間也比較長,有些程序員在外出的時候要經常帶著一個電腦,如果公司里有任何著急的事情,他們隨時就可以開始工作,程序員的工作壓力也是比較重的,如果長時間守在電腦前,不起來做一些運動的話,對大家的健康不是很好。
B. 程序員如何提高自己的工作效率
程序員如何提高自己的工作效率?程序員要在IT界混出個名堂,也要有高效的工作效率才行。下面我為大家整理了程序員提高工作效率的辦法,歡迎大家閱讀參考!
程序員如何提高工作效率
1)鍵盤功底要扎實
敲鍵盤時要使用標准指法。可能你認為這是程序員的基本功,可是我發現其實很多程序員都做不到這點。看著他們敲代碼時那笨拙的指法我就心急。其實煉成標准指法不難,相當年我還是一指禪,打字極慢,痛定思定,在一周內我打字必用標准指法,再別扭也要堅持,一周後就適應了標准指法了。現在不說運指如飛也算是略有小成。練習指法和鍵盤速度可以給大家推薦一些網站:http://10fastfingers.com/typing-test/english,這個就是練習標准指法的,我可以輕松上60 WPM(每分鍾60單詞),有個外國同事可以達到130以上,那才叫恐怖。http://typing.io/lessons,專門供程序員練習敲代碼的網站,融合了各種括弧和標點,難度有點大。
2)要熟悉IDE的各種快捷鍵及特性
IDE基本上是碼農們上班中使用時間最長的軟體。首先要選擇一個趁手的IDE,俗話說,工玉成其事,必先利其器嘛。如果是C#陣營的那肯定是最新版的Vistual Studio了,如果是java陣營的話當然是Intellij了(eclipse作為開源IDE,真心比不過Intellij)。我現在使用Intellij可以在95%的情況下不用滑鼠,全鍵盤完成開發過程中的大部分操作。我覺得沒有什麼常用快捷鍵、不常用快捷鍵之分,只要你知道的快捷鍵就要拿來用。
尤其是各種重構快捷鍵必須要熟練掌握,當我看到碼農修改變數名時不用重構快捷鍵,而是自己手動在引用的地方一個個改,然後編譯查錯時,真為他們捉急。還有各種inline,introce的快捷鍵真是好用到爆,掌握了這些快捷鍵可以說對代碼進行任何重構都不費除灰之力,我們的注意力也從手動修改代碼轉移到如何發現壞味道了。Vistual Studio中推薦安裝ReSharper,其開發公司與Intellij開發公司是同一家。除了重構快捷鍵,還要掌握一些IDE的特性,比如調試時可以插入指定條件來命中斷點等,這些就要平時的積累和學習,另外還有好奇心。我敢說你現在挨個看IDE菜單,至少有30%功能你從沒用過或不知道是干什麼用的,其實裡面有些功能是非常實用的,只是你沒嘗試而已。
3)至少熟練掌握一種shell終端
作為程序員老用圖形化界面咋行,要用那種古老的命令行界面才能顯示出你的高深嘛!滑鼠點界面誰都會,而命令行界面不是誰都能駕馭。有些功能在命令行下要比圖形界面下高效N倍。比如我使用git提交文件時都是在命令行下查看哪些文件被修改了,哪些是新添加的,修改的部分是哪些等。
使用圖形化界面要用滑鼠點來點去,效率實在太低。linux系統下的終端太多了,就不推薦了。Mac系統下推薦使用iTerm2這個殼,其比MAC自帶的terminal多了不少實用的特性,也能方便切換自己喜歡的配色。Windows下當然首推Windows Power Shell了。Windows Power Shell本身集成了常用的實用工具,並且與.net framework無縫結合,這點是那些在Windows上的類Linux模擬器(比如Cygwin)是遠遠比不了的。
4)具有一定編寫shell腳本的功底
光會用現有的`腳本還不行,還要會根據情況編寫腳本來實現自己特定的一些目標。比如我使用MAC機上的終端時,經常需要在不同目錄間跳來跳去,每次都打一串的cd …..很麻煩,後來我就自己寫了一個小工具,可以給指定的目錄起別名,想要跳到這個目錄只要敲別名即可(參見 http://www.huangbowen.net/blog/2013/02/16/gtshell/)。
還有我在Windows系統上工作時,也經常編寫一些Power Shell腳本,比如一個命令就啟動指定的FTP伺服器,一些小命令用來實現快速在不同項目源碼間切換並執行構建命令等。這些命令編寫起來都很簡單,在提高工作效率方面很好幫助,因為一些常用的費時的操作每天重復N次,讓人很厭煩,如果能夠使用腳本將其自動化起來,豈不是就把自己給解脫了?
5)多語言編程
在這個世界有太多太多的編程語言,但凡稍微流行的編程語言都有自己獨特的優勢,而我們要善於利用每種編程語言的特點,而不是整天吵鬧那種語言更強大。我自己熟悉C#、java語言,也用JavaScript、Ruby、Python、Groovy做過一些東西,甚至為了理解函數式編程還專門學習了Haskell語言。這些語言都給我帶來了實用的效果。比如我用Ruby寫了一個插件,可以自動把我主站上的博客同步到博客園中的博客來。
我使用Groovy給我的Java代碼寫單元和集成測試,比使用Java語言編寫要快很多。我用Python和WebDriver寫了一個論壇灌水工具來刷積分。你掌握的語言越多,你的視野就越廣,你對編程的理解就會越深入。當然我不贊成盲目的求多,至少你要有2到3門精通的語言,從語言語法、語言運行時、語言特性、語言API等方面都要有深入學習和見解,當你再學習其它語言時也不會浮於表面的了。
6)這是最重要的一點,時刻保持一顆好奇心,一顆堅定不移的提高工作效率的決心
很多人都抱著差不多態度,心想“我雖不是標准指法,敲鍵盤速度也差不多”,“我IDE快捷鍵用的不多,也沒覺得那裡影響到我開發”,“我只會C#一種語言,還不照樣干到現在了嗎?”之所以有這種想法,是是因為你沒有見到真正高效的人。我曾看到某IT界牛人那出神入化的VIM操作,簡直已經超越了指哪打哪的境界,已經達到了鍵隨心動的境界。
我也看到某高級程序員使用IDE快捷鍵三下五除二就把一段醜陋的代碼給收拾的服服帖帖。耳濡目染之下讓我堅定了這個決心,不做差不多先生。所以平時我和同事一起工作時,就留心他們有哪些方法和工具來提高自己的工作效率。如果他們使用了一些好用的快捷鍵而我不知道,那我就會記下來下次自己用(快捷鍵熟練程度上我早已是我們項目組的number one)。
如果看到他們使用了一些好的工具我也會立馬回去下載下來自己用。(比如前兩天我看到同事使用SuperPutty來連接遠程主機,其支持多tab方式,這正是我想要的功能。我回去立馬下載下來,拋棄了以前的Putty)這樣時間長了,集眾人之所長,你自然也成為效率達人了。
C. 程序員接私活比上班也掙得多,是真得嗎可以接哪些私活呢
程序員接私活比上班也掙得多,是真得嗎?可以接哪些私活呢?程序員接私活已經是很平常的事情了,並且市面上也有很多靠譜的接私活平台。很多程序員,通過做私活承接項目,將自己的程序能力轉化為收入。收入比工資高是真的。
開發邦:特點:服務范圍明確,it開發項目垂直度高,可以吸引一些需求明確的客戶。該平台還致力於利用互聯網軟體技術為客戶提高效率、降低成本、提高效率和優化管理。
袁急送:平台特點:追求高質量的僱主和工程師,匯聚知名互聯網公司的技術、設計和產品巨頭,通過實際輪班、遠程等方式一對一解決創業問題,提高創業效率。
D. 幹了兩年程序員了,不知道下面的路該怎麼走了,請前輩們指點下好嗎
我有幾個做程序員的朋友,因為我是做職業規劃的,之前有朋友也咨詢過我類似的問題,答復如下:
1.首先,程序員是非常枯燥的工作,做了大概兩年左右都會有倦怠期,這個時候應該問問自己,我還要不要繼續做IT類工作。
2.若確認繼續做此類工作,那麼有兩個選擇,第一是繼續鑽研技術,平時多到網路平台找同行交流或學習。第二是轉運維類工作,我有兩個朋友就是由編程轉到了運維。其實還有第三,可以走管理方向,不過這個需要自己多學習管理類技能,同事也要有這方面的興趣。
作為一名從業多年的程序員,同時也是一名教育工作者,我來回答一下這個問題。
對於從業兩年的程序員來說,正處在技術成長期,如果未來想在技術領域走得更遠,此時應該注重開發經驗的積累,同時應該廣泛涉獵各種技術體系,尤其要注重各種新技術的學習,包括大數據、物聯網、雲計算、區塊鏈、人工智慧等技術體系。對於程序員來說,在從業的最初五年,一定要多做「加法」,更多的技術儲備能夠為崗位升級奠定一個扎實的基礎。
對於專注於行業領域的應用級程序員來說,還應該重視行業經驗的積累,在產業互聯網時代,行業經驗對於程序員未來的發展有非常重要的影響。對於大部分基礎知識比較薄弱的程序員來說,如果不能在技術研發的道路上走得更遠,就應該考慮未來的發展方向,如果具有豐富的行業經驗,會在很大程度上拓展自身的選擇空間。從當前行業發展趨勢來看,程序員可以考慮向產品經理、項目經理、行業信息化專家等方向發展。
對於從業兩年的初級程序員來說,如果條件允許的話,還可以考慮通過讀研來提升自身的崗位級別,目前有不少初級程序員都會選擇考研。按照 歷史 經驗來看,大部分程序員在考研之後都會獲得崗位升級,不少人在讀研之後會選擇進入互聯網大廠發展,薪資待遇也有了一定程度的提升。從這個角度來看,程序員讀研也是一個不錯的選擇。
最後,隨著產業互聯網的發展,當前程序員應該注重雲計算平台、物聯網平台和人工智慧平台相關技術的學習,未來這些平台將有廣闊的發展空間。
兩年也就相當於是剛入行的一個程度,那這個程度就是要多努力幹活,多學多練,想任何其他的都是白費功夫,因為你沒有其他的時間積累,在二至四年的這個時間里,要把自己的工資技術水平提升到你所在的那個城市圈子裡面的中上等的水平,然後你要有一個比較謹慎的思維,不要空有一個想法。
那麼這個時候你個思想和你這個能力就不匹配了。我們首先要選擇考慮的就是北上廣深。你現在還可以努力干到35歲左右。另外技術這個行業它分為一個是偏技術型,另外一個是業務驅動型,還有就是屬於技術骨乾性。偏技術型的話,不建議你選這個,因為不管是程序員也好,前端也好,都是工程師,都是幹活的,不搞科研,雖然很多it公司技術部要求很多,但是都是幹活的,沒有說太深的一些技術要求,基本上就是用於日常的技術啊bug。
另外一個是業務驅動型,也叫業務,就是你要主導需求就是客戶你能找到自己的客戶,然後還要和前端一起去搞定這些問題,你要有老闆的一個思維,自己乾的時間長了,那麼你就能找到自己的這個路了,不管是你創業還是說去其他的地方去做都對自己非常有好處。
你現在考慮的可能就是說以後怎麼發展他這個技術程序員發展的話一般是年齡平均到35歲左右的時候,你就可以通過前期的一些積累,然後鋪墊到35歲的時候,你就可以去做其他的行業的,因為你到35歲的時候,不管是去面試或者是帶領團隊熬夜,很多時候有些東西都跟不上了,所以建議你到那個時候去轉行。
你好,作為一個工作4年的同學,我想以個人經歷回答下這個問題。對於工作兩年的程序員來說,大都是處於技術的快速上升期,應該也接觸了挺多的技術面,包括但不限於分布式、資料庫、網路、大數據等,並且可能對某個框架或者技術有了自己的深入見解。
對於以後的發展,如果是想往 中間件方向發展 的話,需要掌握分布式原理、網路通信、消息隊列、資料庫操作、緩存等,大多數中間件都涉及到分布式支持。可以看幾個不同類型的中間件的原理與設計實現,比如MQ可以看Rockermq,資料庫可以看MySQL,緩存可以看Redis,網路通信庫可以看Netty,配置中心可以看Apollo等,注意,每種類型的中間件或者框架重點學習一個即可,因為思想都是相同的,理解了一個之後在學其他的很快就能上手掌握。當然,除了自己的技術學習之外,一個好的平台也是很重要的,不僅僅能夠認識一幫志同道合的朋友,還能有實際的業務平台去實現技術的價值,這里推薦阿里的中間件相關崗位,目前中國中間件團隊的java水平基本是阿里最高水平了,在這里誕生了很多知名的開源軟體。
針對1-5年的程序員關於技術點來說,可以參考芋道源碼整理的下面一張圖進行查漏補缺:
上面羅列的技術目前我也在學習中,對於技術人來說,知道自己想要什麼,要比自己知道怎麼要什麼更重要。知道自己想要什麼,你就會想方設法去實現它。不管怎樣,腳踏實地做好自己的工作,學習技術,肯定沒錯。
說實話我對程序這東西一竅不通,但我知道不管什麼事情沒有了程序那就亂了,電腦沒有程序就死機了,人幹事情沒有了程序那就沒有頭緒,我覺得你還是好好乾吧,這個行業永遠淘汰不了。永遠是最需要的東西!
說實話,只是普通的編程圈子不會很大,跳出這個圈子會發現還有很多其他相關的職業。如果在一個小公司,程序員工資雖然偏高,但在運營商務銷售其他職務心裡多少還是會有些輕視,畢竟現在普通程序員太多了,大部分人做的東西千篇一律,而他們認為工資其實是靠他們的能力賺取的。
如果想在小公司發展,可以深入了解業務,和一些其他職位的主力人員維護好關系,倒時候想創業可以合夥,想轉行也會輕鬆些。
如果想在大公司發展,可以走管理,大公司一般比較看重資歷,學歷,管理能力。
還有一種走技術路線的,一般只存在於大公司,這種部門在有的公司很閑只是撐個場面,有的是真正能做出實用的東西值得敬佩。
做任何行業都要堅持,兄弟你才做了兩年,相當於是剛入門,以後要走的路還會很遠。
就現在來說,程序員還屬於是高收入行業,工作還比較好找,趁年輕時好好乾,多積累一些經驗,多做一些大的項目,以後的路會越走越寬。
不太清楚你目前的困惑點在哪裡,是學習新技術感覺力不從心了?還是對技術沒有興趣了?還是不想當程序員了?還是對程序員的發展路線迷茫了?不管怎樣,幹了兩年的程序員,對編程這個工作還是有些經驗了,也能夠解決工作中的一些技術問題,但還處於相對初級的一個水平,畢竟積累不太夠。
建議繼續做2-3年開發工作,提升編程水平,提升解決問題的能力,逐漸成長為公司的技術骨幹。等到那個時候,你的選擇會相對多一些,也會理智一些。例如:你在開發過程中,覺得自己更喜歡跟人打交道,想做項目管理,那麼,你多做2年開發工作,並不耽誤你後面轉為項目經理。你可以將接下來的2年作為一個潛伏期,在做好本質工作的同時,注意一定要做好你的工作,你的工作做好了,自然會得到別人的尊重,也會贏得人脈,千萬不可以為將來不做開發了,就開始敷衍、不用心,做好當下,再考慮將來的發展方向,是換一個公司,換一個崗位,還是換一個城市?畢竟程序員的待遇還是可以的,多做2、3年,沒啥損失。
在迷茫的時候,不要做任何決定,靜觀其變。
大家好!我是鍵盤手,
關於這個問題我想說一下我個人的看法,我個人也是吃技術飯的,現在過了三十五歲了,打工已經沒有公司要了,也不想和大學生去搶飯碗,去工作人在心不在。以前二十幾歲的時候,總認為吃技術飯經驗很重要,年齡越大經歷越豐富,薪資就越高,而現實是,現在的公司一般不招三十五歲以上的人員,而且有些公司把三十五年以上的員工解聘掉,主要是人過了三十五歲,思想和創新能力、學習能力沒有二十幾歲時候強,所以對於技術員來說就是一道坎,很多人到了這個歲數都不敢隨意跳槽,也不敢創業。
所以我個人認為如果你不是很喜歡這個行業,就早點作出選擇,當然越早越好,如果你喜歡,那就深造下去,見意在三十歲之前能夠有所作為,不要再給別人打工,我過了三十五歲才明白,打工是最不劃算的買賣。
就這個問題,我根本不了解你的任何情況,我能指點個毛線。再說我還不是前輩。
幹了兩年程序員了,沒有說乾的好還是不好, 回答裡面的各位大佬,你就認為人家 是乾的不好,說不定這個哥牛的一B。
下面的路怎麼走, 我不知道~ 我也是渣渣,不夠格當人生導師~
E. 現在很多年輕人,喜歡練街頭健身的原因是什麼
以前把健身叫練肌肉,這也說明增肌減脂是健身的主流,其實到現在也是增肌減脂的健身玩家居多。
不過,有一個健身領域開始流行了起來,這就是街頭健身。
F. 程序員要具備什麼技能
一名合格的程序員需要掌握哪些技能呢?x0dx0ax0dx0a熟練掌握開發工具x0dx0ax0dx0a做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點推薦的開發工具,C/C++以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C編寫。而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVA One很可能會成為未來的主流開發工具之一。其次,能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,C Builder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。x0dx0ax0dx0a熟知資料庫x0dx0ax0dx0a為什麼資料庫是如此重要?作為程序員,他們自然有自己的理由:很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。如果沒有機會接觸商業資料庫系統,可以使用免費的資料庫產品是一個不錯的選擇,如mySQL, Postgres等。x0dx0ax0dx0a對操作系統有一定的了解x0dx0ax0dx0a當前主流的操作系統是Windows,Linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。要想成為一個真正的編程高手,需要深入了解操作系統,了解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。Linux作為開發源碼的操作系統,是一個很好的學習平台,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。只有對操作系統有一定的了解後,你會發現自己上了一個新的台階。x0dx0ax0dx0a懂得網路協議TCP/IPx0dx0ax0dx0a在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課,網路技術已改變了軟體運行的模式,從最早的客戶/伺服器結構,到今天的WEB Services,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,所以,深入掌握TCP/IP協議是非常必要的。至少,你需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。x0dx0ax0dx0a明白DCOM/CORBA/XML/WEB Services存在的意義x0dx0ax0dx0a隨著技術的發展,軟體與網路的無縫結合是必然趨勢,軟體系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分布計算的中間平台,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規范。程序員需要做的不僅僅是利用商業的開發平台來開發軟體,而是要理解這些技術的初衷,即為什麼需要這項技術,如果你能理解了這一點,再回頭看這些技術的具體實現,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布計算的基石之一。x0dx0ax0dx0a不要將軟體工程與CMM分開x0dx0ax0dx0a現代大型軟體系統的開發中,工程化的開發控製取代個人英雄主義,成為軟體系統成功的保證,一個編程高手並不一定是一個優秀的程序員,一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟體工程思想有機結合,編程只是軟體生命周期中的其中一環,優秀的程序員應該掌握軟體開發各個階段的基本技能,如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟體測試等。一句話可以概括我的看法:「創意無限,流程保證」。x0dx0ax0dx0a擁有強烈的好奇心x0dx0ax0dx0a什麼才是一個程序員的終極武器呢,那就是強烈的好奇心和學習精神。沒有比強烈的好奇心和學習精神更好的武器了,它是程序員們永攀高峰的源泉和動力所在。
G. 程序員是如何找項目練手的_新手程序員如何找工作
首先,你能想到平時找項目來進行練手,說明你是一個在技術上面是一個非常上進的同學。想要找到項目進行練手,第一個想到的地方應該是Github。Github上擁有全球最多的開源項目,你可以從其中找到自己感興趣的開源項目,然後參與到開源項目的開發中去。能夠參與開源社區,這也是很多互聯網公司非常看重的一點。
其次現在也有很多舉辦計算機類比賽的平台,比如阿里雲的天池大數據、Kaggle、Datacasle等。你如果有時間,可液返以參與上面舉辦的比賽,進行項目練手。
想要在Github上面找到自己想要參與的開源軟體,首先你要確定好自己對什麼技術方向感興趣。比如對於我來說,我對實時計算非常感興趣,所以我找了很多開源的實時計算引擎,最後選擇了Flink開源項目,現在也在努力的參與到Flink的開發中去。想要使用開源項目來進行練手,你一定要確定好自己的技術方向,找到感興趣的開源項目,接著就是嘗試參與到其中。
確定好自己感興趣的開源項目後,第一步就是去訂閱官方社區的郵件組,在社區的郵件組裡面,你可以看到很多同學對於開源項目的問題以及解答,你未來有任何問題時,也可以在開源項目郵件組中進行提問。其次,你可以去開源項目的官方網站,將裡面的官方文檔閱讀和理解一遍,這對於你未來API的使用和概念的理解,會有很大的幫助。
最後,你可以去開源項目的JIRA(問題主頁),查看自己能解決哪些JIRA,隨著你解決的問題越來越多,我相信你的能力也會提升的越來越快。
其他方面,你也可以去阿里雲的天池大數據等平台上面查找自己想要參與的比賽,上面的比賽主要以演算法類比賽為主,但也有性能優化相關,編程類的比賽項目。我漏團以前在上面參加過阿里中間件的比賽,但是還是和同學一起來進行參加,一路跟著做下來,自己的能力也提升了很多,而且在校招的時候,面試官也問鬧搜飢了很多這方面的問題。如果你能夠跟著比賽做下來,我相信你肯定能夠得到一定的收獲。
H. 一名優秀的程序員必備的素質是什麼
程序員必備的七種素質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但是學習也要找對目標,善於總結,也是學習能力的一種體現,每次完成一個研發任務,完成一段代碼,都應當有目的的跟蹤該程序的應用狀況和用戶反饋,隨時總結,找到自己的不足,這樣逐步提高,一個程序員才可能成長起來。
I. 如何自學成為程序員
如何學習自學編程的方式最好的莫過於在網路上面查找資源。
目前,網路上電腦資源多不勝數。其中有很多都是基礎到精通的視頻教程。通過視頻講解。讓你明白重點知識。你通過查找一套適合自己的視頻。然後看完是基本。
這里推薦幾個可以在線學習的好網站:慕課、極客學院、傳智播客、如朋網、網易公開課等等做筆記在進行看視頻的過程中,一定注意要記筆記。
對視頻中重點的部分進行截圖,並加以文字解釋。就形成了自己的筆記。這些筆記對於你來說很重要。通過記筆記的形式,你就不需要重新觀看視頻了。只需要復習的時候查看筆記就夠了,這樣就大大的節約了時間。
下面介紹一個記筆記的好軟體:CherryTree多練習代碼在視頻中講解的代碼,我認為你至少需要自己寫三遍以上。在寫代碼的時候,就用到了上面寫的筆記了。通過看筆記截圖,即可自己慢慢摸索寫出來代碼。當然練習到一定程度,就需要你適當的做個項目。鞏固自己的知識。
程序員必備技能
1、熟練開發工具
做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點推薦的開發工具,C/C++以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C++編寫。
而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVAOne很可能會成為未來的主流開發工具之一。
其次,能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,CBuilder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。
2、熟知資料庫
為什麼資料庫是如此重要?作為程序員,他們自然有自己的理由:很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。
雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。如果沒有機會接觸商業資料庫系統,可以使用免費的資料庫產品是一個不錯的選擇,如mySQL,Postgres等。
3、了解操作系統
當前主流的操作系統是Windows,Linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。要想成為一個真正的編程高手,需要深入了解操作系統,了解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。
Linux作為開發源碼的操作系統,是一個很好的學習平台,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。懂得網路協議TCP/IP。
在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課。
網路技術已改變了軟體運行的模式,從最早的客戶/伺服器結構,到今天的WEBServices,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,深入掌握TCP/IP協議是非常必要的。
至少,需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。
4、明白DCOM/CORBA/XML/WEBServices存在的意義
隨著技術的發展,軟體與網路的無縫結合是必然趨勢,軟體系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分布計算的中間平台,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規范。
XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布式計算的基石之一。
5、不要將軟體工程與CMM分開
大型軟體系統的開發中,工程化的開發控製取代個人英雄主義,成為軟體系統成功的保證,一個編程高手並不一定是一個優秀的程序員,一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟體工程思想有機結合。
編程只是軟體生命周期中的其中一環,優秀的程序員應該掌握軟體開發各個階段的基本技能,如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟體測試等。
6、需求理解能力
程序員要能正確理解任務單中描述的需求。
在這里要明確一點,程序員不僅僅要注意到軟體的功能需求,還應注意軟體的性能需求,要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有著兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。
7、模塊化思維能力
作為一個優秀的程序員,他的思想不能局限在當前的工作任務裡面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。
這樣做可以使代碼能重復利用,減少重復的勞動,也能使系統結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。