Ⅰ 程序員未來前景如何大齡程序員出路在哪裡
其實程序員什麼35歲就不行了的說法是個偽命題,是人為的強加的致幻劑。雖然軟體行業有其特殊性,但是也有其普遍性。其他行業35歲那才真正進入事業快車道,軟體行業我認為也差不多。
軟體行業不光是寫代碼,積累到35歲,如果還能寫代碼那一定是經驗豐富,代碼水平高,即便繼續寫代碼那也比一般的人好,當然排除那些不思進取不學習的人。
最差帶幾個人做個項目經理做項目就比年輕仔強很多。不但可以利用自己的經驗還可以寫關鍵代碼。年齡其實不是問題。
那問題是什麼給大家的印象是35歲程序員就沒得混了?其實現在很多程序員其實是碼農,大家說IT行業是一個知識更新非常快的行業,其實也不盡然 ,更新的是表面,其本質一直沒變,一個碼農一般都學的是皮毛,就懂一點什麼框架 的編程,缺乏學習能力,不懂軟體最基本的原理,學校學的那點一旦過時就什麼也不剩了,那面臨的就是淘汰。
如果是一個了解軟體本質,學習能力強的人,語言只是形式,對於一個項目,覺得什麼語言合適就用什麼語言,你懂一門語言,另外一門語言要不了一個星期就可以編程了,關鍵還是基礎,是原理,是思想和經驗。
所以程序員們,不要被別人的致幻劑迷糊了,只要你肯學能進步,喜歡軟體開發,年齡一定不是問題,只能越來越吃香。
個人觀點,不喜勿噴!也希望大家能夠說明自己的觀點,大家一起學習,一起進步,營造良好的學習氣氛!
大家都知道程序員也分為做什麼開發的程序員,比如市面上最流行的Java、C語言、C++、python、PHP等等開發程序員,未來的發展是不一樣的。
其實,我覺得未來發展前景的話,要找天花板較高的語言來作為基礎學習,慢慢的把自己的架構思維給建立起來。
等你擁有自己的架構思維之後,其實語言就是一種工具而已,所以一定要清晰規劃自己該學習什麼語言,該怎麼樣來學,我在這里推薦Java語言,因為Java語言的學習就能夠幫你初期建立這種思維方式,還有Java語言的獨特性,證明了它的優越性!也證明了它的天花板比其它語言要高,當然上手難度也比較高,自己要有一個清晰的認識,
關於大齡程序員出路,我這里得多說一嘴!
一提到大齡程序員,大家第一時間就會想到,35歲中年危機。
不可否定,35歲這個詞確實很扎心,也是許多程序員的恐懼所在,但是,請大家不要驚慌,要給自己打一針強心劑。
30而立相信大家都聽說過吧?但是也不然,也看個人的機遇和努力!程序員也是一樣!
這里就說到了職業規劃的重要性,從22歲畢業實習再到30歲這八年時間,處於一段技術磨合和提升期,也就是技術的沉澱,沉澱到了一定的時間之後,就要考慮管理經驗的提升,隨著年齡的增長,身體上、思想上、精神上都會出現惰性,當然也跟自己的運動有關系,要加強自己對身體的鍛煉,每年做體檢!
30歲之後,有的人考慮單飛,自己找合夥人創業,自己開公司求發展;有的人繼續按部就班,沉浸在996的世界之中;有的人不斷地提升自己的技術能力和架構思維,在大廠中繼續深造,讓自己變得更有價值!
不知道你們是屬於哪種,但是,最重要的還是個人的思維!希望自己能夠好好考慮一下,從自己下手,徹底的改變自己,不然淘汰是遲早的事兒。
三點:改變自己的思維;加強自己鍛煉;做好職業規劃!
以上個人觀點,不喜勿噴!歡迎大家一起討論。
本人作為程序員,曾經也為這個問題困擾著。程序員在35歲就會面臨各種問題,身邊也有這樣的例子,上一家公司有一個同事,40歲了還在寫代碼,他的工資不高。後來項目預算超標了,他也就成為了被裁員的對象。那是我第一次感覺到了年齡越大而帶來的危機。
但是話有說回來了,40歲了還在寫代碼。只能說明了他對自己沒有明確的職業規劃或者個人的不思進取造成的。IT行業有他的特殊性,第一個特殊性就是知識更新很快,第二個就是很注重職業規劃。
所以要想不被淘汰,要麼積極學習沒擁有很厲害的技術,成為一個領域的技術專家。要麼走管理路線,在平時上班的時候就要注重這方面的培養,首先要在工作中鍛煉,還有考取一些專業的證書來給自己增加競爭力。
當然也有的選擇自己創業,這是最好的結果。所以,在當下最重要的是怎麼給自己規劃。多考慮這方面的問題,要是想通了也就沒有那麼的糾結了。
我是個IT新人,程序員的未來前景毫無疑問是不可小看的。世界逐步進入5G時代,對於程序員來說即是挑戰也是機遇,5G時代到來必將會帶了新的技術升級,也必將淘汰舊的技術,所以說對於程序員即是挑戰也是機遇,只有不斷地學習你才能把我好這一機遇,雷軍說:「站在風口上,豬都能飛」。但首先你得是有準備的豬 。
對於大齡程序員,我是這樣子想的,等我年齡大了,不可能一直處在代碼一線,要麼轉管理崗位,如:技術主管,產品經理,項目經理,有能力的做個技術總監。
要麼轉行,我朋友常常給我開玩笑說,等年齡大了,我們去送外賣吧!自由自在,月入過萬
要麼拿出積累多年資金、人脈開始創業
30+程序員一枚,剛好可以回答這個問題。
先簡要說下我對這兩個問題的答案:
下面,我們就來一一解釋。
程序員是有前(錢)途的職業
首先是 金錢 方面。在所有行業裡面,it行業是比較有前(錢)途的職業,我想這句話可能極少有人反駁。當程序員相對來說能掙錢,即使這些錢是需要加班加點掙來的,但是總歸來說提供了普通人一個掙相對高薪的途徑。即使在北上廣深,當程序員也相對其它行業更容易買車買房,站穩腳跟。另外,每年無數的大專本科生上培訓班,當程序員也很能說明情況。
其次是 行業發展 方面。程序員從事的是it行業的工作,是一門用技術改變生活的行業,it技術已經應用於方方面面,這也無形中給程序員提供了更廣闊的用武之地。
關於大齡程序員的問題,其實我覺得更應該說是 一個普通人中年危機的問題 。因為年齡大了,薪資相對新人更高,加班能力更差是大部分行業都會遇到的問題,只是這個問題在it行業放的更大了。網路當中很多所謂的35歲問題,一部分是來自於程序員的自嘲,一部分情況其實是因為部分大齡程序員拿慣了高工資,沒有做人生規劃,技術沒有提升,然後又遇到了中年危機後無所適從罷了。可能有人會說老師,醫生等行業會隨著年齡增加而成長什麼的,這個確實有其相關性。但是程序員畢業就拿高薪,其它行業可能要積累很多年(這里說的是平均,個例不探討)。
至於出路,我認為出路有很多:
當然,我這里說的大齡程序員指的是正常的程序員,不是那種天天混混日子,突然一裁員發現自己啥也不會的人,我覺得這種人基本上是很難有出路的。
關注令狐一沖,關注區塊鏈和IT技術!
在民企,大齡程序員確實不好混了。華為裁掉35歲以上的普通員工,就說明這些大公司只需要年輕人,加班苦幹。年紀大了,拖家帶口的,加不動班了,就勸退。這種情況說明這種工作都是些按部就班的,沒什麼創造性的工作,不需要很多經驗。
外企的情況會好一些,50多歲的頭發花白的程序員依然在工作,他們看重的是工作的積累,經驗。公司也把這些人當做公司的財富。國內因為抄襲太嚴重,不太注重知識產權,導致程序員的地位並不高。
大齡程序員要在工作之餘,發展一些副業,多學些技能,考一些證書,做一些理財投資等等。保證自己萬一被裁員,不至於沒有收入陷入焦慮。
這問題問的,大齡農民工出路在哪兒?
所以了,人口總量下滑,人力資源不足,大齡程序員總是有人要的,只不過不同水平的去向、待遇不同罷了,這跟年齡、行業沒關系,哪個年齡哪個行業都一樣有分化。
首先,程序員這個職業不再是個香餑餑,這一點各位程序員必須要擺正心態!隨著人工智慧在編程方面的運用以及程序員數量的大規模上漲,未來大多數程序員的待遇會跟 社會 平均工資看齊,短時間依然會有優勢,但隨著時間推移,這種優勢必然轉為劣勢。為何?供需決定價格,以前供不應求當然價格高,未來供大於求甚至每個人都會編程,自然沒啥議價空間。而那些沒人願意乾的臟活累活自然成為高收入崗位。
其次,許多程序員會成為領導或者老闆,畢竟 社會 需求在,有大需求也有小需求,對用戶需求敏感的人自然能夠抓住機會自己創業。
再有,某些高收入程序員會跨界進入別的行業,畢竟有了資本有了 社會 經驗,很多事情都是相通的。
最後,大多數沖不上去也沒錢或沒想跨界的,繼續待在公司里搬磚,雖然加班比不上年輕人,但畢竟經驗豐富,碼代碼的速度和質量是有的,只不過工資持平獎金下降不忍也得忍啊,畢竟為了生活,別的很多職業人家的工資本就是好多年沒變化,程序員也不會例外,之前例外是因為供不應求。
有人說程序員是腦力活,跟農民工不能比,六十歲農民工還能幹活,六十歲程序員腦子怎麼跟得上?作為過來人,筆者可以向各位保證:越大的團隊,里邊需要動腦子的人越少,大多數大廠的程序員混到最後都是乾的力氣活,根本不需要腦子,這就是熟練度。至於這是好是壞,仁者見仁智者見智。
看到這個問題,作為一個資深的程序員和管理者,我認為我有資格來回答這些問題。無論你是因為愛好編程走上程序員這條路,還是因為看見程序員的高薪加入這個行業。既然有這個疑問,就說明你已經有了職業焦慮:程序員真的能一直做下去嗎?是不是35歲就面臨著中年危機?單靠寫代碼能走向管理者崗位嗎?大齡程序員的出路在哪裡?我結合我自己做10多年程序員的經驗(擔任過高級工程師、數據架構師、數據負責人和數據總監等崗位),講講大家都十分感情去的問題。
一 程序員能幹到退休為止嗎? 1.1 從初級程序員開始,不要錯過的發展路徑首先,程序員們關心的都是自己在這個行業能幹多久,而不是在某個公司待多久。尤其是現在行業內卷非常嚴重,幾乎不可能讓你在一個公司工作一輩子;因為,行業變數很大,說不定哪天就裁員了,而且你正好在裁員名單中。針對這種情況,我的建議是:
在自己30歲之前,一定要不斷地豐富自己的知識庫,讓自己的能力保持在行業的頭部。
① 初級->中級
這個階段主要是學習,在很少依賴其他人幫助的前提下,能夠保質保量的完成手上的工作。在這個時期,自己多找幾個師父,由資深的程序員對你做技術路線的指導。這樣即可以少走彎路,又可以快速地學習和掌握前沿知識。
② 中級->高級
這個階段主要是從公司現有的技術架構中,提煉出高難度、有價值的內容。並能夠用批判的眼光看待這些事,總結出哪些做得好,哪些做得差。如果是你來做,你會怎麼做?
可以從領導對你的信任角度上,看出來你在這個階段成長的好壞,如果讓領導和團隊成員對你非常信任,說明你這個階段是成功的,可以方向的走向第三個階段。
③ 高級->資深
這個階段至關重要,涉及到你是走專家路線還是走管理路線,這是一個轉折期。如果自己擅長溝通和樂意交流,在這個階段多觀察你的直屬領導是怎麼安排工作的,他的工作方式有哪些缺陷,如果是你你會怎麼做,需要不斷地總結歸納管理方式方法;除此之外,在技術方面,必須要學會復盤,並且願意復盤,而且是願意看別人復盤。復盤是對程序員幫助最大的環節,一定不要認為復盤是浪費時間。
如果你想走專家路線,那麼就要保持頭腦的清醒:你做的內容是純技術還是業務+技術。如果是純技術,那麼走專家路線是沒有問題的。否則,千萬不要走專家路線。
1.2 消除常見的誤解,包括【只能吃青春飯】一定要消除青春飯的這種不良的意識,為什麼呢?因為管理崗也是技術出身。從程序員編程管理人員,也能夠年薪百萬。如果你不是科班出身,怎麼能做好一個管理者呢?一個管理者需要的技能很多,需求分析、目標設定、資源協調、團隊協調和賦能培訓。管理者不是想想就能做到的,需要既懂技術又懂業務,同時還要懂管理,更要會報告,會表功,甚至會做客戶的公關,智商情商雙雙在線。
如果你練就了這一身本事,還能是青春飯嗎?是不是感覺到自己有很多內容要學習,要修煉。
二 我適合做管理還是技術 2.1 並不是說管理者一定會脫離技術作為程序員,其實人到中年,就要面臨著轉型的挑戰。如果一直寫代碼,你和20歲出頭的小夥子去競爭,就會累得頭破血流。人無遠慮必有近憂,就職業發展規劃來說,應該轉型為架構專家、演算法專家,研發主管或者項目經理。
管理者不是必須要懂技術,管理本身就是一門學問,職業經理人就是依靠管理吃飯的。管理的真正核心是利用資源,知人善任,自己不懂技術可以找一個懂技術的人。經常看見公司的高管在變動,他們在技術、專業方面不一定有多精通,但是具備了經營管理的能力,一樣可以在新的領域取得成績。
2.2 不要做自己不擅長的事,不盲目追求高薪追求高工資,帶來的是錢,也是一種成就感。但是一味想通過跳槽來升職加薪,是最不可取的。可以負責任地講,在你的職業生涯的頭5年,這種做法影響不大。但是在5年以後,你會發現自己沒有沉澱和積累,因為換工作也是非常耗精力的。
不要看見別人做了管理者,自己就認為可以做。自己一定要認清楚自己的能力范圍,在能力達到時,並且自己願意轉型時,值得一搏。
三 除了寫代碼,你還有很多事情要做 3.1 學會互聯網思維,多渠道發展,多種經營有人會說,我現在已經35+歲了,我還是普普通通的程序員,沒有一技之長,也不懂管理。我該怎麼辦呢?互聯網時代給了我們很多創業的機會,比如可以做自媒體,直播帶貨,自己開一個小型的培訓公司。
最好是在自己年輕的時候,就考慮過有一天會被IT行業淘汰,那我應該去做什麼呢?要著手准備什麼呢?
3.2 掌握跨界知識,成為跨界人才我還是那句話,自己行業內的東西對於自己來說,是最簡單的。平時多和其他行業的人交往,多聽、多學,有可能他的領域就是你發光發熱的地方。程序員有著執著、冷靜、聰明的頭腦,做任何事情都不會比其他人差,主要是選好方向。
優秀的程序員不論年齡大小,前景都非常好!巨大的市場需求決定了優秀程序員的緊缺性,在數字化時代,已經沒有哪個行業會離開軟體的支撐,這個趨勢在可預見的未來不會改變。
一般來說,人會隨著年齡的增長,工作的時候精力會跟不上,但從另一個角度講,年齡大了,經驗就會更豐富,尤其對於像程序員這種知識型工種,只要他肯學習,跟上技術的進步和變化,他就不會落後,就會繼續有用武之地。
軟體技術的變化也是非常大的,新的框架、新的開發環境、新的編程語言不斷出現,程序員也要注重自身的學習和修養,為斷適應互聯網+時代的技術發展,只有這樣,程序員才會永葆青春。
當然如果已經功成名就,賬務自由,選擇別的職業也挺好,人各有志,看個人發展和興趣愛好!
Ⅱ 關於資料庫程序員,我應該具備哪些技能
DBA, 通俗點說就是資料庫管理員, 所以, 資料庫的知識肯定是必不可少的:
對資料庫的操作而言, 無外乎SQL語言, 因此, SQL語言是基礎中的基礎
DBA一方面要根據需求在資料庫中實現, 另一方面要指導非資料庫專業人士在資料庫中完成他們想實現的東西, 如果實現不了, 或者非專業人士能實現但你不能實現, 那可是丟人到家.
所以, 對於SQL語言來說, DDL和DML都要掌握的, 而且不能僅限於一般的掌握程度, 不能說公司的業務不需要臨時表, 你就連臨時表怎麼用, 有幾種, 有什麼區別都搞不懂.
能實現需求, 只能說明你是對資料庫有些了解了, 對於同一種需求, 你能列出多種方法, 並能評判其中的優劣(不是根據行規或者大家的習慣), 這樣才有些DBA的架勢. 這就需要你了解資料庫架構方面的知識(架子搭不好, 房子再漂亮也沒有用), 知道SQL的一些底層知識, 比較, 大家都知道索引對提高查詢性能十分重要, 但過多的索引也會對數據處理造成負擔, 如果你不了解索引的一些原理及sql使用索引的原理, 你如何能合理地建立索引呢?
能夠有效地實現需求了, 接下來就該維護了. 再好地資料庫架構, 也要經常維護和保養, 比如, 原來很有效的索引, 因為索引碎片多了, 讀取性能就差了, 因為業務的變化, 有的索引該刪除了, 重要的數據, 是否在不該丟的時候絕對不會丟了, 敏感數據, 是否會被不該訪問的人看到了. 這一系列的東西, 除了要調查/分析/並制訂出一套完整的方案外, 還需要相關的知識來實施這套方案,
日常維護, 問題少不了會遇到, 這些問題除了SQL的問題外, 還有是跟系統或者網路相關的, 甚至是程
序中出現的問題需要調試, 所以操作系統+網路+程序設計語言, 多少得懂點
為了管好資料庫, 特別是管理好多台伺服器, 多少你還得寫些工具來輔助你完成任務.
從上面來說, DBA需要的技能大致是:
@1. 資料庫知識(熟練級別)
SQL語言(DML, DDL, 備份/恢復/管理), 資料庫結構知識, 資料庫運作原理
@2. 熟練至少一種資料庫, 了解其他資料庫(有一定應用能力)
很少有不與其他類型資料庫交互的資料庫, 如果你只熟練一種資料庫, 當需要與其他資料庫交互時, 你住往會無從下手
@3. 綜合能力(有一定的應用能力)
程序設計能力, 操作系統, 網路, 安全
Ⅲ 如何成為優秀的程序員
保持健康
編程之外的愛好
持續學習
正確應對犯錯
不要囿於角色
展示你的創意
刻意練習手速
首先要說的當然是健康,脫離了這個本錢,一切都無從談起。
久坐、不運動、睡眠不足、不注意及時補充水分、長期的伏案工作等都會對健康造成很大的影響。
研究表明,長期保持同一姿勢(不論坐著還是站著)對身體都有不同程度的害處。這幾年很流行的「站立式辦公」也是一樣,如果你白天站立時間過久,會對膝關節造成較大的壓力,同樣會損害健康。比較推薦的方式是,寫30-40分鍾代碼就起來走一走,喝杯水,遠眺一會,跟同事聊聊天。
我知道,作為程序員我也常遇到那種寫代碼寫High了連廁所也不想去的時候。不過為了長遠的健康,還是要養成良好的習慣。
戒除不良習慣
除了長時間保持同一姿勢之外,許多程序員還有各種不良習慣。比如:
吸煙
喝酒
嗜糖(碳酸飲料,其他高糖飲料)
一些建議
有規律的做一些運動可以緩解頸椎、腰椎的不適,可以加快新陳代謝的速度,消耗多餘的、會沉積下來的能量。比如比較容易接觸到、也容易上手的運動:
瑜伽/普拉提
乒乓球
跳繩
培養一個編程之外的愛好
如果讓不同的人對程序員打標簽並排序,宅一定會排在前三。在任何的聚會上,程序員總是很容易被識別出來的:聰明、戴眼鏡、話不多、略顯悶騷、聊天容易冷場等等。也難怪,長期鑽研技術,沉浸在非黑即白的二進制世界,愛刨根問底,這樣很容易把天聊死。
我建議新手程序員可以找一個編程之外的愛好,一來可以拓展自己的社交圈,周末可以有個不一樣的過法(而不是宅在家裡寫代碼);二來可以幫助你成為更好的程序員。
一些建議
學習一項與編程無關的技能,比如:
樂器(如吉他,架子鼓)
繪畫(素描,水粉,水彩等)或者書法
製作美食
某一項武術(拳擊,泰拳,空手道等)
這些看似毫不相乾的愛好可以幫助大腦休息。另外需要注意的是,你無需真正成為某一項愛好的專家,不要有額外的壓力:擔心演奏不好、沒有繪畫天賦等等。沒關系,它只是一個愛好而已。
持續學習
軟體開發是一個需要終身學習的行業(其實如果你不想做那種混吃等死的人的話,基本上每個行業都是這樣)。
程序員被裹挾在技術演進的洪流中,不能自已。作為程序員,你不但要非常扎實的掌握基礎知識(操作系統原理,計算機網路,數據結構,演算法等),還需要有非常強的快速學習能力,以及願意不斷去學習的態度,而後者可能更重要。
讀書
通過視頻/文本教程等學習新技術
建議新手每天抽出一個小時來讀書,周末可以多讀一些。ThoughtWorks有個讀書雷達,是一個很不錯的書單,包括了很多的經典書籍。讀書之外,還可以在線學習一些教程,比如Tutorialplus和Egghead等,都非常值得經常去看看,如果有比較新鮮有趣的技術,不妨自己親自動手試一試。
正確應對犯錯
斯坦福大學的Carol Dweck教授通過一些實驗和後續的研究提出了很有名的心智模型(Mindset)理論,簡而言之,她發現不同的人們對待失敗這件事有著完全不同的態度:有一類人害怕失敗,失敗後會變得不能接受,而且容易否定自身並影響進一步的嘗試,Dweck教授稱這類人為固定型思維模式(Fixed Mindset);而另一類人則「喜歡」失敗,視失敗/犯錯為學習的一種方式,他們更關注過程而不是結果,Dweck教授稱其為成長型思維模式(Growth Mindset)。
Dweck在演講中提到,通過向成長型思維模式的轉變,關注從失敗/犯錯中學習,人們的潛力可以得到很好的發揮,也更容易獲得理想的結果。
很多新人不敢嘗試,又不願意讓同事知道自己的不足,這樣的態度會導致他更傾向於選擇更容易的工作,這樣就可以避免暴露自己的不足,久而久之就會形成惡性循環。其實企業對於新人的期望一般都不會很高,對於新人犯錯也是有容忍度的,新人要勇於承認自己的不足,勇於嘗試新的事物,勇於犯錯並從中學習。
承認自己的不足在剛開始是一件很困難的事情,不過在嘗試過幾次之後,你就會發現其實也沒有那麼恐怖。你慢慢會喜歡那種不帶任何包袱的、全身心聚焦在學習本身上的快樂。
不要被角色限制
作為程序員,既可以往上游去探索需求的梳理,用戶痛點的分析,業務價值的挖掘,又可以向下游如測試的編寫,產品的發布,運維監控。視野開拓了,才有可能對產品有整體的了解,也更容易在程序員這個角色上做的更好。
作為新人,能在自己擅長的方面發揮長處當然很好,但是如果僅僅局限在自己擅長的方面則未免太過單薄。如果你在前端非常有經驗,那麼除了將這些經驗和知識分享給別人之外,你還可以向別的角色學習他們擅長的技能,比如向測試學習自動化、SBE等;向後端學習高性能,高可用伺服器的技術、資料庫設計及優化、API設計等;向DevOps學習運維技能,自動化provision技能等等。
這些不同的技術不但可以讓你的視野更加開闊,也可以為自己以後嘗試不同的角色和機會打好基礎。
展示你的創意
將一個創意、復雜概念或者想法簡潔而准確的描述出來是一個非常重要的能力。我見過太多的程序員都是沉默寡言,講東西聲音又小,又緊張,即使有很好的想法也難以完整的表述出來。
不過這個能力是可以鍛煉的,只需要藉助原型的製作就可以了:
畫圖
靜態原型
紙上原型
俗話說,一圖勝千言。你只需要學習一些簡單的繪畫技巧就可以大大提高自己的表述能力。
通過用靜態頁面(HTML/CSS/JS),mock數據等方式,快速的將創意表達出來是程序員的一個優勢,你可以用靜態數據、數據文件等方式,通過一些簡單的代碼快速的作出可以做交互的原型,然後通過和用戶不斷確認的方式來漸進增強,這種做法可以避免太大的浪費,盡早的將客戶價值交付。
原型並不局限在草圖,可以工作的靜態頁面,還可以是一個清晰簡潔的演講。基於PPT的原型還可以用來分析目前產品痛點、對比方案的優劣、展示自己的看法等等。
手速
關於程序員是否要求很快的手速是一個頗具爭議的話題。支持者認為這屬於基本功,每個程序員都應該打字都很快;反對者則認為程序員的價值在於思考並解決問題,追求速度快,那還不如招個打字員。我個人的觀點是,好的程序員應該有很快的手速(包括打字的速度,但不局限於此)。
對同一個頁面的不斷練習聽起來是在做重復工作,其實可以聯繫到很多的內容:
命令行的熟悉程度
快捷鍵的使用
搜索引擎的使用
Stackoverflow的使用
當你真的可以熟極而流的時候,你才有時間來考慮如何優化,比如如何抽取模板工程(這樣下次做同樣的事情就會快很多),如何精簡DOM結構,如何用命令行工具來幫助自己提速等。手速是大前提,沒有速度,一切優化都是腦海中的意淫,無法真實落地。
總結
要成為一個厲害的程序員,首先當然是要有一個好的身體。此外需要培養一個編程之外的愛好,這樣可以讓你活的像一個正常人(而不是傳統的工科書獃子)。程序員是一個需要不斷學習,不斷充實的職業,在學習的過程中,英文能力可以幫助你學的更快,更有效,另外正確的應對學習過程中必然會犯的錯誤,並將每次錯誤都當成學習的機會。
Ⅳ java程序員在面試中被問到如何配置多數據源以及如何配置多數據源下的分布式事務,該怎麼回答看清再做答
你好,我來先回答你的第一個問題:
通常多數據源,在spring中配置如下,如果你想切換環境ENV 的值,在property中
<bean id="placeholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="true"></property>
<property name="" value="true"></property>
<property name="nullValue" value="NULL"></property>
<property name="locations">
<list>
<value>jdbc.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="com.spring..JDBCConfig">
<property name="driverClassName" value="${${Env}.jdbc.driverClassName}"></property>
<property name="url" value="${${Env}.jdbc.url}"></property>
<property name="username" value="${${Env}.jdbc.username1}"></property>
<property name="password" value="${${Env}.jdbc.password}"></property>
</bean>
jdbc.properties
*****************************
Env=PROD
jdbc.driverClassName=${${Env}.jdbc.driverClassName}
jdbc.url=${${Env}.jdbc.url}
jdbc.username=${${Env}.jdbc.username}
jdbc.password=${${Env}.jdbc.password}
######### JDBC Configuration for DEV Environment ###############
DEV.jdbc.driverClassName=com.mysql.jdbc.Driver
DEV.jdbc.url=jdbc:mysql://localhost:3306/devportal
DEV.jdbc.username=DEVuser
DEV.jdbc.password=DEVpwd
######### JDBC Configuration for UAT Environment ############
UAT.jdbc.driverClassName=com.mysql.jdbc.Driver
UAT.jdbc.url=jdbc:mysql://localhost:3306/UATportal
UAT.jdbc.username=UATuser
UAT.jdbc.password=UATpwd
########## JDBC Configuration for PROD Environment ############
PROD.jdbc.driverClassName=com.mysql.jdbc.Driver
PROD.jdbc.url=jdbc:mysql://localhost:3306/portal
PROD.jdbc.username=root
PROD.jdbc.password=admin,
我這里有三套環境,分別是DEV,UAT和PROD,這種方式可以靈活切換的。
我再回答你的第二個問題:
還請你去http://docs.spring.io/spring-framework/docs/4.0.x/spring-framework-reference/html/transaction.html這里看下,很詳細,不過是英文的哦
Ⅳ 如何學好程序員必知必會的數據結構
大話數據結構
《大話數據結構》為超級暢銷書《大話設計模式》作者程傑潛心三年推出的扛鼎之作!以一個計算機教師教學為場景,講解數據結構和相關演算法的知識。
通篇以一種趣味方式來敘述,大量引用了各種各樣的生活知識來類比,並充分運用圖形語言來體現抽象內容,對數據結構所涉及到的一些經典演算法做到逐行分析、多演算法比較。與市場上的同類數據結構圖書相比,本書內容趣味易讀,演算法講解細致深刻,是一本非常適合自學的讀物。
趣學數據結構
本書基於C++語言編寫,從趣味故事引入演算法復雜性計算及數據結構基礎內容,涵蓋線性結構、樹形結構和圖形結構,包括鏈表、棧和隊列、樹和圖的應用等。本書內容還涉及數據結構的基本應用(包括各種查找、排序等)和高級應用(包括優先隊列、並查集、B-樹、B+樹和紅黑樹等)。
通過大量圖解將抽象數據模型簡單通俗化,語言表述淺顯易懂,並結合有趣的實例幫助讀者輕松掌握數據結構。
Python數據結構與演算法分析
了解數據結構與演算法是透徹理解計算機科學的前提。隨著Python日益廣泛的應用,Python程序員需要實現與傳統的面向對象編程語言相似的數據結構與演算法。
本書是用Python描述數據結構與演算法的開山之作,匯聚了作者多年的實戰經驗,向讀者透徹講解在Python環境下,如何通過一系列存儲機制高效地實現各類演算法。通過本書,讀者將深刻理解Python數據結構、遞歸、搜索、排序、樹與圖的應用,等等。
圖解數據結構:使用 C++(其他語言版本也有)
這是一本以C++程序語言實戰來解說數據結構概念的教材。全書內容淺顯易懂,利用大量且豐富的圖示與範例,詳解復雜的抽象理論,從最基本的數據結構概念開始說明,再以C++工具加以詮釋陣列結構、堆棧、鏈表、隊列、排序、查找等重要的概念,引領讀者抓住重點輕松進入數據結構的學習領域。
《圖解數據結構:使用C++》內容架構完整,邏輯清楚,採用豐富的圖例來闡述基本概念及應用,有效提升可讀性。以C++程序語言實現數據結構中的重要理論,以范常式序說明數據結構的內涵。強調邊做邊學,結合下載文件,給予最完整的支援。
以上就是關於學好數據結構的書單分享,希望對大家有所幫助,想要了解更多相關內容,歡迎大家及時關注本平台!
Ⅵ Java程序員如何轉型做大數據
1、技術日漸成熟,應用空間得以拓展
大數據技術,最早於1980年被首次提及,卻在近幾年才獲得突飛猛進的發展。相較於幾十年前神經網路演算法捉襟見肘的計算能力,如今處理器對大規模數據的高速處理能力無疑發揮了關鍵性的作用。藉助於處理器的高性能,使我們短時間內完成PB 級數據的機器學習和模型訓練成為可能,由此為高度依賴深度學習的圖像、語音識別產品的快速迭代奠定基礎,大數據應用空間得以拓展,也由此催生了提供相關產品與服務的技術公司。
2、重視數據資產,數據挖掘已成必然
現代信息技術使每日產生的數據量呈指數級增長,企業發展再也無法迴避對數據價值的挖掘與利用。電商平台利用畫像做個性化推薦,互聯網金融公司利用高危識別技術管控金融風險,滴滴出行利用交易數據通過實時定價優化利潤……這些都是對大數據價值的發掘和利用。隨著數據資產意識的加強,數據挖掘也將獲得越來越多結合具體行業場景的重視。
3、技術催生業務新模式,蘊含創業新契機
大數據產業鏈,催生出針對不同版塊提供產品和服務的業務組合新模式,無論是利用推薦演算法做內容服務的今日頭條,還是基於數據整合提供監測服務的 TalkingData,或者是提供底層架構支持的阿里雲,無不是發覺了大數據產業鏈條所蘊含的創業先機。
大數據創業,時至今日熱度不減,雖難出BAT那樣巨頭獨大的局面,其提供的相對公平的競爭機會,依然在吸引著新的創業公司加入。
4、市場供不應求,崗位挑戰空間大
翻看大數據相關招聘崗位,一方面是供不應求的招聘局面,另一方面是騰訊、華為等大牌互聯網公司開出的誘惑薪資,都讓普通崗位的程序員躍躍欲試。
再加上這些崗位相比於傳統的軟體工程,有更高的挑戰空間和更大的難度,自然引得更多人才進入到這個領域。
大數據相關崗位有哪些?
1. 偏技術的「演算法工程師」
利用演算法手段,構建機器學習模型,解決諸如「人臉識別」、「支付風險管控」等高難度問題。它往往既需要工程師在具體問題上有足夠的專注力,也需要對相關的演算法有足夠深度的了解。
2. 偏業務的「數據挖掘工程師」
結合計算機知識,重點攻克復雜業務的演算法化和模型化難題。與演算法工程師的要求不同,它往往不需要工程師在演算法上探索得足夠深入,卻對知識的廣度和技能的交叉度有較高的要求,還需要工程師具備相當和快速的業務理解能力。當然了,對數據的高敏感性也必不可少。
技術 Leader 最想要什麼樣的人?
1、最好,你是個獨當一面的全才
基礎條件:扎實的計算機基礎、邏輯能力、英文等素質
保障條件:聰明、學習能力強
加分條件:大規模集群開發經驗;上層數據應用優化經歷;熟悉聚類、分類、推薦、
NLP、神經網路等常見演算法;會數據處理,還熟悉聚類、分類、推薦、NLP、神經網路等各種常見演算法……
2、退而求其次,有配合團隊的長板優勢
全才難得,退而求其次,針對不同崗位吸收具有不同特長的人才,以追求團隊整體配合的平衡,也不失為一個策略。
計算機視覺領域的大數據公司,往往需要自己的團隊中同時具備如下特長的成員。比如精通演算法的人才:把圖像識別相關演算法模型調整到極致;工程實力型人才:高性能實現訓練好的演算法模型,或者幫團隊搭建一整套視頻圖像數據採集、標注、機器學習、自動化測試、產品實現的平台。
即便同一演算法工程團隊內部,成員的技能側重點也要合理搭配,以互為補充。比如,有人專注核心演算法研究,就要有人擅長業務分析,專注業務演算法模型的實現。
因此,對於想轉型大數據的普通程序猿來說,梳理清楚自己現有技能對於新團隊的價值非常重要,這是促使新團隊決定吸收自己的關鍵。比如,發揮硬體和底層系統工作經歷在演算法高速實現上的優勢,一旦通過自身擅長的技能切入新團隊之後,就有了更多橫向發展的機會,幫助自己在大數據相關領域建立更強競爭力。
3、相較當前技能水平,扎實的基礎和成長空間更被看重
當前技能水平好比是術,而扎實的計算機基礎則處於道的層面,諸如Spark等工具性知識通過後期學習便能輕易掌握,而如果缺少了C++/Java基礎想進步卻絕非易事。比如,如果演算法、數據結構比較強,編程語言上對 C++ 理解較深入,在應用層的學習上,就可能會比其他人快很多。
有人將程序猿能力抽象為一個金字塔模型,雖然對計算機語言的精通是每個工程師都注重的能力,但越基礎的素養越蘊含了更多的發展潛力。相比單純苛責當前技能,能利用基礎素養勝任一部分基礎工作,然後通過1-2年鍛煉接受更復雜問題的程序猿,反而更受企業青睞。
TalkingData 大數據招聘負責人曾直言道,相比於對 Spark 了解更多的人,他們更願意招收那些 Java 學得好的人。因為 Spark 的介面學習起來相對容易,但是要想精通 Java 是一件很難的事情。如果把 Java 或者 C++ 學透了,那麼對計算機技術的認識將很不一樣。
轉型大數據,要點歸納
1、重視基礎
2、發揮專長
3、准備充分
4、首選公司內部轉崗
Ⅶ 作為一個Java程序員,該怎麼轉行做大數據分析師
我也做過好多年Java,去年開始也接觸了些大數據的架構。跟你情況類似。我的觀點是你可以去動手搭建一下,玩玩,其實並不像你想像的那樣高深莫測。都是些工具,我不太喜歡學如何用這些工具,只要能解決我要解決的問題,去用就是了。如果工具的實現感興趣就去看看代碼。工具本身怎麼用就是個fact,只是知道和不知道的區別。不要覺得做Java就比別人低一等。你一樣可以做的很出色。會用那些大數據工具也並不代表能力有多強