❶ 程序員如何提升自己的核心競爭力
首先需要在一個技術領域深耕,只有一個領域的知識真正吃透,才能有效地共享到別的領域,構成知識領域的森林,相近領域逐步橫向拓展
❷ 程序員的出路
先總結後論述,打工是不可能一輩子打工的,程序員一定要有自己的生產資料。
我一直認為工作只是作為前期的一些資本積累,知識積累,人脈積累。最根本的出路還是要有自己的生產資料,這樣才能應付各種危機。這里的危機不限於裁員,生病等常見危機。一切需要錢的危機都算。
生產資料就包括很多種了,程序員可以開自己的公眾號,經營自己的網站,開發app,開發游戲,等等,一切可以構成你的睡後收入的都算你的生產資料。房子其實也算,因為可以收租。
其實擁有這些也不難,為什麼這么說?因為程序員在工作中可以幫助公司開發創造這些,那麼自然也是可以為自己創造和開發這些的。
創造和開發這些要麼是一個人,要麼是一群朋友一起。後者需要你的人脈關系作為支撐,前者非常適合全棧工程師和個人開發者。
很多人覺得全棧工程師都是自己一個人做,只有小公司才會這樣子培養人,大公司不需要這樣的人,因為分工很明確,每個地方需要你的技能都是明確的。
但是其實從謀求自己掌握生產資料的角度來說,其實全棧工程師是最好的。
我以我自己為例,我大學剛畢業,進的小公司,那時候安卓,後台都會自己開發。後來進了另一家公司做前端和後台去了。再後來進了大公司,做了偏向部署,雲方向的工作。
到現在我發現自己基本遺忘了安卓開發的知識,前端也有些許遺忘,後台開發還很熟悉,但也沒有以前這么熟練了。
以前熟練的時候,基本幾周就可以搞定一些小項目的開發。
可能有人會問,那時候你為啥不開發掌握自己的生產資料?那時候年輕,想法沒有現在這么多,隨著年紀越來越大,經歷的事情越來越多,就會想到這些事情。年輕的時候很少會想這些,覺得自己競爭力非常強。
也有人會覺得在公司做這些項目,是有很多資源可以支持的,當你自己做的時候需要考慮的東西很多,而且也沒有這么多資源的支持,一個人需要兼顧花費的精力非常多。
話是這么說,沒錯,但是我們要做的東西也不是一蹴而就,可以用時間慢慢迭代,而且也不是要做很大很有野心的東西,一上來不要謀求做平台,一定不要做平台。先做出來再說,不要停留在ppt概念,想法的層級上。
我遇到很多停留在想法,ppt層級上,遲遲不行動的人,同時也有一些開始行動的人,後者已經產生了不菲的收入了,隨著產品迭代更新,用戶的反饋,自然而然可以做出成熟的產品。
簡單來說,就是初期不要考慮太多,先把東西做出來,然後後期根據用戶的使用反饋和建議不斷打磨產品,當你慢慢產生收入,這時候再花錢繼續迭代就容易多了。
而且自己打磨產品,學習到的知識,遇到的坑,自己慢慢消化,對自己是有很大幫助的。
在小公司開發,老闆給你洗腦說,可以學到很多東西。但是生產資料是公司的。
現在為自己開發,製造屬於自己的生產資料,也需要你給自己洗腦,如果成功了,知識是你的,生產資料也是你的。
最後希望每一個程序員都有屬於自己的生產資料。
❸ 剛做java軟體開發不久,想了解一下Java程序員未來職業路線
由於Java語言是全場景編程語言之一,所以未來Java程序員的發展路線還是比較多的,從技術角度來看,Java程序員可以選擇走兩條發展路線,其一是走全棧程序員路線,其二是走研發級程序員路線,這兩個發展方向都有不錯的職業前景。簡單的說,數學基礎好就走研發級路線,否則走全棧程序員路線。
從崗位升級的角度來看,Java程序員未來還可以選擇走管理路線、設計路線或者咨詢路線。管理路線比較常見的選擇是項目經理崗位,項目經理崗位的成長空間也比較大,隨著自身資源整合能力的不斷提升,所從事的項目也會逐漸升級。要從事項目經理崗位,一方面需要豐富自身的知識結構,能夠了解整個項目開發過程中所涉及到的細節,另一方面還需要培養自身的溝通交流能力,能夠搭建起有戰鬥力的項目團隊。
對於一部分行業認知能力、技術認知能力和產品認知能力都比較強的Java程序員來說,選擇從事產品經理崗位也是不錯的選擇。由於具備扎實的技術背景,所以程序員從事產品經理崗位也具有一定的優勢,對於技術邊界的把握會更精準。隨著產業互聯網的發展,未來大量的傳統行業領域也需要產品經理,所以崗位需求量還是比較大的。
咨詢路線也是Java程序員未來發展的重要方向之一,目前整個IT行業領域存在大量的咨詢崗位缺口,咨詢專家更是具有非常可觀的薪資待遇。要想成長為咨詢專家,除了需要具備較強的技術背景之外,還需要具有較強的行業認知能力,能夠根據不同的應用場景給出針對性的解決方案。
總之,Java程序員未來的發展空間還是非常廣闊的,可以根據自身的知識結構、能力特點和興趣愛好來選擇發展方向。
我從事互聯網行業多年,目前也在帶計算機專業的研究生,主要的研究方向集中在大數據和人工智慧領域,我會陸續寫一些關於互聯網技術方面的文章,感興趣的朋友可以關注我,相信一定會有所收獲。
我從事互聯網行業多年,目前也在帶計算機專業的研究生,主要的研究方向集中在大數據和人工智慧領域,我會陸續寫一些關於互聯網技術方面的文章,感興趣的朋友可以關注我,相信一定會有所收獲。
如果有互聯網、大數據、人工智慧等方面的問題,或者是考研方面的問題,都可以在評論區留言!
如果有互聯網、大數據、人工智慧等方面的問題,或者是考研方面的問題,都可以在評論區留言!
❹ java全棧和java大數據哪個好
首先你要理解全棧和大數據什麼意思,理解之後你再選擇,被人推薦始終是別人的了解,自己理解做出自己的選擇。
❺ 目前全棧開發的就業前景怎麼樣
全棧工程師掌握前端開發技術、移動APP開發、微信小程序開發、炫酷的網站開發、桌面應用開發等,期崗位發展方向也是清晰明了,從初級全棧工程師,經過經驗的積累及自身的學習,一步步發展為高級全棧工程師,薪資穩定在20K到25K之間,最後成長為產品總監,薪資穩定在30K到50K。職業晉升線路一目瞭然,有好的發展和可觀的薪資,你還在擔心全棧工程師沒有前途嗎?
涉足領域廣泛
因為全棧工程師會的技能多樣,所以在多種領域都可以發光發熱,包括金融、醫療、社交、汽車、生活服務、電商等常見領域,以及游戲、人工智慧等新興的熱門領域,都有全棧工程師的一席之地,未來隨著互聯網公司的需求增多,全棧工程師一定會成為將來的一個發展趨勢。
❻ 全棧開發和大數據哪個好
都是做程序員,只不過做不同的項目,但從公司水準上來看的話,大數據開發的薪資略高一點,但是從就業范圍來說的話,全棧開發的就業范圍廣,這就取決於你自己對自己未來職業方向的定義了。
❼ 全棧工程師就業好不好
什麼是全棧工程師
在現在這一個時代來說,不會有人掌握所有的編程語言、技能,以後應該會有,但是掌握這些全部技術的不是人類了。所以,其實我們需要的是懂得多種技術的,並能借些獨立完成產品的人。
當我們需要做一個移動 CMS 的時候,我們就會在不同的技術棧之前選擇,或是 RequireJS + Backbone + jQuery + Mustache,又或者是 ReactJS + Backbone,當然也有可能是 AngularJS 等等。我們所需要做的是,從中選出一個最好的方案,然後實施之。
這也就意味著,我們需要有更好的知識面,也會導致對於某些技術的不夠深入。兩者就是一個很好的對立面,在這兩之間很好地平衡可能就意味著平庸。有時也並非如此,但是多數時間這這樣的。要麼成為專家,要麼成為全棧,要麼就平衡他們。
全棧工程師 VS 專家
人的大腦如同一間空空的閣樓,要有選擇地把一些傢具裝進去。
柯南道爾說的話還是很有道理的。由於這個閣樓的大小是有限的,假定他是一個書架。那麼全棧工程師的書架就會充滿各種各樣的技術棧從 MySQL、SQLite、MongoDB、Redis 等等各種各樣的書籍;而專家的書籍則是 MySQL 優化、MySQL 重構、MySQL 權威指南、DBMS 等等的專業書籍合集。
如果他們都是一本書,那麼全棧工程師的書是一個索引。專家的書則更多的是內容本身。
所以,每個人都會去選擇不同的存儲方式、不同的資料庫。
對於我們大腦這個資料庫來時,平時我們存儲的是 Key-Value (ps: 我們只有 key,value 是 Google 和書本),對於專家來說,存儲的是 Documents。在同樣的容量大小的情況下,我們可以了解到更多的知識。如下圖所示,左邊的關系數據模型即為全棧工程師,右邊則為專家。
Key
曾經迷惑了很久: 為什麼對於一些知識點,我需要去 Google,而別人可以獨立地完成的時候。我就意識到我更適合於互聯網企業,據說在一些電信設備製造商里是沒網的辦公環境。然而在多數的時候,這並非一種劣勢。
我們會更快地方式來解決問題,因為我們有一些這方面的經驗。不足則是,有時候我們沒有辦法深入問題去分析。
如何成為全棧工程師
這是一個有趣的問題,在知乎也有這樣的討論。而我覺得,最重要的是好奇與創造。
創造
記得在上大學之前已經有一個明確的目標,盡可能地做到能做到的程序——想到的都應該能做到。於是,順著這個目標構建了一個知識體系,又或者說是索引。
當我們心裡有一個想法的時候,我就開始從一個 key 中進行頭腦風暴,如之前做的地圖搜索。我們要做的功能便是: 持久化 GEO 信息,在地圖上顯示坐標。
1. 首先會在頭腦中列出所有我用過的框架,選擇後台框架:
Django (python)、Flask (Python)、Ruby On Rails (Ruby)、Sinatra (Ruby)、NodeJS、Laravel (PHP)、Spring (Java)
排除過後就只剩下 Django、Flask、NodeJS,接著因為 Django 內置 Geo 支持,果斷選擇了 Django。
2. 接著,對於持久化方案的選擇:
由於 Django 內置 ORM,所以這一步可以輕輕鬆鬆地過去。不過,我選的是 SQLite3,本地調試方便,還可以將數據復制到伺服器上。
3. 然後,對於空間搜索的支持:
就這么有了兩個搜索引擎和一個資料庫: ElasticSearch、Solr 以及 MongoDB。因為 Django 對於 MongoDB 支持的原因,想到使用搜索引擎會更容易搜索到結果。接著找到了 Haystack,看到 Solr 需要手動更新索引就選擇了 ElastiSearch。
4. 到了,移動開發:
要跨平台支持自然是 Cordova,用 Hybird 還是 Ionic 好用。
5. 實戰
這一步自然也不是問題,向來是以實戰出真知的。
在不斷創造地過程中會學到更多的知識,有更多的方案可以選擇。下一次,將會想著用不同的技術棧再實現一遍。有了之前的體系,再橫向深入也是一個很好的突破點。如,我們用 Python 構建一個原型,然後我們用 Java 來實現。
好奇
與專家不同的是,全棧工程師更容易被新的技術吸引。至於,是好是壞我想大家都懂的。
當 ReactJS 出來的時候,就會試著去玩。
當 Ionic 還在測試版的時候,就會做一個個 Demo。
而有意思的是,同我們在《技術的本質》中看到的一樣,新的技術都是基於舊的技術產生的。沒有一種技術可以無中生有。所以要學習一種新的技術必然不難,只是有時候會難以深入。
全棧程序員進階
在思考過一些日子後,我明白了更多的東西。也似乎找到了兩條更有意思的成長路線:
構架設計
在我打算試著寫一個名為 Echoes 的 CMS 的時候,找到了書架上的幾本書:
《架構之美》《面向模式的軟體架構》《領域驅動設計》《實現領域驅動設計》《軟體框架設計的藝術》發現書中提及到的一些模式似乎已經很常見了,要理解起來已經變得很簡單,看上去那些更像是一個又一個的項目的縮影。
更主要的點還有:
> 架構師並不是最好的程序員,但是知識面一定要廣。
只有有著更多的知識才能決定好方案,如果我們只深入一部分知識,那麼我們無法總做出正確地決定。所以,也必須也是一個好的成長方向。
成為專家
我一直不認同木桶理論的一點是,我們會被最低的木板限制。但是有一天我們會被最高的那一塊限制到,畢竟我們都會意識到我們的短片,我們會盡量把所有的木板提到同樣的高度,以保證水的容量。但是,如果最高的那塊木板不是那麼高呢? 那麼,為什麼不在一開始的時候,讓它盡可能的高?
於是,我想說的是我們需要在某一部分成為專家。當我們在某一領域成為專家,要在另外一領域成為專家,也是很容易的一件事。
當我向 Senior 程序員咨詢一些成長意見的時候(ps: 畢業不到一年),那麼就是往專家發展。對於一個 Java Web 程序員來說,成長意見可能就是深入 Spring、探索 Tomcat 底層、深入 JVM。問題是,他們都寫得復雜,但是我們又不能放棄這樣的成長機會。我們還能做的事,從一個更簡單的語言中學會這些原理,再回頭去補充。
對應於 Spring,會有 Flask、Tornado;對應於 Tomcat,我們是不是可以深入 Gunicorn;對應於 JVM 是不是也會有 Python VM,不過還是 JVM 的書比較多。等我們在一個更簡單的層級上了解到這些,那麼對於一個臃腫的語言來說不會是難題。
❽ 全棧工程師行業在未來會有很好的發展嗎
最近,網上很流行一個詞:全棧(Full Stack)工程師,也可以叫全端工程師,無論是前端知識,還是後端架構你都要了解。甚至有些調皮的程序員這樣理解全棧工程師:全棧工程師=屌絲戰斗機=系統+網路+研發+dba+架構+安全=沒女朋友、拿一份工資做三份事情的典型、每個站長都是一個全棧工程師,每個站群的站長都是超級全棧工程師。
以前,軟體工程師最在意的是成為某個領域的專家或者高手,如今,隨著軟體技術的發展以及需求的變化,尤其是越來越多的程序員出來自己創業,由於各種條件限制,許多技術上的問題不得不親力親為地去完成,因此,很多程序員慢慢地就練就了精通多門技術的本領。
Full Stack Developer在國內不被接受的一個主要原因是公司缺乏穩定的T線(技術職位晉升路線)。很多有才華的人寫了幾年代碼後去做了管理。今天的網路相關技術,聰明又能持續學習的人,在三年之內可以在一個領域做到很高的水準。那麼如果你做五年,十年甚至十五年呢?我認為成為Full Stack Developer是很自然的選擇,而且可以跟隨最頂尖的技術。
Full Stack Developer的核心並非否定團隊和協作,而是更多的體現在架構設計,快速原型和TroubleShooting方面。隨著今天的分層越來越清晰,平台和語言越來越有特點,更加全面的技術人員可以根據不同的語言搭建整個架構。
Full Stack Developer並非雜而全——Facebook也不會雇庸手。他要求的是一種更加全面的深入。 一方面,他是技術人員不斷學習的結果。另一方面,他也是對自己事業的一種責任。
❾ Java和全棧開發哪個發展前景好
全棧和java哪個能更好迎合市場需求,有同學咨詢學習哪個在以後前景和工作薪水上能更吃香,首先我們先來了解下Java開發和全棧開發的區別。
全棧開發工程師是指掌握多種技能,能夠獨立開發應用程序的前端和後端以及資料庫工作的開發人員。其中前端通常是指用戶在應用程序中能看到或交互的部分,後端是應用程序中處理業務邏輯,資料庫交互,用戶認證,服務端配置等部分。全棧開發需要掌握至少一門編程語言,PHP、Java、C#、Python等,運用開發框架和第三庫,前端技術,資料庫與緩存,基本的設計能力。
Java後端語言,用來處理資料庫操作,用戶認證和應用程序邏輯等操作。你就需要掌握面向對象的設計和開發,設計模式的應用,基於J2EE各個組件的開發等等。只要你學習了解JAVA語言,並且學習與所選擇的語言的細微差別,那麼在實際中,無論你學什麼都會比較輕松。如果新的庫、框架和工具都在持續不斷的涌現。
目前看來,單一技能的前端/後端程序員已經不能滿足企業的需求,而且事實上Java已經成為全棧前端和後端開發中最流行的語言,所以要學學習全棧開發,全棧開發包括Java開發。一樣相比,全棧開發者比Java開發者在就業求職中具備多種技能更吃香,同比薪水高出20%不等。
❿ 程序員:新手到專家的5個階段
程序員需要 不斷的學習
不僅僅是學習 新技術 ,還包括應用的 問題域 ,用戶的奇思妙想,同事的古怪習慣,行業的八卦 新聞 和項目演進的重要特徵
我們必須學習學習再學習,持續不斷的學習,然後把學習成果 應用到解決 日常遇到的一切新舊問題上
新手在該技能領域經驗很少或者 根本沒有經驗 ,這里提到的經驗,指的是通過實施這項技術促進了 思維的改變
舉個反例:
可能一個開發人員聲稱擁有 十年經驗 ,但實際上只是一年的經驗 重復了九次 ,那麼這不算是經驗
引申問題:
一年有365天,你是過了365天!還是只過了一天,重復了365遍?
1.新手非常 在乎他們能否成功 ,沒有太多經驗指導他們,他們不知道自己的行為 是對是錯
2.新手不是特別的想要學習,他們只是想實現一個 立桿見影 的目標
3.他們不知道 如何應對錯誤 ,所以出錯的時候,他們非常容易 慌亂
以上是新手的明顯特徵,所以跨越新手有以下幾個步驟
1. 渴望成功 ,但是不要太過於執著,急功近利往往是失敗的前兆, 不急不躁 的心態最好
2.沒有經驗就去 尋找經驗 ,一個 好的老師 和一些優質的資源能夠迅速把有用的經驗傳遞給你
在親身累計經驗之前, 逆向思考,尋找經驗才是核心和緊急目標
3.進行 能力測試, 可以利用第三方的題庫和測試流程,標准而大眾化的測試,同時也需要 自我測評 ,比如完成一個項目,自己統計整體 時間 ,自己撰寫 時間軸日誌 ,自己判斷自己的 詞彙量 和 熟練度 等
自我測評是第三方無法完成的 ,這點尤其重要,簡單來說,也可以稱為 自我認知 ,並且把數據 可視化
4. 興趣是最好的老師 ,沒有興趣也是可以培養的
想要一個立竿見影的目標其實並沒有錯,新手恰恰需要 酷炫有趣有用 的目標才培養自己的興趣,一個 完整的小案例 能夠把所學的知識點 融會貫通
新手要做的,是一邊需要沉下心來學習 零碎的知識點 ,一邊整合知識點做出一個完整的效果案例,兩相結合才能迅速進步
反之,一味的學習零散的知識點不去做案例,學的太多也只是 空背概念而已 ,一味的追求項目效果而不去深入內容,那麼 永遠不會進步 ,碰到一點改動就毫無辦法了
5.不知道如何應對錯誤沒關系,心態要冷靜,並且及時的把 錯誤整理下來 ,學會處理錯誤的方法尤為重要,比如 如何正確提問 ,比如 高效引擎檢索 ,比如官方幫助手冊等,遇到錯誤並不可怕, 可怕的是找到解決錯誤的辦法
高級新手能夠多多少少擺脫 固定的規則
1.他們可以 獨自嘗試任務 ,但仍難以解決問題
2.他們想要快速的 獲取信息 例如,當學習一門新語言或者API時,你可能會感覺到這點,你發現自己會快速 瀏覽文檔 以尋找一個方法或參數列表,你不想在此尋根究底,或者 重溫一遍基礎知識
3.高級新手能夠根據 過往的經驗 ,逐步在正確的情境中採納建議,但比較吃力,同時,他們能夠形成一些總體原則,但不是全貌, 他們沒有全面的理解,而且的確不想有
以上是高級新手的明顯特徵,所以跨越高級新手有以下幾個步驟
1. 思考難以解決問題的原因所在 ,是哪個地方限制了你解決問題的能力?
這一點與你個人的現狀有關,你正在學習的技術棧,你所做的項目,你的綜合 能力和資源
簡單的說 具體問題具體討論 ,你必須對問題有深刻的認知並且 對自己有足夠的了解
2.在這個追 求效率的時代 ,要去思考和學習底層原理,是一件很難的事情,因為 時間不允許
事實上絕大多數事物的不成功,就是 沒有足夠的時間
在時間的維度上,再無知的新手也有一個寬泛的坐標,那就是 尋找一個參數方法的時間和解析一個參數方式的時間都大致明確的
比如找到並使用某個參數方法大概需要 2分鍾-10分鍾 ,正常情況是5分鍾,而解析一個方法原理,需要的時間是不確定的,確定的是 大於等於10分鍾 ,可能是30分鍾,也可能是幾個小時,這 與效率不符 ,從利益上看也不劃算
尋根究底是需要的,但它的 重要等級 排列在熟練了解全局內容之後
重溫知識點也是如此
3.高級新手在一個熟練的框架里有所經驗,有所作為,但是換了一個框架, 復用原來的知識 ,就顯得生澀了
在學習的過程中,要不斷的 舉一反三 ,一個例子刻意練習三遍以上,一個例子做出不同的三種效果,一個例子應用在三種不同的情境等等等,學會 觸類旁通
在第三階段,從業者現在能夠 建立問題的概念模型 ,並 有效 的使用它們
他們可以獨立的解決自己遇到的問題, 並開始考慮如何解決新的問題 ——那些他們之前沒有遇到的問題
你可能會看到,處在這一水平的人通常被認為有 主動性 和足智多謀
他們往往在團隊中發揮領導作用(無論是否有正式的頭銜),他們是 團隊里的好人 ,既可以 指導新手 ,也不會經常騷擾專家
以上是勝任者的明顯特徵,所以跨越勝任者有以下幾個步驟
1. 教是最好的學 ,當你可以勝任工作,可以獨自解決大部分問題,已經比較 完善 了
這個時候要追求 知識的深度 ,想要進一步提升,就需要整合以前所有學習的內容,資源以及學習方法,在底層原理上,還有很多需要融匯貫通的地方, 通過教授新人和他 人,能夠完善自己的知識體系,找到自己的薄弱點,以 另一個層面的角度來重新調整視野
2.學習與之 相關的領域, 這些內容你不一定會用到,或者不是在你的職責范圍之內,但是學習之後會讓你的本職做的更好, 讓你的知識更加全面
前端勝任之後,可以適當學習後端,也可以適當學習UI,往 全棧的方向 ,學了python之後,也可以學學java, 了解不同語言之間的優點和缺點 ,運用不同的內容適當的解決問題
對比思維,左右辯證 ,看似把時間花費在精通之外,實際上效果一樣會 反饋到核心事物上
廣度和深度是一個 選擇題 ,在時間上,只能 二選一 ,適度就行
精通者有足夠的經驗, 他們知道下一步會發生什麼 ,如果沒有發生又需要什麼
他們非常明確哪些計劃需要取消,而 應該採取什麼行動
處於精通者的人更像是 初級專家 ,而不是高級勝任者
1.精通者一定是 身經百戰 ,給一個項目,他能在一開始就判斷出這個項目需要多長時間,分為那幾個步驟,需要什麼人員
從一開始就是 瞭然於胸 ,排除可能出現的錯誤,剩下的只是按部就班的走正確的流程就好,達到 高效,高質量,少錯誤的效果
這個階段的人,已然有了質的變化,想要如何往上躍遷,還需要另外的 質的改變
終於我們來到第5個也是 最後一個階段 :專家
專家是各個領域知識和信息的 主要來源
他們總是不斷的尋找 更好的方法 和方式去做事
他們有豐富的經驗,可以在恰當的情境中選取和應用這些經驗
他們 著書,寫文章,做巡迴演講 ,他們是當代的 巫師
思考:
1.自我測評,你處在哪一個階段?
2.如何做才能提升到下一個階段?
3.針對你的行業,細分階級,比如十個階級?哪十個階級?