新手程序員必備十項技能
拉勾導(dǎo)讀:初出茅廬的你帶著仍殘留墨香的畢業(yè)證書踏上工作崗位,馬上就被書上沒寫的規(guī)則和各種繁雜的日常事務(wù)來了個下馬 威潭陪。這樣的故事實在是司空見慣,編程工作也不例外最蕾。沒有幾個學(xué)生能 100% 為自己的第一份真正的工作做好準(zhǔn)備(開發(fā)人員求職神器:URL)依溯。如果你不想成為其中之一,請學(xué)學(xué)以下這 10 項無需手把手指導(dǎo)就能學(xué)會的基本技能:
1瘟则、版本控制系統(tǒng)(VCS)
VCS 也許是計算機(jī)課程最大的疏漏黎炉。這些課程光記得教如何寫代碼,但卻往往忘記教學(xué)生如何去管理代碼醋拧。每一個程序員都應(yīng)該懂得利用 Git 或 Subversion 有效地創(chuàng)建 repository(倉庫)慷嗜,編輯與提交代碼淀弹,進(jìn)行分支與合并,了解項目工作流庆械。
2薇溃、學(xué)會寫作
身為程序員要寫的不只有代碼。你還要寫項目的發(fā)布說明缭乘,給版本控制寫提交消息沐序,在系統(tǒng)里面寫漏洞報告。這些和許多地方都需要清晰有效的文字交流—但這個技能計算機(jī)科學(xué)卻很少強(qiáng)調(diào)堕绩。
3策幼、正則表達(dá)式
正則表達(dá)式本身就是一門語言,每一個現(xiàn)代程序員都要擅長逛尚。每一門現(xiàn)代語言都支持正則表達(dá)式或者有相關(guān)標(biāo)準(zhǔn)庫垄惧。如果代碼需要校驗?zāi)匙址欠窈?5 個字符刁愿、1 個破折號和 1 個數(shù)字绰寞,你應(yīng)該馬上就能寫出 /^[A-Z]{5}-\d$/。
4铣口、庫的使用
現(xiàn)在已經(jīng)是 2014 年滤钱,所以沒人需要用正則表達(dá)式從 URL 析取主機(jī)名了。因為每一門現(xiàn)代編程語言都有執(zhí)行常用功能的標(biāo)準(zhǔn)庫脑题。
程序員需要明白件缸,那些經(jīng)過開發(fā)、測試和調(diào)試的代碼通常要比自己重新寫的代碼更好叔遂。更重要的是他炊,無需編寫的代碼實現(xiàn)起來要快得多。
5已艰、SQL
很多人的 SQL 都是在工作中學(xué)會的痊末。數(shù)據(jù)庫怎么會是選修課呢?有不用數(shù)據(jù)庫的嗎哩掺?
把 數(shù)據(jù)存進(jìn)平面文件的時代已經(jīng)結(jié)束了凿叠。一切東西都要進(jìn)出數(shù)據(jù)庫,而 SQL 則是存取數(shù)據(jù)的語言嚼吞。這是一門說明性語言盒件,不是程序語言,所以用它來解決問題時需要新的思考方式舱禽。每一個程序員都應(yīng)該了解數(shù)據(jù)庫標(biāo)準(zhǔn)化基礎(chǔ)炒刁,能夠執(zhí)行 SELECT(及 INNER、OUTER JOIN)誊稚、INSERT翔始、UPDATE 和 DELETE飒筑。
6、會用IDE绽昏、編輯器及CLI工具
只懂用鋸子的木匠永遠(yuǎn)也無法出師协屡,所以計算機(jī)專業(yè)畢業(yè)的人只懂 Notepad 或 pico 令人驚詫。編程工具幫助操縱代碼及其他數(shù)據(jù)全谤,令程序員生活變得容易肤晓。所以每一個程序員都應(yīng)該知道命令行、shell 腳本认然、find补憾、grep 及 sed 的使用。
7卷员、調(diào)試
每一個程序員都應(yīng)該知道利用交互式調(diào)試器或在代碼中點綴一些輸出語句來調(diào)試程序盈匾。通過逐步求精來跟蹤問題的能力實在是太重要了。
8毕骡、防錯性編程
錯誤總是難免的削饵,哪怕是明星程序員也不例外。失控是世界的常態(tài)未巫,出錯毫不奇怪窿撬。防錯性編程正是理解了這個事實。如果東西不會不出錯叙凡,我們就不會檢查文件打開成功與否劈伴,不會檢查客戶 ID 是否合法數(shù)字,不用測試代碼是否允許正確握爷。
程序員需要知道跛璧,編譯器告警是有用的工具,可讓我們生活得更舒適新啼,而不是要避而遠(yuǎn)之的麻煩事追城。每一個程序員都應(yīng)該知道為什么每一個 PHP 程序都要這樣開頭:
1set_error_reporting(E_ALL)
每一個 Perl 程序都要寫上這些語句:
1use strict; use warnings;
9、團(tuán)隊協(xié)作
很少編程工作會讓你自己一個人完成师抄,如果你經(jīng)常這么做漓柑,智力會受損,表現(xiàn)會變?nèi)踹端薄D愕拇a必須與別人的交互或者混合辆布。再有才的程序員,如果無法與別人協(xié)作茶鉴,都會給項目造成負(fù)面影響锋玲,并迅速成為組織的負(fù)擔(dān)。
10涵叮、利用現(xiàn)有代碼
在學(xué)校的時候惭蹂,每一次作業(yè)都是一個新項目伞插。但現(xiàn)實世界不是這樣的。對于剛工作的人來說盾碗,所接到的第一項任務(wù)往往是修改代碼漏洞媚污。然后,再在現(xiàn)有代碼庫的基礎(chǔ)上為現(xiàn)有系統(tǒng)增加一個小功能廷雅。設(shè)計新代碼那是幾個月后的事情耗美,如果幸運(yùn)的話。
做程序員航缀,僅僅成為碼農(nóng)是遠(yuǎn)遠(yuǎn)不夠的商架。下面是云和數(shù)據(jù)整理出的CTO、高層執(zhí)行人員和HR共同認(rèn)為程序員必備的13項技能和軟技能芥玉。
1****蛇摸、Java**
2016年,開發(fā)人員掌握J(rèn)ava絕對不會錯灿巧。Java能力是目前為止被高層執(zhí)行人員和HR譽(yù)為最頻繁的追捧技能赶袄。Java已被證明是當(dāng)今市場中高度可移植和寶貴的技能。
2****砸烦、大數(shù)據(jù)**
大數(shù)據(jù)相較于去年繼續(xù)擴(kuò)大弃鸦,而且在這幾年里也沒有任何放緩的跡象绞吁。開發(fā)人員必須有全面的商業(yè)智能和分析產(chǎn)品幢痘,機(jī)器學(xué)習(xí)工具和其他可以轉(zhuǎn)移、存儲和匯總大量數(shù)據(jù)解決方案的知識家破。只有這樣颜说,他們才能幫助公司存儲,交互和分析大數(shù)據(jù)汰聋,以便于做出更好的業(yè)務(wù)決策门粪。
3****、掌握全棧**
現(xiàn)在許多頂級公司都在尋求可輕松應(yīng)對各種技術(shù)和平臺的全棧開發(fā)人員烹困。
4****玄妈、涉及開發(fā)運(yùn)營**
熾熱的就業(yè)前景并不是考慮在簡歷中添加開發(fā)運(yùn)營經(jīng)驗的唯一原因:開發(fā)運(yùn)營實踐會讓你成為一個更優(yōu)秀的開發(fā)人員和一個更有價值的合作者。
開發(fā)運(yùn)營實踐還可以提高團(tuán)隊凝聚力和業(yè)務(wù)敏捷性髓梅,這是一種能讓企業(yè)加速領(lǐng)先一步的邊緣技能拟蜻。
5****、多樣化**
相比前幾年枯饿,現(xiàn)在的企業(yè)希望尋找更豐富的技能酝锅。Java和C#仍然占據(jù)市場部分份額,但是當(dāng)你去看那些在上次經(jīng)濟(jì)衰退之后成立的公司奢方,那么你將看到各種類型的語言需求:Ruby on Rails搔扁,Python / Django爸舒,Node.js,以及在出現(xiàn)的函數(shù)式編程語言中稿蹲,Scala是最普遍的扭勉。
6****、使用源**
特別是自由職業(yè)者苛聘,指向GitHub上的代碼剖效,能夠表明你的工作完成得很好,并通過了同行審查焰盗。
如果公司本身正在探索GitHub以便于添加技術(shù)到他們的堆棧璧尸,那么你不上誰上?
7****、敏捷**
敏捷開發(fā)應(yīng)該成為2016年程序員的必備技能熬拒。熟悉敏捷和精益方法——將大項目分解成小故事爷光,確定優(yōu)先排序,適應(yīng)變化澎粟,并提供最大價值蛀序。
8****、安全性**
根據(jù)研究報告活烙,去年深受安全漏洞之害的公司知道2016年什么技術(shù)對他們而言是最有用的徐裸。
隨著云計算使用的增長,安全性和合規(guī)性越來越為組織所擔(dān)憂啸盏,這導(dǎo)致了對安全重贺,合規(guī),治理和數(shù)據(jù)管理專家的需求熱潮回懦。
9****气笙、移動開發(fā)**
移動開發(fā)者備受追捧,尤其是那些可以廣泛發(fā)布自己作品的開發(fā)人員怯晕。要成為一個成功的移動開發(fā)者不是通過特定的技術(shù)技能來實現(xiàn)的潜圃,而是通過商務(wù)頭腦實現(xiàn)的倘感。
編寫代碼僅僅是項目的第一階段豹障。知道如何推廣移動app蔬芥,如何吸引和留住客戶说订,才是成功的推動力弄诲。
10****沫屡、云計算**
當(dāng)涉及到云計算中的職業(yè)機(jī)會時近上,它并不全部意味著工具爵憎。TEKsystems說客燕,企業(yè)希望招聘到有業(yè)務(wù)能力鸳劳,包括項目管理和與供應(yīng)商談判能力的開發(fā)人員,并且這將成為一種持久的趨勢之一也搓。
此外赏廓,我們需要更多“推動業(yè)務(wù)”類型的技能涵紊,但不太需要戰(zhàn)術(shù)工作,因為云供應(yīng)商現(xiàn)在越來越對此負(fù)責(zé)幔摸。
11****摸柄、物聯(lián)網(wǎng)**
現(xiàn)在的物聯(lián)網(wǎng)不但作為了一種雇傭需求,也是一種天才工程師想探索的技巧既忆。
而且這不再只針對嵌入式系統(tǒng)工程師驱负,你即使是一個Java開發(fā)人員,也可以做這個患雇。協(xié)議如Wi-Fi Halo跃脊,以及可穿戴和IoT設(shè)備開放輕量級SDK的出現(xiàn),為開發(fā)人員不再局限于顯示器和構(gòu)建針對周圍事物和環(huán)境的東西打開了很多機(jī)會苛吱。我們還可以看到由于這些工具的問世酪术,很多硬件/軟件開始協(xié)同設(shè)計。
12****翠储、有說服力**
客戶管理技能是很重要的绘雁,特別是巧妙但令人信服的推延能力,這在發(fā)布的替代品更有價值的時候很有用援所。也需要能夠教育客戶關(guān)于軟件性質(zhì)的口才庐舟,引導(dǎo)他們選擇可更好滿足他們長遠(yuǎn)目標(biāo)的做法。
13****住拭、變通**
如果你是團(tuán)隊中有著10x生產(chǎn)力又全棧的開發(fā)人員挪略,那么對你的服務(wù)要求比供給更多。但是废酷,如果你還是新手或正在轉(zhuǎn)行瘟檩,那么正確的態(tài)度可以讓你的面試—留用—錄用過程大不相同。
作為一個優(yōu)秀的團(tuán)隊成員澈蟆,應(yīng)該成為解決方案的一部分,而不是問題的一部分卓研,愿意伸手幫助團(tuán)隊成員趴俘,有一種志愿服務(wù)理念,并努力提高對團(tuán)隊有價值的產(chǎn)品或文化奏赘。