❶ 為什麼程序員的薪資那麼高北大青鳥雲南計算機學院為你揭秘!
在今天的社會里,工程師往往代表著知識水平和社會地位。
每當普通人聽到這個頭銜,總會報之以敬仰的目光,但有一種工程師,雖然也是如假包換的高級技術人員,卻很少能享受到和同類相近的社交待遇:程序員。
和工程師的耀眼形象不同,多數人眼裡的程序員更接近於一群情趣干癟的宅男,而非高智商高收入的精英群體。
客觀而言,這些評價並不公正。作為高級技術人員,多數北上廣的程序員都能做到月入萬元以上,毫不遜色於其他工程師或職業。大多數嘲笑程序員的人,實現階層逆襲的可能性都遠遠不及。
2019年中國程序員薪資生存調查報告
很多人看到程序員的薪資都會去吐槽,有些人說「這些人根本不知道程序員到底乾的什麼!」,也有人說「寫個代碼月薪1W+,還上到2W+?Areyoukiddingme......」
在程序員被黑的時候,大家都很開心,但一看到程序員工資高了,你就眼紅了...
當今世界蘋果,谷歌,阿里巴巴,facebook等等都是我程序員靠雙手寫出來的天下!你現在用的微信也是!程序員讓這個世界變得這么精彩,工資高了還要被你吐槽!
至於程序員的薪資為什麼這么高?主要從3個方面說起:
創造價值高
程序員的工資不是由一家公司說了算,是由於程序員創造的價值高決定的。想想,單一個王者榮耀這個游戲,據說一個季度收入就有120億,而游戲開發者,程序員幾十個人,最多一年也就開發完了。對於企業來說,能夠為企業創造大價值的員工當然不會虧待。
經常性的加班
雖然程序員的工資很高,但同樣的他們付出的精力也是比較多,經常性的工作到凌晨,有句戲言"我不知道凌晨4點的洛杉磯,但我知道凌晨4點的北京",長時間的工作時長,高強度的工作負荷,對程序員的身體和毅力都是極大的考驗。程序猿花費大量的時間在工作上,"兩耳不聞窗外事"使得這群人是對設備代碼更加的熟練,技能專精。
03
市場需求存在巨大的缺口
每個行業的工資都是市場決定的,得分析需求與供給。
1)供給:
程序員並不多,據說中國也只有200萬會寫程序的人(占人口0.14%),相當少,想想咱們的鄰居——印度,總共有270萬程序員,也只佔人口0.2%的樣子,美國的Tech行業(包括IT在內)工作人員達到700萬,占人口的2%以上。
不過拿整個行業來對比不恰當,因為高科技行業其中只有一小部分人是搞程序的,美國專業從事軟體程序的人口呢,好像只有102萬(根據2010年的人口普查),占人口的0.3%。
另外,在美國的職業排行中,程序員在所有職業當中人口數量排行第三十,還少於:律師職業,104萬;金融資產管理,110萬;大學老師,130萬。
如果覺得金融和律師工資高很合理,那程序員工資高也是合理的。
話說,軟體行業還詳細分類,分各種語言各種平台各種特殊要求,編程語言的話;熟悉Java到專業程度的程序員只有其中30%;Python估計20%;C不到10%;像Golang之類的小眾語言,1%都沒有。
其它行業沒這么麻煩,一個職位總是有很多人都能勝任的。選擇多了,公司就有條件把工資壓低之類的。但是在程序招聘方面,談工資的權利在程序員手裡,因為對方沒有選擇。程序員本來那麼稀有,非常適合要求的程序員更是稀有之稀有,不能錯過。
2)需求:
收入高的程序員一般要麼涉及互聯網,要麼涉及一些大規模使用的軟體。
這是因為,軟體和互聯網服務的邊際成本幾乎為零,邊際成本,就是每多生產一單位產品所產生的成本,它包括生產所需的人工、物料等等。與之對應的成本,叫做固定成本,也就是無論你要生產多少單位的產品都得要支付的成本,這包括研發、營銷等等。
軟體和互聯網服務每多服務一個人,一般也就是多一點電費和網費,成本幾乎沒有,擴張可以非常迅猛,這意味著幾乎所有收益都可以攤到研發(程序員)和管理人員身上,因此這些行業的薪水上限天然地要高於一般製造業。
像whatsapp這樣幾十個人就服務幾億人,在傳統行業是不可想像的。傳統行業,比如格力,在生產中要支付大量的生產成本、物流成本、銷售成本,即便銷售收入遠超互聯網大多數企業,但也不可能讓大多數員工的工資高起來。與此同時,程序員的數量相對於需求,卻也遠遠不夠。
之前就有「創業萬事俱備只差一個程序員了」這種笑話,但其實也是反映了現實情況:程序員的供給顯著小於需求。
兩個條件疊加在一起,就造成,程序員這個群體的工資相對比較高。
說到這里肯定會有人來吐槽,「現在程序員找工作很難」,「程序員已經飽和了,不好找工作」「現在大環境不好,很多公司裁員,程序員的薪資現在很低」...
北大青鳥雲南計算機學院發現對行業和大環境吐槽的程序員,大概分為兩種:
一種是剛要畢業,或者即將畢業要找實習工作的程序員。
還有一種是工作不到兩年或者一年左右的程序員。感覺移動互聯網行業在這個年頭湧入的開發者太多,導致快飽和了,所以沒有經驗或者經驗少的程序員難免找工作難一些。
當自己屢次面試失敗,或者跳槽漲薪失敗時,不知你會不會去整體看一下市場行情,去看一下大部分公司招聘的要求再去反省自己呢?
對於前者,北大青鳥雲南計算機學院給出的建議是:
在大學期間在學習技術的過程中,一定要根據自己的興趣愛好和想法,試著去做一個大點的項目,在簡歷上也不會顯得那麼簡陋,無東西可寫。
不要跟我說自己做不了一個大點的項目,同學那麼多,找個「志同道合」的一起做也很有意思嘛,遇到問題還有商量的可以解決的,反正有責任心的,總能想到辦法去做到。
如果你現在已經大四了,或者馬上要畢業了,還沒有找到工作,別急,不要和別人比較,穩住心態,花上兩個月做一個大點的項目,再出去找也不急,如果整天光焦慮,而不想點辦法的話,你再焦慮對你找工作也於事無補,不如踏實下來為提高技術,鞏固基礎,為找好工作而做准備呢
對於後者,北大青鳥雲南計算機學院給出的建議是:
一兩年工作經驗是一個比較尷尬的工作經驗階段,處於一種「高不成,低不就」的地步。
這時候就需要大家不要暫時眼裡只有錢(當然錢很重要),穩住自己焦躁的內心,騎驢找馬,即在職找工作,不要裸辭。
工作期間,一是平時多積累自己的工作經驗,多學習提高自己的技術,二是多積累人脈,多認識朋友和同事,聯系以前同學,看有沒有內推的機會。三是確立自己的一個求職目標公司,按照那個公司的要求平時多學習和提高自己,做到因地制宜。
❷ 華為研發人員屬於程序員嗎
華為研發人員應該有部分屬於程序員,其他的工作崗位,包括機械設計製造等等方面。
❸ 程序員一般的工作都是干什麼的
程序員的工作內容如下:
1、對項目經理負責,負責軟體項目的詳細設計、編碼和內部測試的組織實施,對小型軟體項目兼任系統分析工作,完成分配項目的實施和技術支持工作。
2、協助項目經理和相關人員同客戶進行溝通,保持良好的客戶關系。
3、參與需求調研、項目可行性分析、技術可行性分析和需求分析。
4、熟悉並熟練掌握交付軟體部開發的軟體項目的相關軟體技術。
5、負責向項目經理及時反饋軟體開發中的情況,並根據實際情況提出改進建議。
6、參與軟體開發和維護過程中重大技術問題的解決,參與軟體首次安裝調試、數據割接、用戶培訓和項目推廣。
7、負責相關技術文檔的擬訂。
8、負責對業務領域內的技術發展動態進行分析研究。
(3)研發炸彈程序員擴展閱讀:
數據顯示,近四成程序員處於單身狀態,明顯高於非互聯網從業者24%的比例。廣州、深圳、北京成為單身比例最高的三大城市。單身的程序員在擇偶方面也有區別於其他人的偏好,更注重對象的顏值、身材和家庭背景。
統計顯示,互聯網從業人員對買房有不小熱情。互聯網從業人員更勇於背負房貸,29%互聯網從業人員正背負房貸,這一比例兩倍於非互聯網從業人員。其中在各大城市排名中,杭州、北京、廣州位列前三大互聯網從業者背負房貸人數比例最高的城市。
在互聯網企業的一個特色是,沒有明確的上班時間和下班時間,靈活的工作時間和高強度的工作量,使得加班成了行業特色。在睡眠時間方面,程序員的睡眠時間集中在11點至凌晨1點之間,而非互聯網從業人員的睡眠高峰在10點至12點之間。
❹ 都說程序員吃「青春飯」,28歲轉做程序員還來得及嗎
都說程序員是青春飯,28歲轉行做程序員還來得及。在35歲的時候,很多人都會面臨著被公司裁員的風險。但是大家離35歲仍然有一段時間,如果在這段時間內,大家可以成為一位非常厲害的程序員的話,這樣也會得到更多的升職機會。
大家可以考慮一條發展路線,可以選擇做研發程序員。對於一位研發級程序員來說,他的經驗一定是越多越好的,同時研發及程序員的存在周期都是比較長的,大家也可以從這方面開始做起。但是這對大家的能力要求也就比一些應用級程序員要高許多,但是只要大家相信自己,並且真正的熱愛這個行業,相信這都不是問題。
❺ 未來10年程序員的薪資會怎麼樣
未來10年程序員的薪資會怎麼樣?這是一個非常好的問題,作為一名IT行業的從業者,我來說說我的看法。
首先,從當前工業互聯網、大數據和人工智慧的發展前景來看,程序員未來的就業機會還是比較多的,而且在人工智慧技術的推動下,程序員的崗位附加值也會逐漸提升,所以未來程序員的薪資待遇依然有較大的提升空間。
第三:行業知識對於程序員的發展有更大的影響。在產業互聯網時代,行業知識對於程序員自身的發展會起到比較大的影響,所以程序員在積累技術知識的同時,也應該深入行業領域。
❻ 軟體測試和軟體開發哪一個專業更好
軟體測試人員和軟體開發人員的崗位要求到底哪個更高?哪個更有發展前景?業界關於此問題的爭論似乎一直未停。而有人指出,這個問題實際上就是一個偽命題。武漢達內IT培訓學校專家表示:對於兩個不同崗位的從業人員能力,因不具備可比性所以無法比較。但不可否認,這兩個崗位之間又存在著不可分割的重合領域。本篇文章列出了從業者對於軟體測試和軟體開發的幾類典型觀點,並包括了二者對應的職業發展方向,以此為廣大從業者提供參考。 一些軟體開發方向的畢業生表示,還在學校時,老師經常說的是如果女生以後不能從事開發,可以去做測試。剛進入企業時,問起開發人員未來幾年的發展,被告知如果個人水平差的話可以轉去做測試。言外之意是否就是:軟體測試人員的技術要求比軟體開發人員的技術要求低呢? 針對這個問題,眾多開發人員、測試人員發表了不同意見,這里整理總結了幾類典型觀點,其中還包括了一些關於職業發展的建議,不妨一看。 「造炸彈」和「拆炸彈」 《我的第一本C++書》作者表示,他不認為程序開發人員的技術水平比測試人員高。他把開發人員和測試人員分別比作「造炸彈」的和「拆炸彈」的,從這方面來說,陳良喬甚至認為測試人員的技術水平要求應該要比開發人員的要求高一些。 陳良喬進一步指出,之所以有很大一部分人認為「開發人員技術水平高於測試人員技術水平」的這個觀點的產生,反映了國內目前重視程序實現、輕視程序質量的業界現狀。 「生產力」和附加「支持」 Adobe程序員馮東觀點剛好與陳良喬相反,他結合行業現狀表示,在軟體工業里,只有開發者旗鼓相當的公司,才能拼測試。而實際上,開發者的生產力可能會相差到十幾倍。馮東認為,目前行業內大部分公司中的測試人員起到的是「支持」作用,只有開發人員才能起到「生產」作用。換句話說,如果你只能招一個人,你是招開發人員還是測試人員呢?「造炸彈的起碼可以當半個拆炸彈的,如果你非要說拆炸彈的也會造炸彈,我只能說你給他的title錯了。」因此,測試和開發的技術水平不在同一「境地」。 要做好測試工作同樣需要高技術水平 微軟亞洲工程院項目開發工程師陳認為,對於並不真正理解測試究竟是什麼的人來說,「開發人員技術水平高於測試人員技術水平」這個觀點具有一定代表性。 陳甫鵃表示,軟體測試的目的是為了保證軟體質量,從工程的角度出發,軟體測試人員舉足輕重。他認為,要真正了解什麼是測試,要先了解測試究竟是做什麼的。陳甫鵃介紹了軟體測試所做的三大方面工作:第一方面是監控產品流程。程序的開發和這個過程中的bug修正是一個時間平衡的工作。開發得太快,就有可能給下一階段帶來較多的問題。而每一個開發階段都需要一定的信息收集、分析。這些只能由測試人員去做。 第二方面是搭建復雜的應用場景。就拿一個完整的ActiveDirectory伺服器的回歸測試環境的搭建來說,陳甫鵃曾為此搭建過11台域控,其中還不包括中間可能動態加入的、刪除的客戶端。而過程中包含大量故意毀壞性操作,每一次毀壞之後都必須恢復現場進行下一個測試。陳甫鵃認為這種測試場景並不是任何一個程序員可以構造的。 第三方面是簡化問題報告。當發生用戶報告時,用戶給出的描述往往缺乏直指問題所在的步驟描述,此時,需要分析過程、並反復與用戶進行溝通最終完成關鍵步驟的定位,這一系列工作也並不適合開發人員來負責處理。 陳甫鵃介紹了一些不需要專門測試的情況。即軟體本身不包含復雜的應用場景,比如單機軟體、單伺服器網站。而更多的復雜應用場景需要通過專業而嚴謹的測試,比如股票軟體類的伺服器系統。如果沒有長時間熟悉過這類復雜系統的技術人員,是無法做好測試工作的。測試和開發所需的技能有交集,但又屬於兩個要求不同的崗位。如果因為開發技術不行就去做測試,也不等於你就能成為一個好的測試人員。 目前開發和測試分離的做法助長了一個傾向:一些程序員越來越不關注自己的程序質量,也不關心自己的程序如何被使用。在CSDN的微軟測試專家群論壇上曾有人發言說一個產品到發布的時候對他來說就是死掉了,他就不再關心了。陳甫鵃認為這代表了一部分程序員的看法。但這不是程序員的錯,也不是分工的錯。該指責的是無能的領導,他們設置測試這個職位就是為了丟垃圾的,而沒有能力把握兩個角色的關系改進產品。這種無能的另一種傾向就是僱用大量的測試人員,以為用人去堆就能堆出好產品。他們忘記了,測試人員起到的是監控質量變化的作用,而不是提高質量。提高質量的唯一辦法是開發。丟包袱能讓人輕裝前進,但是只知道丟包袱丟不出好產品。 技術要求側重點不同 iOS開發者石英則認為,開發人員和測試人員的技術水平要求大致一樣,只是側重點不同。開發人員需要精通某個技術點,測試人員要高度熟悉某個技術面。
❼ 程序員學習技術是深度優先還是廣度優先
個人建議廣度優先。 因為你必須知道適合什麼, 才能夠確定自己想要深入的。公司有個孩子做了四年流媒體,發現根本不是自己喜歡的行業, 然後轉行ios, 又開始從最底層做起。 轉型有痛點, 如果不能博覽整個行業, 沒有一個整體的知識體系, 很容易淪為重復勞動的碼農。
❽ 邏輯炸彈的「邏輯炸彈」
計算機中的「邏輯炸彈」是指在特定邏輯條件滿足時,實施破壞的計算機程序,該程序觸發後造成計算機數據丟失、計算機不能從硬碟或者軟盤引導,甚至會使整個系統癱瘓,並出現物理損壞的虛假現象。
「邏輯炸彈」引發時的症狀與某些病毒的作用結果相似,並會對社會引發連帶性的災難。與病毒相比,它強調破壞作用本身,而實施破壞的程序不具有傳染性。 邏輯炸彈是一種程序,或任何部分的程序,這是冬眠,直到一個具體作品的程序邏輯被激活。 在這樣一個邏輯炸彈是非常類似的一個真實世界的地雷。
最常見的激活一個邏輯炸彈是一個日期。 該邏輯炸彈檢查系統日期,並沒有什麼,直到預先編程的日期和時間是達成共識。 在這一點上,邏輯炸彈被激活並執行它的代碼。
邏輯炸彈也可以被編程為等待某一個訊息,從程序員。 該邏輯炸彈例如,可以檢查一個網站,每周一次為某一個訊息。 當邏輯炸彈看到的訊息時,或邏輯炸彈站看到的訊息,它激活並執行它的代碼。 邏輯炸彈也可以被編程為激活對各種各樣的其他變數,例如當一個資料庫的增長,過去一定規模或用戶主目錄中刪除。
最危險的邏輯炸彈是受某事件未發生觸發的邏輯炸彈。 試想一名不道德的系統管理員,製造了一個邏輯炸彈用來刪除伺服器上的所有數據,觸發條件是他在一個月內沒有登錄。 系統管理員製造這個邏輯炸彈是因為他知道如果他被解僱,他將無法取回進入系統設置他的邏輯炸彈。 一天,他在上班的路上,這個不道德的系統管理員發生了車禍被一輛巴士撞了。 四個星期後,他的邏輯炸彈被觸發清空了伺服器上的所有數據。 系統管理員的意圖是在他被解僱後報復公司刪除數據,但是他沒有料到自己會發生車禍。
因為一個邏輯炸彈不自我復制,這是很容易寫一邏輯炸彈的計劃。 這也意味著一個邏輯炸彈將不會蔓延到意想不到的受害者。 在某些方面,邏輯炸彈是最文明的程序的威脅,因為一個邏輯炸彈,必須針對特定的受害者。
經典使用一個邏輯炸彈,是要確保支付軟體。 如果付款不是由某一特定日期,邏輯炸彈激活和軟體會自動刪除本身。 一個更惡意的形式,即邏輯炸彈也將刪除系統上其他數據。
歷史上曾經出現過的一個非常有名的邏輯炸彈例子是,含有邏輯炸彈的程序每天核對一個公司的員工工資發放清單。如果連續在兩次的發薪日中,某程序員的代號沒有出現在這個工資發放清單,邏輯炸彈就啟動了。 邏輯炸彈的危害:
(1) 邏輯炸彈可以直接破壞計算機軟體產品的使用當事人的計算機數據。而在微機公用的前提下,惡性炸彈的破壞具有較寬的涉及范圍。在我國微機廣泛使用和備份環節薄弱的情況下,危害常常是不可恢復的,即使對於在特定條件下可以恢復的情況,也可能由於操作不當或其他原因,誘使用戶成為最終毀滅數據的直接責任者;
(2) 引發連帶的社會災難。包括直接和間接的損失,如經濟損失、企業虧損、資料丟失、科學研究的永久性失敗、當事人承受精神打擊、失業或家庭破裂、連帶的經濟犯罪、刑事犯罪、或相關人的生命安全等等,這樣的例子和事故是列舉不完的。還有很多事故由於各種原因還不可公開,因此,連帶責任和損失將不計其數,實際上和普通刑事、民事或經濟案件一樣,是社會的不穩定因素。
(3) 邏輯炸彈的邏輯條件具有不可控制的意外性。這次無辜用戶遭受襲擊,就是因為好奇而誤用了具有特殊磁軌的誘因軟盤,還有的用戶是因為操作順序不當,比如把 KV300拷貝到硬碟,想檢查用 MK300V4加工的磁碟有無病毒,結果啟動KV300時直接插入的是誘因磁碟,而不是原廠磁碟,在這一案例中,導致誘因的磁碟實際屬於普通數據磁碟;
(4) 邏輯條件的判斷很可能失常,以江民炸彈為例,比如,軟盤驅動器的故障、磁碟的故障都是誘發邏輯炸彈的潛在因素。這雖然不是高概率事件,但卻具有不可控性。如果磁碟出錯導致錯誤讀取的數據恰好是破壞性的計算機指令,這種概率可以說就是零,而錯誤數據成為邏輯誘因的概率則高得多;
(5) 邏輯炸彈本身雖然不具備傳播性,但是誘因的傳播是不可控的。要靈活的多。假如病毒可以比作是自己運行的導彈,那麼邏輯炸彈則是一枚相對靜止的定時炸彈或充滿易燃品的軍火庫。盡管通過管制可以不爆發,但是不會有人願意住在核電站附近吧。所謂誘因不可控的例子很容易舉,比如類似技術使得類似磁軌出現在其他商業軟體程序中,甚至某個新的加密盤生成工具軟體所加工的磁碟都可以成為誘因,這是非常可能的事情;
(6) 新的病毒可以成為邏輯炸彈的新誘因,比如在軟盤拷貝(如KV300升級) 過程中,已經駐留而又沒有被發現的病毒可以給軟盤加工一下,使得正版磁碟成為誘因;病毒也可以駐留內存截獲相應的中斷服務程序,使得KV300 啟動後,實施病毒檢查之前,獲得盜版磁碟的假象。這就是生動的例子,說明除了零以外,其他數都可以被放大。而那些充當系數的因子本身不實施破壞或實質性破壞。
(7) 由於邏輯炸彈不是病毒體,因此無法正常還原和清除,必須對有炸彈的程序實施破解,這個工作是比較困難的。由於邏輯炸彈內含在程序體內,在空間限制、編寫方式、加密方式等各方面比編寫病毒要具有更加靈活的空間和餘地,所以很難清除。
(8)軟體邏輯炸彈或其他類似違法行為,會破壞類似產品或一個領域的相似產品的可信度。對於反病毒廠商,本來就具有很多傳聞,說一些病毒就是某些廠商所炮製,並且我國軟體市場還不成熟,的確應該象種地一樣,一邊種植從土地獲得養分,一邊精心培育和養護這個土地,如果土地傷了元氣,就無法種植新的作物了。對類似案件的處理不當或過輕,會引起激發感染,鼓勵其他軟體也使用類似非法行為進行版權保護。 與病毒、木馬的區別
病毒是通過自我復制進行傳播的計算機程序,自我復制是病毒的基本定義,病毒通常包括復制傳播機制和條件破壞機制,而後者不是必備的,所以也存在那些只傳染復制而不實施惡性破壞的所謂的「良性」病毒。而只破壞卻不能自我復制的程序不屬於病毒。典型木馬程序是以「冒充」來作為傳播手段的,比如經常說起的 PK-ZIP300就是典型的例子,它冒充是某個軟體的新版本,在用戶無意嘗試或使用的時候實施破壞。國際上比較先進的計算機反病毒軟體有些已經加進了對典型木馬程序的判別。
相比而言,邏輯炸彈要更隱藏一些。邏輯炸彈可以理解為在特定邏輯條件滿足時實施破壞的計算機程序。與病毒相比,邏輯炸彈強調破壞作用本身,而實施破壞的程序不會傳播。我們從定義上將能夠復制傳染的破壞程序歸屬在病毒中。與典型木馬程序相比,邏輯炸彈一般是隱含在具有正常功能的軟體中,而典型木馬程序可能一般僅僅是至多隻模仿程序的外表,而沒有真正的實際功能。當然,這些概念本身都具備一定的靈活性,在一定的條件下可以相互產生和相互轉化。我們也把邏輯炸彈發作的條件成為誘因、邏輯誘因。 硬碟邏輯炸彈其實是由於硬碟的主引導記錄被修改所引起的。因此,要想了解其原理就必須先了解主引導記錄。硬碟的主引導記錄位於0柱面0磁頭1扇區,它是由3部分組成的,其中從0h到1Beh這446個位元組稱為引導程序;從1Beh到1Feh這64個位元組被稱為硬碟分區表,一共可容納4個分區的數據;從1Feh到200h這2個位元組被稱為自舉標志,在啟動時BIOS檢查用的。後來我們檢查被炸硬碟的主引導記錄,結果發現:1?引導程序部分被修改了;2?硬碟分區表也被修改了,而且被改成一個循環鏈,即C盤的下一個分區指向D區,D區的下一個分區又指向C區,這樣一直循環下去造成一個死循環;3?自舉標志55AA沒被修改。
❾ 為什麼會有這么多調侃「程序員」這一職業的段子呢
因為網路都是程序員搞出來的,所以程序員是最早接觸網路的人群,在自家的後花園里開點小玩笑,挨著你了。