㈠ 一個程序員要具備的基本素質是什麼
團隊精神和協作能力 :
把它作為基本素質,並不是不重要,恰恰相反,這是程序員應該具備的最基本的,也是最重要的安身立命之本。
文檔習慣:
作為代碼程序員,30%的工作時間寫技術文檔是很正常的,而作為高級程序員和系統分析員,這個比例還要高很多。缺乏文檔,一個軟體系統就缺乏生命力,在未來的查錯,升級以及模塊的復用時就都會遇到極大的麻煩。
規范化,標准化的代碼編寫習慣:
作為一些外國知名軟體公司的規矩,代碼的變數命名,代碼內注釋格式,甚至嵌套中行縮進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和糾錯,也有助於不同技術人員之間的協作。
需求理解能力:
作為程序員需要評估該模塊在系統運營中所處的環境,將要受到的負荷壓力以及各種潛在的危險和惡意攻擊的可能性。就這一點,一個成熟的程序員至少需要2到3年的項目研發和跟蹤經驗才有可能有心得。
復用性,模塊化思維能力:
復用性設計,模塊化思維就是要程序員在完成任何一個功能模塊或函數的時候,要多想一些,不要局限在完成當前任務的簡單思路上,想想看該模塊是否可以脫離這個系統存在,是否可以通過簡單的修改參數的方式在其他系統和應用環境下直接引用,這樣就能極大避免重復性的開發工作。
測試習慣:
軟體研發作為一項工程而言,一個很重要的特點就是問題發現的越早,解決的代價就越低,程序員在每段代碼,每個子模塊完成後進行認真的測試,就可以盡量將一些潛在的問題最早的發現和解決,這樣對整體系統建設的效率和可靠性就有了最大的保證。
學習和總結的能力:
善於學習,對於任何職業而言,都是前進所必需的動力,對於程序員,這種要求就更加高了。但是學習也要找對目標,一些小coding fans們,他們也津津樂道於他們的學習能力,一會學會了asp,一會兒學會了php,一會兒學會了jsp,他們把這個作為炫耀的資本,盲目的追逐一些膚淺的,表面的東西和名詞,做網路程序不懂通訊傳輸協議,做應用程序不懂中斷向量處理,這樣的技術人員,不管掌握了多少所謂的新語言,永遠不會有質的提高。
㈡ 程序員未來前景如何大齡程序員出路在哪裡
其實程序員什麼35歲就不行了的說法是個偽命題,是人為的強加的致幻劑。雖然軟體行業有其特殊性,但是也有其普遍性。其他行業35歲那才真正進入事業快車道,軟體行業我認為也差不多。
軟體行業不光是寫代碼,積累到35歲,如果還能寫代碼那一定是經驗豐富,代碼水平高,即便繼續寫代碼那也比一般的人好,當然排除那些不思進取不學習的人。
最差帶幾個人做個項目經理做項目就比年輕仔強很多。不但可以利用自己的經驗還可以寫關鍵代碼。年齡其實不是問題。
那問題是什麼給大家的印象是35歲程序員就沒得混了?其實現在很多程序員其實是碼農,大家說IT行業是一個知識更新非常快的行業,其實也不盡然 ,更新的是表面,其本質一直沒變,一個碼農一般都學的是皮毛,就懂一點什麼框架 的編程,缺乏學習能力,不懂軟體最基本的原理,學校學的那點一旦過時就什麼也不剩了,那面臨的就是淘汰。
如果是一個了解軟體本質,學習能力強的人,語言只是形式,對於一個項目,覺得什麼語言合適就用什麼語言,你懂一門語言,另外一門語言要不了一個星期就可以編程了,關鍵還是基礎,是原理,是思想和經驗。
所以程序員們,不要被別人的致幻劑迷糊了,只要你肯學能進步,喜歡軟體開發,年齡一定不是問題,只能越來越吃香。
本人作為程序員,曾經也為這個問題困擾著。程序員在35歲就會面臨各種問題,身邊也有這樣的例子,上一家公司有一個同事,40歲了還在寫代碼,他的工資不高。後來項目預算超標了,他也就成為了被裁員的對象。那是我第一次感覺到了年齡越大而帶來的危機。
但是話有說回來了,40歲了還在寫代碼。只能說明了他對自己沒有明確的職業規劃或者個人的不思進取造成的。IT行業有他的特殊性,第一個特殊性就是知識更新很快,第二個就是很注重職業規劃。
所以要想不被淘汰,要麼積極學習沒擁有很厲害的技術,成為一個領域的技術專家。要麼走管理路線,在平時上班的時候就要注重這方面的培養,首先要在工作中鍛煉,還有考取一些專業的證書來給自己增加競爭力。
當然也有的選擇自己創業,這是最好的結果。所以,在當下最重要的是怎麼給自己規劃。多考慮這方面的問題,要是想通了也就沒有那麼的糾結了。
個人觀點,不喜勿噴!也希望大家能夠說明自己的觀點,大家一起學習,一起進步,營造良好的學習氣氛!
大家都知道程序員也分為做什麼開發的程序員,比如市面上最流行的java、C語言、C++、python、PHP等等開發程序員,未來的發展是不一樣的。
其實,我覺得未來發展前景的話,要找天花板較高的語言來作為基礎學習,慢慢的把自己的架構思維給建立起來。
等你擁有自己的架構思維之後,其實語言就是一種工具而已,所以一定要清晰規劃自己該學習什麼語言,該怎麼樣來學,我在這里推薦Java語言,因為Java語言的學習就能夠幫你初期建立這種思維方式,還有Java語言的獨特性,證明了它的優越性!也證明了它的天花板比其它語言要高,當然上手難度也比較高,自己要有一個清晰的認識,
關於大齡程序員出路,我這里得多說一嘴!
一提到大齡程序員,大家第一時間就會想到,35歲中年危機。
不可否定,35歲這個詞確實很扎心,也是許多程序員的恐懼所在,但是,請大家不要驚慌,要給自己打一針強心劑。
30而立相信大家都聽說過吧?但是也不然,也看個人的機遇和努力!程序員也是一樣!
這里就說到了職業規劃的重要性,從22歲畢業實習再到30歲這八年時間,處於一段技術磨合和提升期,也就是技術的沉澱,沉澱到了一定的時間之後,就要考慮管理經驗的提升,隨著年齡的增長,身體上、思想上、精神上都會出現惰性,當然也跟自己的運動有關系,要加強自己對身體的鍛煉,每年做體檢!
30歲之後,有的人考慮單飛,自己找合夥人創業,自己開公司求發展;有的人繼續按部就班,沉浸在996的世界之中;有的人不斷地提升自己的技術能力和架構思維,在大廠中繼續深造,讓自己變得更有價值!
不知道你們是屬於哪種,但是,最重要的還是個人的思維!希望自己能夠好好考慮一下,從自己下手,徹底的改變自己,不然淘汰是遲早的事兒。
三點:改變自己的思維;加強自己鍛煉;做好職業規劃!
以上個人觀點,不喜勿噴!歡迎大家一起討論。
我是個IT新人,程序員的未來前景毫無疑問是不可小看的。世界逐步進入5G時代,對於程序員來說即是挑戰也是機遇,5G時代到來必將會帶了新的技術升級,也必將淘汰舊的技術,所以說對於程序員即是挑戰也是機遇,只有不斷地學習你才能把我好這一機遇,雷軍說:「站在風口上,豬都能飛」。但首先你得是有準備的豬 。
對於大齡程序員,我是這樣子想的,等我年齡大了,不可能一直處在代碼一線,要麼轉管理崗位,如:技術主管,產品經理,項目經理,有能力的做個技術總監。
要麼轉行,我朋友常常給我開玩笑說,等年齡大了,我們去送外賣吧!自由自在,月入過萬
要麼拿出積累多年資金、人脈開始創業
在民企,大齡程序員確實不好混了。華為裁掉35歲以上的普通員工,就說明這些大公司只需要年輕人,加班苦幹。年紀大了,拖家帶口的,加不動班了,就勸退。這種情況說明這種工作都是些按部就班的,沒什麼創造性的工作,不需要很多經驗。
外企的情況會好一些,50多歲的頭發花白的程序員依然在工作,他們看重的是工作的積累,經驗。公司也把這些人當做公司的財富。國內因為抄襲太嚴重,不太注重知識產權,導致程序員的地位並不高。
大齡程序員要在工作之餘,發展一些副業,多學些技能,考一些證書,做一些理財投資等等。保證自己萬一被裁員,不至於沒有收入陷入焦慮。
這問題問的,大齡農民工出路在哪兒?
所以了,人口總量下滑,人力資源不足,大齡程序員總是有人要的,只不過不同水平的去向、待遇不同罷了,這跟年齡、行業沒關系,哪個年齡哪個行業都一樣有分化。
首先,程序員這個職業不再是個香餑餑,這一點各位程序員必須要擺正心態!隨著人工智慧在編程方面的運用以及程序員數量的大規模上漲,未來大多數程序員的待遇會跟 社會 平均工資看齊,短時間依然會有優勢,但隨著時間推移,這種優勢必然轉為劣勢。為何?供需決定價格,以前供不應求當然價格高,未來供大於求甚至每個人都會編程,自然沒啥議價空間。而那些沒人願意乾的臟活累活自然成為高收入崗位。
其次,許多程序員會成為領導或者老闆,畢竟 社會 需求在,有大需求也有小需求,對用戶需求敏感的人自然能夠抓住機會自己創業。
再有,某些高收入程序員會跨界進入別的行業,畢竟有了資本有了 社會 經驗,很多事情都是相通的。
最後,大多數沖不上去也沒錢或沒想跨界的,繼續待在公司里搬磚,雖然加班比不上年輕人,但畢竟經驗豐富,碼代碼的速度和質量是有的,只不過工資持平獎金下降不忍也得忍啊,畢竟為了生活,別的很多職業人家的工資本就是好多年沒變化,程序員也不會例外,之前例外是因為供不應求。
有人說程序員是腦力活,跟農民工不能比,六十歲農民工還能幹活,六十歲程序員腦子怎麼跟得上?作為過來人,筆者可以向各位保證:越大的團隊,里邊需要動腦子的人越少,大多數大廠的程序員混到最後都是乾的力氣活,根本不需要腦子,這就是熟練度。至於這是好是壞,仁者見仁智者見智。
優秀的程序員不論年齡大小,前景都非常好!巨大的市場需求決定了優秀程序員的緊缺性,在數字化時代,已經沒有哪個行業會離開軟體的支撐,這個趨勢在可預見的未來不會改變。
一般來說,人會隨著年齡的增長,工作的時候精力會跟不上,但從另一個角度講,年齡大了,經驗就會更豐富,尤其對於像程序員這種知識型工種,只要他肯學習,跟上技術的進步和變化,他就不會落後,就會繼續有用武之地。
軟體技術的變化也是非常大的,新的框架、新的開發環境、新的編程語言不斷出現,程序員也要注重自身的學習和修養,為斷適應互聯網+時代的技術發展,只有這樣,程序員才會永葆青春。
當然如果已經功成名就,賬務自由,選擇別的職業也挺好,人各有志,看個人發展和興趣愛好!
30+程序員一枚,剛好可以回答這個問題。
先簡要說下我對這兩個問題的答案:
下面,我們就來一一解釋。
程序員是有前(錢)途的職業
首先是 金錢 方面。在所有行業裡面,it行業是比較有前(錢)途的職業,我想這句話可能極少有人反駁。當程序員相對來說能掙錢,即使這些錢是需要加班加點掙來的,但是總歸來說提供了普通人一個掙相對高薪的途徑。即使在北上廣深,當程序員也相對其它行業更容易買車買房,站穩腳跟。另外,每年無數的大專本科生上培訓班,當程序員也很能說明情況。
其次是 行業發展 方面。程序員從事的是it行業的工作,是一門用技術改變生活的行業,it技術已經應用於方方面面,這也無形中給程序員提供了更廣闊的用武之地。
關於大齡程序員的問題,其實我覺得更應該說是 一個普通人中年危機的問題 。因為年齡大了,薪資相對新人更高,加班能力更差是大部分行業都會遇到的問題,只是這個問題在it行業放的更大了。網路當中很多所謂的35歲問題,一部分是來自於程序員的自嘲,一部分情況其實是因為部分大齡程序員拿慣了高工資,沒有做人生規劃,技術沒有提升,然後又遇到了中年危機後無所適從罷了。可能有人會說老師,醫生等行業會隨著年齡增加而成長什麼的,這個確實有其相關性。但是程序員畢業就拿高薪,其它行業可能要積累很多年(這里說的是平均,個例不探討)。
至於出路,我認為出路有很多:
當然,我這里說的大齡程序員指的是正常的程序員,不是那種天天混混日子,突然一裁員發現自己啥也不會的人,我覺得這種人基本上是很難有出路的。
關注令狐一沖,關注區塊鏈和IT技術!
計算機是未來人類的一個發展方向,是生產力提高的方向,而且是長期發展的,所以程序員不會過剩,也不會淘汰。至少在50年內,還看不到能夠代替計算機發展的新工具,可以看到的是,計算機本身的發展。而程序員在出路方向上有很多選擇:
1,軟體方向:軟體是計算機與人類交換的媒介,很多大型軟體公司已經存在幾十年了,還將繼續發展下去。
2,硬體方向:計算機本身的發展,需要 科技 進步,在新材料研究,製造工藝提升,架構設計運用方面,都需要不斷提升。
3,物聯網方向:這個不用多說,物聯網是在在互聯網基礎上,通過射頻識別(RFID)、 紅外感應器、全球定位系統、激光掃描器等信息感測設備等方面,給我們帶來便利,在我們生活的方方面面已經離不開了。
4,人工智慧:簡單舉個例子,小愛同學能和你進行簡單交流,阿爾法狗,打敗了全世界所有頂尖圍棋高手。
5,數字媒體技術:數字媒體技術是一個結合了數字技術、媒體與藝術設計的多學科交叉專業。它注重創意,利用媒體技術,在 游戲 、移動互聯網、互動 娛樂 、影視動畫等領域展開研究和創作,重在培養能夠熟練地應用現代計算機技術,從事數字媒體製作、圖形圖像處理、動畫設計等。
6,以上是主要方向,還有很多,這里用四
個字概括:等等,等等。
㈢ 作為一名優秀的程序員,要具備哪些基本功
程序員(英文Programmer)是從事程序開發、維護的專業人員。
作一個真正合格的程序員,需要具備:
1:團隊精神和協作能力
團隊精神和協作能力是作為一個程序員應具備的最基本的素質。
2:文檔習慣
文檔是一個軟體系統的生命力。作為代碼程序員,必須將30%的工作時間寫用於技術文檔。沒有文檔的程序員勢必會被淘汰。
3:規范化的代碼編寫習慣
知名軟體公司的代碼的變數命名、注釋格式,甚至嵌套中行縮進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和糾錯,也有助於不同技術人員之間的協作。
4:需求理解能力
程序員要能正確理解任務單中描述的需求。
5:模塊化思維能力
作為一個優秀的程序員,其思想不能在局限當前的工作任務裡面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。
6:測試習慣
測試是軟體工程質量保證的重要環節,但是測試不僅僅是測試工程師的工作,而是每個程序員的一種基本職責。程序員要認識測試不僅是正常的程序調試,而要是要進行有目的有針對性的異常調用測試,這一點要結合需求理解能力。
7:學習和總結的能力
程序員是很容易被淘汰的職業,所以要善於學習總結。
㈣ 范凱的個人觀點
來自范凱的個人博客 因為看到一篇討論PHP,Python和Ruby的編程語言討論貼,就說說我的PHP,Python和Ruby之路吧:
我2000-2001年用PHP用了兩年,那還是第一次互聯網泡沫時期,到2001年後期,Servlet/JSP流行,然後我就發現:你說用PHP寫的東西,都會被人鄙視。當時我們其實也用Java了,只不過用Java寫後端的消息隊列。
2001年後期泡沫破滅,我跑去做企業應用,就主要寫Java寫了很多年,中間2003年開始做JavaEye網站,到2006年用Rails重寫JavaEye之前的3年,用的是phpbb搭建的,所以PHP也斷斷續續一直用到了2006年。
以我2000-2006年總共六年多的使用體驗來說,我對PHP真的是深惡痛絕之,但凡做一個稍微大一點的系統,代碼就很容易失控。2002年以後,我曾經一度以為PHP這個東西快死掉了,那個時候大家都言必稱J2EE和.net了。結果Web2.0之風襲來,大家又發現J2EE太重,PHP又死灰復燃了,我其實很詫異現在PHP居然又變得如此流行。從技術上來講,PHP是個很爛的東西,但它門檻低,易部署,普及率高,好找人,實在是互聯網時代的VB,打不死的小強。
Python我大概是04-05年迷戀了一年左右,研究過Zope,plone,後來還看過wxPython,曾經一度想用Python寫JavaEye網站。記得04年Rails出來之後,還很長一段時間被我深深鄙視過。
但後來我去杭州拜訪potian,被他的Rails實踐經驗說服了,之後我和他以及其他人在JavaEye上面有一個很長的討論貼,討論Rails的運行機制,最後我又被他說服了。然後我還不死心,研究和比較了Rails和Django,不得不死心了,後來還曾經幾次想用Python,每次都死心的很徹底,現在就徹底不考慮Python了。
就算你不用Rails,作為一個程序員,我也強烈建議你學習一下Ruby,僅僅因為可以開拓你的思維就很值得了。因為Ruby的語法很強大很好玩,是現代語言版本的smalltalk,算是很原汁原味的面向對象編程語言,你學習了Ruby以後,你就會發現,原來Java/C++所謂的面向對象就是TMD的山寨版本的面向對象,原來面向對象還可以這樣玩阿。
PHP用一句話來總結就是:quick and dirty
Python用一句話來總結就是:quick and clean,but not convenient for web development
Ruby用一句話來總結就是:code for fun and quick for web
補充一下吧:為什麼我當初用Rails來寫JavaEye網站:
在選擇用什麼工具開發JavaEye網站的時候,唯一的指導標准就是:用最少的人力,最少的時間開發JavaEye網站,並且後期維護和持續升級,乃至重寫的時候,代價最小。
首先排除Java和C#,代碼太多太麻煩;
其次排除PHP,項目一大,代碼一多,代碼的管理很成問題,PHP缺乏一個起碼的包管理機制;
當時重點考察Python和Ruby,因為有豆瓣的先例,開始很傾向於Python,而且我那個時候對Python比較熟悉,還曾經痴迷過一段時間的wxPython,對Zope和plone也有一些研究。
但後來比較了Rails和Django之後,就傾向於Rails了,差距實在太大了,而且當時Django很不成熟,在很早期的版本。其實即便現在Django和Rails的差距也沒有縮小過。
但讓我最終下定決心的是potian在05年就大規模使用Rails的實際工程經驗,我曾經去杭州就我比較質疑的問題當面請教過他,和他談過以後,就決定用Rails了。
應該說,我當初用Rails的決定很英明! 在四年以前,當我開始鼓吹Hibernate,抨擊EJB的時候,遭到的是群起而攻之的場面,但是不到一年之後,Hibernate已然得到了普及和大多數Java開發人員的認可;
在三年以前,當我開始贊譽spring的時候,spring還面臨著EJB3的陰影,以及EJB2對其不登大雅之堂的指責,然而不到一年的時間,spring已經成為絕大多數Java開發人員的首選;
在兩年以前,我極力希望宣傳webwork,唱衰JSF,時至今日,webwork以Struts2.0的身份容登大雅之堂,而JSF還在靠廠商死挺著;
而當一年之前我開始採用RoR開發JavaEye的時候,RoR的置疑之聲還甚囂塵上,但當我在今年初預言07年下半年RoR在國內會被廣泛接受的時候,很多人已經笑不出來了;
今年我預言些什麼呢?我覺得會是AJAX技術走出PC的時代,證據就是iphone,與此相關聯的事情就是REST架構的流行。
但是這篇文章裡面我想談的卻不是我預言的水平準不準,而是想談Java真的會因為RoR的流行而過時嗎?目前在web開發主要應用在兩個大的領域,互聯網和企業應用,我們分別來看一下:
一、互聯網領域
互聯網領域第一大動態語言是PHP,第二第三分別是ASP和Java。在中小型互聯網應用當中,PHP的王者地位不容動搖,但在大型應用當中,Java是目前主流的選擇,特別是電子商務類型的應用,例如阿里巴巴就從早期的PHP轉變到Java,從前的eachnet也是如此。造成這樣局面不是沒有原因的:
1.中小型互聯網網站強調開發速度,維護成本,以及入門快速和部署成本,PHP是最合適的選擇;用Java則顯得過於笨拙,開發慢,維護成本高,入門周期長,部署麻煩;RoR開發速度最快,維護成本最低,但是RoR入門速度沒有PHP快,部署成本比PHP高。因此中小型互聯網網站主流還是PHP,但RoR能夠占據一定的份額。
2.大中型互聯網站強調穩定性,性能,大規模代碼的組織能力,而開發效率則退居次要地位,有些應用如電子商務對事務有很高的要求,顯然Java是最合適的選擇;PHP的代碼組織能力最差,RoR次之。
在互聯網領域,Java從來就不是主流,並且Java的適用領域和RoR不太重合。我們甚至可以這樣說,RoR現在在互聯網領域取代的是那些原本不適合用Java,但是被錯誤的選擇了Java的項目。
二、企業應用領域
目前企業應用領域第一大語言是Java,dotnet其次。企業應用採用的技術和行業有很大關系:例如金融行業,電子政務行業一般只採用Java。dotnet發展了6年尚且沒有進入企業高端的應用,RoR在短期之內也很難取代Java的地位。
在企業應用領域,Java是主流,並且Java的適用領域和RoR也不太重合。我們也可以這樣說,RoR將來在企業應用領域要取代的是那些原本不適合用Java,但是被錯誤的選擇了Java的項目。
至此,我想Java程序員大可以松一口氣,RoR目前有哪些不適合的場合呢:
1.對事務要求非常高的場合
RoR還是很簡單的單資料庫事務控制,缺乏精細的事務控制功能,當然也不支持跨資料庫的分布式事務。因此對於事務要求嚴格的大型電子商務網站,部署復雜的分布式資料庫場景顯得力不從心。當然也許有些plugin可以提供這些功能,但是從目前的功能完備性和成熟度來看,還不夠。
2.處理大量遺留資料庫的場合
ActiveRecord的威力很大程度上來自約定,大量命名糟糕的遺留資料庫會對RoR造成比較大的障礙。
3.龐大的項目團隊,對開發速度要求低的場合
例如日本外包項目,團隊龐大,個體開發速度要求低。但是對於代碼規范要求嚴格的項目。
雖然RoR不會取代Java,但不意味著作為程序員的你可以固步自封。即使在工作當中用不上RoR,多看一點新的技術,對於開闊個人視野也有很大的好處。 挺有意思的現象
記得過去還沒有創辦JavaEye的時候,在技術社區裡面推廣Hibernate(也算不上是推廣,只是和別人交流Hibernate),就有一大批人酸酸的跳出來說,你們今天學習這個明天學習那個框架,全都是跟風,這些框架都是浮雲,真正JDBC這種基礎知識才是實力的,我就用JDBC,我用的一直很好,我完全沒有必要去學習Hibernate……
每當看到這種話,我就覺得特別好笑,用一個我發明的說法叫做「牛逼哄哄的露怯」。沒有人逼你學習Hibernate,你不樂意關心Hibernate,那就繼續用JDBC好了,這個世界從來都不是非黑即白的。
其實這種人的心態很有意思。他一方面眼紅人家學習新的技術,另一方面自己又不想花時間和代價去學習,所以恨不得所有的人都不要去學習新技術,這樣他心裡就感覺很安全了,正因為如此,他就總是要時不時跳出來打擊一下別人,表面上很牛逼,其實虛弱的內心掙扎一覽無余。
如果想把技術作為終身職業,那麼對於技術人員的起碼要求就是不能固步自封,要始終以開放的心態接受新技術。
打好基礎知識固然重要(重要到根本無需你一遍又一遍的祥林嫂),但是不接觸新技術,新思路,新的理念,很快就會被淘汰掉。
當然學習新技術也不是盲目的什麼都學習,什麼流行學習什麼,而是根據自身的需要,有選擇的學習。例如Java Web框架有很多很流行的,Struts,Webwork,Spring MVC,Tapestry,JSF,主流的就有5個,盲目的學習者就是人家說什麼他就學什麼了。而聰明的學習者應該對這些東西都去接觸一下,從中選擇一個值得自己投資時間成本去學習的框架。例如對這五個框架我都涉獵過一遍,最終我把時間花在了Webwork上面,事實也證明我當初的投資是正確的。
我學習ruby on rails有很現實的需要,其實即便拋開現實的需要,我也認為如果有空,Java開發人員有必要學習一下,原因是:
1、ruby語言和rails框架的社區力量正在以驚人的速度增長,甚至已經進入爆炸式繁榮的前夜,這不是曇花一現的現象,而是一個時代開始的象徵。
2.從我這段時間學習的情況來看,ruby語言有足夠的學習深度,我原來以為自己一個很快速的上手,然後就很精通了,但是ruby不像PHP那種方便麵,其知識的廣度和深度都讓我感覺這是一個完整的知識體系。也正因為如此,ruby生命力會很長。
3. ruby和rails是非常非常Unix-like的東西,經常和操作系統提供的功能有深度的依賴,這和Java這種不依賴操作系統,什麼基礎設施都自己捲起袖子自己創造的理念相比,非常非常的不同。這樣做會帶來一個很大的好處,很多在Java裡面解決方案很復雜的問題,在ruby方案中就很簡單可以搞定,相比之下,讓Java顯得頗為大而無當。
不過ruby和rails也樹立起了一堵牆,這堵牆就是Unix操作系統,要學好我,你就先跨越Unix這堵牆吧。呵呵,這也是為什麼rails core team清一色的MacOSX的原因了。
不過我覺得這是好事,我本人是Unix fans,樂意見到這種現象,況且憑借我多年深厚的Unix功底,在ruby fans中,我又站在了一個很高的起點上領跑了。
想學好ruby嗎?先在你的電腦上面安裝MacOSX/ubuntu作為開發環境咯。 孟岩最近寫了一篇博客:
Ruby 1.9不會殺死Python
這篇文章很有點標題黨的意思,所以在JavaEye論壇很快被水掉了,只好鎖貼:
但我個人對於孟岩的觀點是不敢苟同的。首先我並不同意所謂魔幻語言和簡約語言的分類。其實Martin Flower論述過這個問題,他是用「人性化介面」和「最小介面」來區分編程語言的風格化差異的。
其實不用我多說,Martin論述的挺充分了。強把Ruby和C++歸為魔幻一類,其實並不準確,因為Ruby的魔幻語法和C++相比,最大區別在於:
C++的魔幻語法會導致代碼的可讀性變差,而Ruby的魔幻語法會導致代碼的可讀性大大提高。
不論是matz本人,還是整個Ruby社區,Rails社區諸多開源項目的作者,抑或整個Ruby和Rails開發者社區,在一個編程哲學問題上是高度統一的,這就是:
強調程序員的快樂編程,追求人性化編程,在代碼的可讀性上面有偏執的追求,拒絕難以閱讀的代碼和難用的API。也就是所謂的coding for fun!
所以你看無論是Rails,rake,rspec,甚至移植自lucene的ferret,都鮮明的體現出來這種特點,就是API簡單好用,讓你寫的代碼像英文文章,自然流暢,輕松愉快。要是哪個Ruby框架的API復雜晦澀,在Ruby社區簡直沒法混,大家根本不買他的帳,這也是為什麼Ruby應用於DSL領域這么熱的根本原因。
對於ruby程序員來說,這種追求編程人性化的哲學理念會潛移默化影響程序員,讓他不知不覺把代碼的可讀性越寫越好。對於程序員來說,誰不想coding for fun呢? 而當你品嘗到了coding for fun的樂趣,又怎麼會輕易拋棄?
所以Ruby受程序員歡迎的根本原因還是在於它是一種能給你帶來編程樂趣的語言。 有人說,robbin你說了那麼多RoR的優點,你啥時候說說RoR的缺點阿?你說的缺點肯定比別人說的更客觀。沒辦法,為了表現出來我不是一個RoR粉,只好總結點缺點,以饗RoR黑子們:
Ruby和Rails的一些缺點的總結:
ruby的問題我覺得主要是:
1.ruby本身的性能是比較差的,無法直接做一些計算密集型的任務
比方說大量的分詞運算、語料訓練什麼的,用ruby寫是不行的
2.ruby的C擴展很難寫
正因為ruby性能差,所以很多情況下要依賴C寫的底層庫,但是寫ruby的擴展C庫是很困難的事情。一方面沒有特別多的資料介紹,你能參考的只有《Ruby Hacking Guide》,另外一方面Ruby是帶有GC的語言,C又是沒有GC的,所以如果你對ruby的GC機制沒有特別清楚的了解情況下,寫C擴展會出現意想不到的問題:比方說你寫的程序邏輯沒有任何問題,但是和ruby配合起來就會不定期的出現錯誤,這就是你C程序的某個賦值變數可能會被ruby GC以你意想不到的方式銷毀。
3.ruby的C擴展庫質量不高,容易出現內存泄漏問題
正因為上面的原因,很多第三方的C擴展庫質量不好,很容易出現內存泄漏問題,這是一個很頭疼的問題,你很難定位,也很難解決,只能盡量避免使用第三方擴展C庫。
Rails的問題我覺得主要是:
1.特別容易出現命名沖突
你自己寫的代碼裡面給類增加的方法,動不動就和Rails給類擴展的方法名稱沖突了。這種錯誤很隱蔽,很難發現。這也是ruby語言動態性帶來的一個負面影響
2.Rails每次升級API變動都比較大
Rails升級是不太考慮向下兼容性的,所以每次升級的話,可能你很多代碼都要改,更糟糕的是很多Rails插件特別喜歡以hack rails的方式來擴展Rails功能,那麼Rails一升級,插件的兼容性幾乎肯定是不行的,這個是比較痛苦的事情。
3.Rails的view方面還是比較原始的erb拼接字元串方式,像JSP那樣原始,沒有一個類似Java的velocity/freemarker那樣的頁面模版庫,所以寫helper動不動要用字元串去拼html片斷,如果是特別復雜的view需要拼的話,代碼就會寫的很醜陋。
當然總體來說,RoR還是讓我感覺非常滿意的,特別適合互聯網應用。 從無到有剛開始做一個網站或者一個產品,要非常聚焦,沒有旁的多餘功能,只有一個做的極其牛X的核心功能,牛X到別人沒有辦法模仿你,於是網站開始嶄露頭角;
等核心功能成功以後,網站開始聲名鵲起,為了擴展用戶規模,產品開始多元化,各種各樣時髦功能,各種各樣用戶要求的功能紛紛上馬,於是用戶規模開始快速擴張;
等用戶規模已經起來之後,開始聚焦商業目標,於是刪繁就簡,開始砍掉與商業目標不符合的枝節功能,加強和商業目標符合的核心功能,網站進入健康的商業循環;
大部分網站都可以做到第一個階段,但其中大部分都會倒在第二個階段,而邁過第二階段能夠做到第三個階段的就鳳毛麟角了。到了第三個階段,一個產品才真正開始成熟起來,才具有頑強的生命力,在IT垂直領域裡面,JavaEye處於第二個階段,需要向第三個階段轉變。
也曾經盲目的想把JavaEye的規模做到行業最大,於是上了各種各樣的產品和功能,很多都沒有細化和雕琢,現在想來都有些多餘,而符合商業目標的核心功能又用力不足。現在總算想明白一個道理:規模最大又如何?還是不賺錢。所以接下來怎麼做就很清楚了。
另外一條思路是做平台,互聯網的未來生態系統肯定是由平台和內容提供商構成的,你要麼做平台,要麼做內容提供商。但在IT垂直領域,用戶規模和市場空間過於狹小,平台沒有足夠的空間生存,所以這條路不通。不要企圖做大而全的門戶,不要企圖做無所不包的平台。
定位好目標,不要做無關的功能,突出符合商業目標的核心功能和產品,足矣!
㈤ 理解編碼者的思想以及它如何塑造我們周圍的世界
幾年前,當記者克萊夫·湯普森開始寫他的新書《編碼和編碼世界》時,他去看了音樂劇《漢密爾頓》。他的外賣?湯普森告訴我,開國元勛基本上都是現代程序員。
「漢密爾頓、麥迪遜和傑斐遜進入了」「發生這種事情的房間',漢密爾頓(出來)寫了20行代碼,基本上說,『華盛頓將成為這個權力中心,將成為國家銀行』。」。「他們推動了他們的軟體更新,徹底改變了這個國家。」
貫穿歷史,湯普森說,「一個專業的班級擁有巨大的力量。班上的人所能做的,突然變得極其重要,極其政治和關鍵。社會急需他們的技能,只有少數人能做出影響巨大的決定。」
1789年,這些人是律師或法學家;2019年,他們是編碼者。「他們制定了規則來決定我們要怎麼做。他解釋說:「如果他們能讓事情變得更容易,我們就會做更多的事情。」。「如果我們想了解當今世界是如何運作的,我們就應該了解一些關於編碼者的東西。」
所以湯普森已經破解了所有這些東西的思維框架—(也是?)-強大,非常人性化。在他的新書《編碼者:建立一個新部落和重塑世界》中,他闡述了編程的歷史,強調了女性所扮演的先鋒角色。他將這一行業的發展追溯到它目前的白人男性化狀態,並揭示了同質化帶來的挑戰。湯普森組織了對各類程序員的采訪,從Facebook和Instagram每天影響數億人的程序員,到那些痴迷於保護數據免受同一家大型科技公司影響的程序員。根據他為史密森、連線和 *** 雜志數十年的報道,他向我們介紹了代碼背後的思想,正在塑造和重新定義我們日常世界的人們。
編碼者:一個新部落的建立和世界
的重塑來自著名的科技作家克萊夫·湯普森(Clive Thompson),在一本詢問他們是誰的書中,這位傑出的人類學家對當今世界上最強大的部落計算機程序員進行了估算,他們是怎麼想的,在他們的世界裡什麼稱得上偉大,什麼應該讓我們停下來。
買程序員中最常見的個性特徵是什麼?什麼是優秀的程序員?」
有一些明顯的特點,你可能期望擅長編碼的人通常擅長邏輯性和系統性的思考,並將大問題分解成小的、可解決的步驟。
但是還有其他一些事情可能會讓你感到驚訝。編碼是難以置信的,令人沮喪的。即使是最微小的錯誤——一個放錯位置的括弧也可能會破壞一些東西,而且計算機通常不會給你任何關於什麼是錯誤的簡單線索。成功編碼的人是那些能夠處理這種史詩般的,不間斷的,日常挫折的人。好的一面是,當他們最終把事情做好時,快樂和喜悅的爆發與他們在生活中所經歷的任何事情都不一樣。他們沉迷於此,這有助於他們度過接下來的幾個小時和幾天的挫折。
編碼在某種程度上是一個非常藝術的企業。你在用文字製造東西,機器,所以它有手藝任何喜歡製造東西或做手藝的人,都會在編碼中找到同樣的樂趣。而編碼員在工作的時候也經常尋求深度、深度的隔離;他們必須如此努力地集中精力,如此多的時間,以至於他們渴望大量的「獨處時間」。不要在他們恍惚的時候打擾他們,否則你會毀掉數小時的精神宮殿建築!從這個意義上說,它們讓我想起了許多詩人或小說家,他們也更喜歡在長時間的沉浸式孤獨中工作。
,但事實是,編碼也是很多很多很多的實踐。如果你願意投入10000小時,幾乎任何人都可以學會合理地做好它。這不是魔術,他們也不是魔術師。他們只是努力工作!」
女性最初在這個行業占據主導地位,但現在只是科技公司程序員的一小部分。他們為什麼和如何被趕出去?」
有很多原因。[早些時候,]你看到很多女性在編碼,因為(招聘)純粹是基於能力和優點,善於邏輯,善於推理。但是,從20世紀60年代末70年代初開始,編碼開始發展出這樣一種理念:編碼者應該更像一個脾氣暴躁內向的人。其中一些人只是許多性格內向、脾氣暴躁的人開始蜂擁而至編寫代碼。
[當時,]公司[意識到]軟體不僅僅是他們工資單上的這一小部分,而是一個巨大的東西,成為他們組織的核心,例如他們如何做決定以及如何收集數據。這些公司說,好吧,我們要有編碼員,他們需要有可能升為經理。那時,沒有人僱傭女性做管理。
所以,你看到一個潛在的非常擅長編碼的女性,但你會說,「對不起,15年後我們不會讓她成為經理」,所以他們甚至都不會麻煩雇她來編碼。即使你有女程序員在工作,當你在一個大項目上崩潰,每個人都在全職工作,女人們也必須回家。從字面上來說,公司規定女性晚上八點以後不能在公司上班,有些州的法律規定如果懷孕,她們就必須離開工作崗位。在大學里,在計算機科學學位的頭20年裡,
,你看到男人和女人的興趣在不斷上升。然後在20世紀80年代中期,發生了一些事情。所有像我這樣的孩子(大部分是男性)都是在編程的過程中長大的,第一台電腦開始進入校園。這在課堂上造成了兩分法。在第一年的課上,感覺就像一群自大的男孩,他們已經知道如何編碼了,還有一群新來的男人,主要是女人,他們以前沒有做過。教授們開始教黑客的孩子們。所以,所有在退學前沒有編碼的女人和男人。這些課程開始變得全是男性,而且基本上也在進行,「你知道,如果他們已經四年沒有黑客攻擊了,我們不應該讓任何人進入這個程序。」
有連鎖反應。這個行業變得非常,非常男性化,它開始期待女性不在場是正常的。它不被視為一個需要解決的問題,在大學和公司中從來沒有受到過挑戰。所以女人們會離開,用她們的才能去做別的事情。的確,在過去的十年裡,學術界和公司開始考慮文化存在的事實,並被鈣化了,需要解決。1982歲的「KDSPE」年輕人在電腦上編程。(丹佛郵遞員)「KDSPs」的結果是「黑客」有點誤入歧途。「KDSPE」「KDSPs」當公眾聽到「黑客」這個詞時,他們通常會想到那些闖入計算機系統竊取信息的人。不過,如果你和真正的程序員在一起,他們稱之為「cracker」。
對程序員來說,「hacker」這個詞的意思就大不相同了,而且更具贊美和樂趣。對他們來說,「黑客」是任何對技術系統如何工作感到好奇的人,他想深入研究,找出問題所在,也許能讓它做一些奇怪和新的事情。他們被好奇心驅使。當他們說「黑客」時,他們通常只是在談論一些有趣的和有用的編碼,製作了一個解決問題的小工具,找出如何使用現有的代碼,並讓它做一些新的和有用的事情。當他們說某件事是一個好的「黑客」時,他們指的是任何解決問題的方法,即使它做得又快又亂:關鍵是,嘿,問題已經解決了
大多數科技界以外的人從流行文化描述中了解編碼者和矽谷。怎麼辦這些陳述漏掉了?他們做對了什麼?」
在傳統上,電影和電視中對編碼器的大多數描述都很糟糕。通常他們會讓他們做一些根本不可能的事情,比如用幾下鍵盤就可以侵入五角大樓或空中交通管制系統。他們幾乎總是把焦點放在「黑客」的陰暗面上,即侵入遠程系統。我明白為什麼,這是一出好戲!」
,但真正的程序員整天做的事情並沒有那麼引人注目。事實上,很多時候他們根本不寫代碼:他們盯著屏幕,試圖找出代碼中的錯誤。電視和大屏幕上的編碼員不斷地打字,手指模糊,代碼從他們身上傾瀉而出。在現實世界中,他們只是坐在那裡想大部分時間。好萊塢從來就不擅長捕捉實際的編碼工作,這是持久的挫敗,因為你試圖使一段破爛的代碼最終工作。
說,最近有一些更好的描述編碼器!《矽谷》(Silicon Valley)是一部喜劇,它模仿了科技界自鳴得意的過激行為,因此他們做了一項有趣的工作,歪曲了科技創始人和風險資本家關於他們的科技將如何「讓世界變得更美好」的所有花言巧語。但他們常常很好地捕捉到編碼者的心理。程序員常常會奇怪地痴迷於優化看似愚蠢的事情,而這正是真實的程序員所想的。他們會在漫長的,史詩般的,與世隔絕的,夜深人靜的jags中盡他們最大的努力,jags也非常逼真。
同時,「Robot先生」很好地展示了真正的黑客行為,如果屏幕上有一段代碼的話,它通常是有效的!「停止並著火」是另一個很好的例子,它展示了一個超級天才的程序員在編寫代碼的同時是多麼的驚人,但是在想像一個普通人想要使用的有用的產品時卻是多麼的糟糕。這是非常現實的。
為什麼你認為程序員沒有預見到像Twitter和Facebook這樣的平台會被壞人操縱
他們很天真,原因有很多。其中一個原因是,他們大多是年輕的白人,很少有過女性或有色人種在網上經常遇到的那種騷擾的個人經歷。所以對他們來說,創造一個工具,讓人們更容易在網上發布信息,在網上互相交談,這會有什麼問題呢?公平地說,他們確實是正確的:社會從他們在Facebook、Twitter、Instagram、Reddit或其他任何地方創建的交流工具中受益匪淺。但由於他們沒有戰爭游戲的方式,惡棍和巨魔可以使用他們的系統來騷擾人們,他們沒有在早期提出許多有用的保護措施,以防止它,甚至發現它正在進行。
所有這些服務的金融模式是「使它免費,快速增長,獲得數百萬用戶,這是一個快速增長的好方法,但也意味著他們會制定演算法來篩選文章,並找到「熱門」的文章進行推廣。反過來,這意味著他們最終大多會提升那些引發熱點情緒的帖子,比如引發黨派憤怒、憤怒或搞笑的帖子。任何一個每天篩選數十億個帖子以尋找快速增長的帖子的系統,毫不奇怪,都會忽略那些枯燥而有條理的帖子,而選擇那些極端的帖子。
,當然,這也使得這些系統很容易玩。當俄羅斯的附屬特工想要干涉2016年的選舉時,他們意識到他們所要做的只是在Facebook上發布一些東西,假裝美國人在政治問題上採取極端和兩極分化的立場,這些東西會在演算法中得到分享、提升和投票。它奏效了。
美國人仍在接受這些大型科技公司在我們的政治中所扮演的角色。這在他們的員工中算什麼呢?」
你在更多的新興市場中看到了更多的道德思考雇員。我聽說過Facebook員工的故事,他們現在有點不好意思承認自己在派對上的工作地點。這是新的;不久以前人們就開始誇耀它了。你還會看到一些迷人的勞工起義。谷歌和微軟最近有各種各樣的事情,從員工 *** 到員工 *** ,當時科技員工認為他們不喜歡他們公司為軍方或(移民執法部門)工作。這也是非常新的,而且可能會增長。如果員工變得不耐煩,科技公司會不顧一切地僱傭和留住技術人員,這是一個致命的弱點。
你的書充滿了精彩的軼事和故事。有沒有一個你認為對科技行業和編碼者最具啟發性的?」
我最喜歡的是Facebook上的「Like」按鈕。發明它的程序員和設計師最初希望它能通過一鍵點擊輕松顯示你喜歡的東西,在平台上釋放積極性。這是一種典型的效率策略,就像程序員看待世界的方式。而且成功了!它確實釋放了大量的積極性。
,但它很快就產生了奇怪的、意想不到的,有時甚至是糟糕的副作用。人們開始沉迷於他們喜歡的東西:為什麼我的照片沒有得到更多的喜歡?我應該換個帖子嗎?我應該說些更極端或更憤怒的話來引起注意嗎?五年後,發明「喜歡」的人對自己創造的東西有了更復雜的想法。他們中的一些人已經完全不再使用社交媒體。
這是一個偉大的故事,因為它展示了即使是一小段代碼也有多麼強大,以及它如何產生連其創建者都無法預見的副作用。
㈥ JAAV程序猿從8K到2W,他是怎麼做到的
有一個做JAVA開發的程序員朋友,2年拿著8K的工資,能力不錯,前段時間突然被挖去做Hybris,薪資薪資從8K漲到2W3。
在IT程序員的世界裡,從來不缺乏跳槽的話題,因為跳槽能漲工資,跳槽成了程序員能漲工資的行業潛規則。
我們今天暫且不說程序員跳槽的那些是與非。今天主要想說說我這個朋友漲薪達到150%的背後有哪些值得我們深思的?要說程序猿跳槽漲薪很正常,但行業一般的漲薪在30%-50%,150%漲幅確實是不太多的,除非你有非常資深的技術和經驗。
他能夠做到,最主要的原因是在對的時間里遇到了對的機會,而他又恰巧抓住了這次機會。
傳統觀念來講,也許學歷的高下在一定程度上影響了程序員的初期就業,但無論如何,對於用人單位來說,對經驗的看重更勝於學歷。在這些工作經驗之外。一些僱主更願意為某些技術支付額外的薪水,我這個朋友恰巧對SAP
Hybris是有了解的,他看到了這是個機會。也許你根本還不知道Hybris是什麼?可是他已經率先進入這個行業了,所以他的薪資會漲的這么快。
你所做的產品,你所擁有的技能,決定了你的價值
由於軟體行業是高風險、高回報的職業,即使是同樣的開發人員,JAVA開發和.NET開發的人薪資不一樣。並且所在的公司,所做的產品由於品牌、市場運作等因素,價格也...天壤之別。你所做的產品,產品所能創造的市值也影響程序員所得到的報酬以及福利待遇。
我們都知道同樣是做軟體的,都是5年經驗的SAP 實施要比JAVA開發的薪資高出幾倍,SAP實施顧問是按天計算,因為SAP的客戶都是高富帥的企業非富即貴,他們所面對的對象和SAP產品所產生的價值決定了SAP產品的實施人員得到的報酬高於JAVA開發人員。
眼界決定高度,技術有深度,更要有廣度
另外相信大多數程序員都有這樣一個觀點:程序員大都是吃「青春飯」的,現在寫程序的人裡面,30歲以上的已經在逐漸減少,而35歲以上的則屈指可數,大部分程序員的黃金歲月是在24~28歲。而到了28、29歲以後,由於軟體行業的飛速發展,很多自己以前學的東西逐漸換代,而由於程序員長期埋頭於工作,想學習嶄新的知識也是力不從心。落後的必然結果就是降薪乃至失業。
老實說,一個資深程序員的薪資在很多人眼裡的確是高不可攀,這個行業也是實實在在的白領階層。但是程序員的艱辛也是非旁人所能想像的,特別要想在競爭中出類拔萃,更需要很大的毅力。程序員高薪的秘訣無非一個:機遇+經驗+靈感。雖然世界人人平等,並且大多數企業都在以高酬吸納優秀人才,但是價值要靠自己創造。
一味的鑽研某一項技術,乃至達到頂峰,這是很OK的。但是,科學的發展也是極快的。所以,在研究深度的同時,不要忘記關注當下流行的技術。
Java開發遍布天下的今天,我的朋友選擇了一個還沒有被關注的新的技術Hybris,這個技術又恰巧是一個被市場正在推崇的爆品。
一個新的職業背後永遠是先入者吃肉,落後者喝湯
老實說我這個朋友轉到Hybris,開始和我說的時候我也是驚訝了一下。當時正是我們森縱教育的Hybris的培訓課程策劃和研發剛剛完成上線,之前只是和他提過在做SAP電商的課程。他說正好有機會而且給予培訓,查了一下相關的介紹和薪資覺得SAP
Hybris是個不錯的機會就跳了。市場永遠是這樣,你先進去佔到了資源,後邊進去的就沒有那麼多的優越性。
現在一個Hybris相當於十年前的SAPFICO一樣,在2015年從概念到落地成為SAP的核心。根據SAP四大咨詢公司招聘Hybris實施顧問調查顯示,2年Hybris顧問的薪資高出3-5年Java開發工程師。
無論是JA VA開發程序員、還是SAP實施顧問,還是其他新興職業都是先入者有肉吃。這種優勢也許你現在還沒有看到,但是在2年、3年以後作為最早進入這個行業的你是就是人們常說的資深,這就是你在30歲,35歲以後發展的優勢。
想拿高薪嗎?那麼就要領先別人成為精英!
之前你不了解Hybris沒有關系,但是現在作為一個關注自己職業的JAVA程序猿你必須了解,因為它是決定你未來的職業高度。
關於SAP Hybris
2013年8月8日 - hybris和SAP在紐約舉行的全球新聞發布會上宣布,SAP收購hybris交易完成
Hybris是全球發展最快的電子商務平台供應商,Hybris作為世界級企業電商平台成為眾多企業的首選,關鍵在於Hybris提供的全渠道的商務解決方案。hybris的全方位渠道軟體建立在單一的平台,基於開放標准,支持無限創新,並且總擁有成本(TCO)更低;其可擴展性和全球部署性使該軟體成為公司電子商務平台的最佳選擇。兩家主要行業分析公司將hybris列為行業領袖、並將其電子商務平台列為市場前三名。
超過500家公司成為hybris的客戶,其中包括全球B2B品牌格雷傑、藍格賽、通用電氣、湯森路透和3M,以及消費者品牌玩具反斗城、麥德龍、普利司通、寶潔、李維斯、尼康、老佛爺、米格羅、聯想、耐克、雀巢和漢莎航空。hybris業務遍布全球15個國家。
Hybris代表著商務的未來!國外不管是百強公司還是新興企業都已上SAP Hybris,中國2014年已經起步,成為SAP中國市場主力產品。
不管國際巨頭企業還是國內高富帥的企業,都已完成SAP
ERP系統的建設,SAP傳統模塊和業務市場逐漸飽和,SAP在新市場上面臨嚴峻挑戰。在此環境下,O2O轉型和全渠道商務已變得迫在眉睫!2015年SAP
Hybris 實現爆發式增長,SAP主要大客戶都選擇了Hybris產品。Hybris成為影響SAP業績增長的「拳頭」產品之一,而SAP
Hybris在中國的市場才剛剛開始。
SAP與hybris實現了所有零售商迫切期待的強大商務功能,該解決方案可為消費者提供跨實體和在線渠道的一站式視圖和始終如一的體驗,該方案完美融合了
Web、移動及其他媒介的B2B和B2C商務功能,包括強大的搜索與營銷、主數據管理(MDM)/PIM、訂單管理和 Web
內容管理等功能,採用以服務為導向、符合多種標準的現代化單一架構技術構建,並提供多種部署和定價選擇。
Hybris市場的火爆必然帶動Hybris相關職業和人才需求的遞增式增長,如Hybris實施顧問、Hybris開發人員、Hybris運維等相關職業成為SAP新的職業需求。根據國內最大招聘網站前程無憂以及互聯網招聘公司拉勾網調查顯示,SAP
Hybris開發實施工程師崗位近半年職位數量增長2-3倍,Hybris電商開發人才緊俏。
Java是轉SAP Hybris的最佳的任選,因為Hybris的開發與JAVA開發有很多的相關性,而Hybris又為JAVA開發者提供了開放性和靈活性,JAVA開發人員很容易入手。
㈦ 誰能告訴我:計算機程序設計語言發展史和對程序設計語言未來的看法
【摘要】
本文以自然辯證的觀點探討了計算機語言的發展歷程,運用自然辯證法的基本理論、基本方法,系統分析了計算機語言的發展歷史、現狀和未來。並對其的發展趨勢和未來模式做了探索性研究和預測,同時以哲學的觀點闡述其發展的因果關系,揭示其事物發展的共性問題;最後文章介紹了在計算機語言發展歷程中做出傑出貢獻的科學家,以其在計算機事業中的突出表現來折射出人類智慧的偉大,以其不平凡的一生來激勵和指導我們在計算機語言的發展中向著正確的方向前進。
【關鍵字】
自然辯證法 計算機語言 計算機技術 編程語言 網際網路 面向對象
正文
一九九三年美國的柯林頓政府提出了「信息高速公路」計劃,從而在這十多年間在全球范圍內引發了一場信息風暴,信息技術幾乎觸及了現代生活的方方面面,毫不誇張的說沒有了信息技術,現代文明的生活將無從談起;作為信息技術中最重要的部分,計算機技術無疑是其發展的核心問題,而我們知道計算機只是一台機器,它只能按照計算機語言編好的程序執行,那麼正確認識計算機語言的過去和未來,就是關繫到計算機發展的重中之重;以自然辯證法的觀點認識和分析計算機語言的發展歷程,將有助於更加全面地推動計算機技術的發展,有助於更加准確地掌握計算機語言發展趨勢。
一、科學認識大門的鑰匙--當代自然辯證法
自然辯證法,是馬克思主義對於自然界和科學技術發展的一般規律以及人類認識自然改造自然的一般方法的科學,是辯證唯物主義的自然觀、科學技術觀、科學技術方法論。它主要研究自然界發展的總規律,人與自然相互作用的規律,科學技術發展的一般規律,科學技術研究的方法。
馬克思、恩格斯全面地、系統地概括了他們所處時代的科學技術成功,批判吸取了前人的合理成分,系統地論述了辯證唯物主義自然觀、自然科學發展過程及其規律性,以及科學認識方法的辯證法,以恩格斯的光輝著作《自然辯證法》為標志,創立了自然辯證法繼續發展的廣闊道路。
自然辯證法是馬克思主義哲學的一個重要組成部分。在辯證唯物主義哲學體系中,自然辯證法與歷史唯物論相並列。它集中研究自然界和科學技術的辯證法,是唯物主義在自然界和科學技術領域中的應用,它的原理和方法主要適用於自然領域和科學技術領域。
學習和運用自然辯證法將有助於我們搞清科學和哲學的關系,從而更加清楚地認識科學的本質和發展規律,更加全面的觀察思考問題,只有加深了認識,我們才能更好地發揮主觀能動性,迎接新的科學技術的挑戰。下面我將以自然辯證法的觀點來分析計算機語言的發展歷程。
二、計算機語言的發展歷程和發展趨勢
計算機語言的發展是一個不斷演化的過程,其根本的推動力就是抽象機制更高的要求,以及對程序設計思想的更好的支持。具體的說,就是把機器能夠理解的語言提升到也能夠很好的模仿人類思考問題的形式。計算機語言的演化從最開始的機器語言到匯編語言到各種結構化高級語言,最後到支持面向對象技術的面向對象語言。
1、計算機語言的發展歷史:二十世紀四十年代當計算機剛剛問世的時候,程序員必須手動控制計算機。當時的計算機十分昂貴,唯一想到利用程序設計語言來解決問題的人是德國工程師楚澤 (konrad zuse)。幾十年後,計算機的價格大幅度下跌,而計算機程序也越來越復雜。也就是說,開發時間已經遠比運行時間來得寶貴。於是,新的集成、可視的開發環境越來越流行。它們減少了所付出的時間、金錢(以及腦細胞)。只要輕敲幾個鍵,一整段代碼就可以使用了。這也得益於可以重用的程序代碼庫。隨著c, pascal,fortran,等結構化高級語言的誕生,使程序員可以離開機器層次,在更抽象的層次上表達意圖。由此誕生的三種重要控制結構,以及一些基本數據類型都能夠很好的開始讓程序員以接近問題本質的方式去思考和描述問題。隨著程序規模的不斷擴大,在60年代末期出現了軟體危機,在當時的程序設計模型中都無法克服錯誤隨著代碼的擴大而級數般的擴大,以至到了無法控制的地步,這個時候就出現了一種新的思考程序設計方式和程序設計模型-----面向對象程序設計,由此也誕生了一批支持此技術的程序設計語言,比如eiffel,c++,java,這些語言都以新的觀點去看待問題,即問題就是由各種不同屬性的對象以及對象之間的消息傳遞構成。面向對象語言由此必須支持新的程序設計技術,例如:數據隱藏,數據抽象,用戶定義類型,繼承,多態等等。
2、計算機語言的發展現狀:目前通用的編程語言有兩種形式:匯編語言和高級語言。
匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。
高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。
高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的vb、vc、foxpro、delphi等,這些語言的語法、命令格式都各不相同。
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類: 解釋類和編譯類。
3、計算機語言的發展趨勢:面向對象程序設計以及數據抽象在現代程序設計思想中佔有很重要的地位,未來語言的發展將不在是一種單純的語言標准,將會以一種完全面向對象,更易表達現實世界,更易為人編寫,其使用將不再只是專業的編程人員,人們完全可以用訂制真實生活中一項工作流程的簡單方式來完成編程。下面是一張計算機語言發展圖表,從中不難得出計算機語言發展的特性:
² 簡單性
提供最基本的方法來完成指定的任務,只需理解一些基本的概念,就可以用它編寫出適合於各種情況的應用程序
² 面向對象
提供簡單的類機制以及動態的介面模型。對象中封裝狀態變數以及相應的方法,實現了模塊化和信息隱藏;提供了一類對象的原型,並且通過繼承機制,子類可以使用父類所提供的方法,實現了代碼的復用
² 安全性
用於網路、分布環境下有安全機制保證。
² 平台無關性
與平台無關的特性使程序可以方便地被移植到網路上的不同機器、不同平台。
三、面向未來的漢語程序設計語言:
從計算機誕生至今,計算機自硬體到軟體都是以印歐語為母語的人發明的。所以其本身就帶有印歐語的語言特徵,在硬體上cpu、i/o、存儲器的基礎結構都體現了印歐語思維狀態的"焦點視角",精確定義,分工明確等特點。計算機語言也遵照硬體的條件,使用分析式的結構方法,嚴格分類、專有專用,並在其發展脈絡中如同他們的語言-常用字量和歷史積累詞庫量極度膨脹。實際上,計算機硬體的發展越來越強調整體功能,計算機語言的問題日益突出。為解決這一矛盾,自六十年代以來相繼有500多種計算機語言出現,歷經五代,至今仍在變化不已。
漢語沒有嚴格的語法框架,字詞可以自由組合、突出功能的整體性語言。在計算機語言問題成為發展瓶頸的今天,漢語言進入計算機程序設計語言行列,已經成為歷史的必然。
1、 發展漢語程序設計語言的理由:
1)計算機語言問題解決,只能從人類語言中尋找解決方案;
2)計算機語言的現存問題是形式狀態與功能需求的矛盾;
3)計算機硬體的發展已為整體性語言-漢語進入計算機程序設計語言提供了條件
2、 漢語程序設計語言的技術特點:
1)漢文字的常用字高度集中,生命力極強,能靈活組合,簡明准確地表達日新月異的詞彙,這些優點是拼音文字無法企及的。
2)漢語言的語法簡易靈活,語詞單位大小和性質往往無一定規,可隨上下語境和邏輯需要自由運用。漢語言的思維整體性強,功能特徵突出。
3)漢語程序設計語言的發明者採用核心詞庫與無限寄存器相結合的方法,實現了漢語言的詞素自由組合;將編譯器與解釋器合一,使漢語程序設計語言既能指令又能編程;以獨特的虛擬機結構設計,將數據流與意識流分開,達到漢語程序設計語言與漢語描述完全一致,通用自如。
具有漢語言特性的漢語程序設計語言的出現,打破了漢語言不具備與計算機結合的條件而不能完成機器編碼的神話。還為計算機科學與現代語言學研究提出了一條嶄新的路徑,它從計算機語言的角度,從嚴格的機械活動及周密的演算法上,向世人證實漢語的特殊結構狀態,及其特殊的功能。
四、計算機語言之父——尼蓋德
尼蓋德幫助網際網路奠下了基礎,為計算機業做出了巨大貢獻。
尼蓋德是奧斯陸大學的教授,因為發展了simula編程語言,為ms-dos和網際網路打下了基礎而享譽國際。克里斯汀·尼蓋德於1926年在奧斯陸出生,1956年畢業於奧斯陸大學並取得數學碩士學位,此後致力於計算機計算與編程研究。
1961年~1967年,尼蓋德在挪威計算機中心工作,參與開發了面向對象的編程語言。因為表現出色,2001年,尼蓋德和同事奧爾·約安·達爾獲得了2001年a.m.圖靈機獎及其它多個獎項。當時為尼蓋德頒獎的計算機協會認為他們的工作為java,c++等編程語言在個人電腦和家庭娛樂裝置的廣泛應用掃清了道路,「他們的工作使軟體系統的設計和編程發生了基本改變,可循環使用的、可靠的、可升級的軟體也因此得以面世。」
尼蓋德因其卓越的貢獻,而被譽為「計算機語言之父」,其對計算機語言發展趨勢的掌握和認識,以及投身於計算機語言事業發展的精神都將激勵我們向著計算機語言無比燦爛的明天前進。
五、結束語
用科學的邏輯思維方法認識事物才會清楚的了解其過去、現在和未來,計算機語言的發展同樣遵循著科學技術發展的一般規律,以自然辯證法的觀點來分析計算機語言,有助於我們更加深入地認識計算機語言發展的歷史、現狀和趨勢,有了自然辯證法這把開啟科學認識大門的鑰匙,我們將回首過去、把握現在、放眼未來,正確地選擇計算機語言發展的方向,更好的學習、利用和發展計算機語言。
六、致謝
㈧ 程序員的悲哀是什麼
「碼農」這個詞,不管是不是從事IT工作的人,都略有耳聞。這個詞的誕生無從考究,不知是程序員的自嘲,還是外行帶有顏色的嘲諷。總之,對於這個詞,我是既無奈又無力反駁。確實,工作中,我們大多數底層程序員每日做的工作相當於流水線的作業。
大部分程序員是悲哀的,不是情商、衣著、自黑之類,悲哀的是沒有決策權。項目做成什麼樣,那是領導和產品經理的事;用什麼技術框架,那是架構師的事;資料庫的設計,業務那是項目經理和產品的事;而作為一個普普通通的底層碼農,我們只需要拿到需求,然後等設計給圖子,流水化的寫出實現代碼。我們只是一個執行者,別人叫你幹啥就幹啥。最後項目做壞了,裁員的是誰?程序員。
這就是一個普普通通的「碼農」。讀書那會,我的老師跟我說,「如果從業十年,你依舊在寫最基礎的代碼,做一個碼農,那麼就不要做程序員了,轉行吧」。現實中,每個公司存在最多的就是這些「碼農」,那種掌握核心技術,產於項目設計,技術架構的畢竟是少數,大多數程序員都處於被動接受,按需求完成代碼的任務。
做程序員越久,越是感到:我們就是新時代的手工藝者。只有少數的人,從手工藝者,變成了發明手工藝製作機器的人,少部分人變成了設計手工藝品的人,少部分人變成了車間主任罷了。
「碼農」這個詞有著深深地悲哀。
見過太多剛入行的菜鳥,像極了曾經那個滿懷激情,夢想的自己。當第一次接觸Java的面向對象思想時,那種興奮,彷彿能用Java描述整個世界,彷彿自己就是上帝一般,在現實世界,創造出另一個虛擬世界。而現實中,一兩年的流水化作業,沖淡了一切。
對於產品,彷彿是自己的孩子,從無到有,一點一滴,看著一個網站,產品,在自己的手下,滿滿長大,那種滿足感,自豪感,油然而生,但是最後你希望它變得更優秀時,卻發現它不受你控制,彷彿養了好幾年的兒子,被人教唆去做壞事,你不能說任何話,因為撫養費不是你出的。
決定你有沒有決策權的是你的縱向位置,也就是在本行業金字塔的位置,出類拔萃者說話就響。過慣了咸魚生活,但誰又甘心做一個「碼農」,我們希望發出自己的聲音,成為那個有權利選擇的人,這一切需要提高自己的技術,能力作為支持。在國外,程序員被稱為程序設計師,而國內「碼農」,區別可想而知。
㈨ 程序員的未來發展
社會對程序員的定位是滿足技術需求,程序員自身所受的教育和積累的經驗也使自主前程意識局限於技術路線。實際上,我們所看到的在技術方面有建樹的前輩多是綜合型的人才,單純局限於技術思維的多有行為局限,也難看出自身的幸福感。
畢業幾年了,一直都是從事程序員的工作,從以前只管努力學技術,到現在開始慢慢地思考以後的職業規劃問題了。
十年三階段
工程師的職業發展,前十年是個非常重要的階段。從職業規劃的角度來講,建議把這十年分為三個階段來設定目標:
第一階段(前三年):打基礎。立足培養技術能力和軟技能。第二階段(四年):從個人能力向團隊組織能力轉變。在溝通能力、協作能力和領導力上發力。第三階段(四年):不斷強化領導力(技術領導力和管理領導力)。
在我看來,一個工程師的養成可以分為四個階段:
新人期
硬技能:理論轉化實踐軟素質:養成基本的職業觀
成熟期
硬技能:積累業務知識,積累技術知識軟素質:固化職業觀
發展期
硬技能:明確細化的職業發展方向,深入研究「可能技術, 可能管理, 可能兩者兼具」軟素質:逐步總結並形成自己的方法論
事業期
硬技能:釋放自己,創造價值軟素質:輸出方法論,影響其他人
看到身邊一些「大齡」程序員的出路,主要是這三條:做管理,自己創業和繼續寫程序。
做管理
做管理是絕大多數人的選擇。原因嘛,當下中國職場的大環境如此:招聘單位一般不要年齡大的程序員,再加上你年齡大些後,實戰經驗豐富,不讓你帶人讓誰去帶呢?「大齡」程序員有著多年的開發項目經驗,這些實戰經驗能一些崗位起到很重要的作用。比如:CTO,項目經理、產品經理。
相信在多年的工作中你的技術是無話可說的,但是管理的方式、為人處事的方法、稍穩妥的工作作風以及對於企業長遠的眼光可能是你們真正需要加強的。
創業
自己創業的,這種人大多數是在工作中到了一定的崗位,有了一定的資本,綜合能力提升到一定的水平,但跟搞管理一樣,你還缺許多技術之外的東西
創業者要做的產品不是給客戶的商品,而是企業本身。把企業看做一個系統,運轉良好的系統,就是創業者要開發的產品,這個理念,對於運作企業是非常重要的,也從根本上回答了如何做好企業的問題。
如果單純是因為自己工作不開心,對老闆不滿而憤然離職創業的,這種基本成功概率為零。
如果想繼續抱著鍵盤安安靜靜地寫程序,估計要在某個技術方向深度學習。比如做游戲就一直做游戲,做網路就一直做網路,其它方向的工作基本不在考慮范圍內,這樣才能在一個方向上積累下來;否則各個領域都會一點皮毛,但又沒有精通的,企業幾乎不需要這種人。
程序員找出路還是要盡量提前進行職業規劃和准備,千萬不要說什麼:「走一步,算一步」的話。在這個一睜眼就是競爭的時代,你可以放鬆休息,但別人會繼續前進,不會等你。