引言
“哦,天那贤笆。相比其他開發(fā)者蝇棉,我又笨又沒準(zhǔn)備。老板會知道我是多么無能芥永,我要被炒魷魚了篡殷。”
這種想法埋涧,在我們作為一名軟件開發(fā)人員剛進(jìn)入工作領(lǐng)域的時(shí)候板辽,非常常見。我也不例外棘催。這種想法會讓人覺得自己不如其他的開發(fā)者劲弦,感覺自己是濫竽充數(shù)的,感覺自己像一個(gè)全面的傻瓜醇坝,當(dāng)涉及到寫代碼的時(shí)候邑跪。
在短短的幾個(gè)月后,我第一次獲得一份真正編程工作的興奮——改善和維護(hù)一個(gè)基于web的研究平臺——終于變成了絕對的恐懼呼猪,那些消極負(fù)面的想法在我的腦海里不斷地涌入画畅。即使在我去了更大節(jié)奏更快的組織機(jī)構(gòu),以及之后終于開創(chuàng)了我自己的企業(yè)宋距,這些想法也在不斷地蠶食我轴踱。
我總是覺得自己寫的每一行代碼都那么笨重,低效乡革,如果展示給任何其他有才干的開發(fā)者看絕對會被批判得體無完膚寇僧。我感覺自己很笨,他們發(fā)現(xiàn)這一點(diǎn)不過是時(shí)間問題沸版。
聽起來很熟悉嘁傀?如果你有我這種想法,有絕大多數(shù)軟件開發(fā)者都有的這種想法视粮,很大的可能是會惶惶而不可終日细办。
下面我要介紹一些我發(fā)現(xiàn)的有助于,你作為一個(gè)初出茅廬的開發(fā)人員,提升你自己和你的職業(yè)生涯前景的關(guān)鍵策略笑撞,并在推動職業(yè)發(fā)展時(shí)保持一種健康的心態(tài)岛啸。
作為一個(gè)初出茅廬的開發(fā)人員提升自己和職業(yè)生涯前景
無論你是正在找你的第一份工作,還是盯上了潛在的晉升茴肥,在一定程度上你都需要與其他的開發(fā)者競爭坚踩。為了確保你能從中脫穎而出,這里有一些關(guān)鍵的步驟可以幫助你邁向成功瓤狐。
1.找一種你喜歡用到工作中的語言瞬铸。
要成為一個(gè)更優(yōu)秀的程序員,需要定時(shí)經(jīng)常性地練習(xí)編程并用不同的語言和技術(shù)擴(kuò)寬你的經(jīng)驗(yàn)础锐,但是語言是如此之多嗓节,很多時(shí)候你不知道從哪里開始,也不知道該選擇什么語言才最適合你要解決的問題風(fēng)格皆警。
如果你還沒有想好具體的語言拦宣,并且想要先試驗(yàn)下的話,我會建議你搜索求職網(wǎng)站信姓,例如Stack Overflow Careers鸵隧、Indeed和Monster,看看是什么語言最搶手财破。如果你想或者目前的職位要求的話掰派,你可以牢牢掌握一些特定的語言从诲,然后開始研究和試驗(yàn)左痢。
The TIOBE Index可用來查看哪些語言更受歡迎
當(dāng)我開始我的第一份工作的時(shí)候——一個(gè)基于web研究平臺的開發(fā)者——我進(jìn)入了學(xué)習(xí)的陣營:雖然我有足夠的技能在面試時(shí)通過編程測試,但是這份工作要求我加強(qiáng)PHP系洛、JavaScript和SQL技能俊性。于是下班后以及周末,我都會磨練自己在那三方面的技能描扯,以便于能夠在工作中表現(xiàn)良好定页,能夠擁有更多基于web開發(fā)的機(jī)會,而這些對于我現(xiàn)在能夠擁有和打理我自己的web開發(fā)公司有很大的貢獻(xiàn)绽诚。
不管你恰巧遇到或選擇了什么語言典徊,關(guān)鍵是經(jīng)常練習(xí)。嘗試不同的語言恩够,通過一些小例子編碼卒落,然后用它們構(gòu)建小的項(xiàng)目。一旦你找到了能與你產(chǎn)生共鳴的一種或一系列語言以及如何處理問題的方法蜂桶,堅(jiān)持下去儡毕,并經(jīng)常性地定期實(shí)踐練習(xí)。
2.發(fā)現(xiàn)問題或任何讓你覺得生氣的事情扑媚。
正如隨著我職業(yè)生涯的向前邁進(jìn)腰湾,我進(jìn)入了一家大的臨終護(hù)理組織雷恃,擔(dān)任web開發(fā)者。雖然我的工作主要是改善和維護(hù)我們的在線計(jì)費(fèi)和CRM系統(tǒng)费坊,但是許多醫(yī)務(wù)人員經(jīng)常抱怨:病人總是報(bào)告說系統(tǒng)運(yùn)行得異常緩慢倒槐。這讓我很生氣,它讓員工更生氣——因?yàn)椴坏貌蝗バ迯?fù)附井。
臨終護(hù)理幾乎純粹運(yùn)行在微軟技術(shù)上导犹,并且數(shù)據(jù)庫也不例外——Microsoft SQL Server(MSSQL)。雖然它不是我感覺最舒服的查詢語言羡忘,但是我依然在家里研究谎痢、閱讀、練習(xí)構(gòu)建小型的MSSQL項(xiàng)目卷雕。通過我的努力节猿,我漸漸能夠建立一些示例報(bào)告來向數(shù)據(jù)庫管理員展示報(bào)告可以如何改進(jìn)。隨著時(shí)間的推移漫雕,我?guī)椭鷮?shí)現(xiàn)的優(yōu)化促使我得到了晉升滨嘱,通過修復(fù)那個(gè)問題學(xué)到的技能幫助我獲得了一份數(shù)據(jù)庫管理的工作。
和一種語言一起成長和點(diǎn)燃學(xué)習(xí)激情的最好辦法是浸间,使用你學(xué)到的知識來幫助解決令你感到苦惱的問題太雨。不僅要學(xué)習(xí)語言本身,也要學(xué)習(xí)語言可以如何應(yīng)用到實(shí)際生活中的問題魁蒜。
3.公開發(fā)布到Github或其他公共代碼平臺上囊扳。
即使你不認(rèn)為有人會使用它,喜歡它兜看,或者甚至看上一眼锥咸,還是要發(fā)布你的代碼,一旦你覺得它達(dá)到生產(chǎn)標(biāo)準(zhǔn)的話细移。你的項(xiàng)目可能不會改變世界搏予,但它可以讓你脫穎而出,讓你可以坦然對待別人查看和批評你的工作弧轧。此外雪侥,它可以讓你的簡歷增色不少。
4.寫博客精绎,展示你正在學(xué)習(xí)的東西速缨,怎么學(xué)習(xí)以及為什么。
向世界(以及將來的雇主)展示你正在學(xué)習(xí)捺典,以及你有主動的學(xué)習(xí)意愿鸟廓,就可以讓你領(lǐng)先于95%以上的同行業(yè)開發(fā)人員。你也可以練習(xí)你的寫作技巧,這個(gè)過程也能讓你學(xué)到很多關(guān)于自我方面的東西——你如何處理問題引谜,如何分解和解決牍陌。你還需要整理一下你常用的思考方式,如何學(xué)習(xí)和成長员咽,以及如何取得進(jìn)步毒涧。
5.在軟件開發(fā)社區(qū)中表現(xiàn)活躍。
解決問題贝室,看別人怎么解決問題契讲,說出自己的聲音和意見。我通過Stack Overflow和編程社區(qū)做到這些滑频。這還不是最寬容的文化捡偏,因?yàn)槟銓龅揭恍┓浅Q奂獾拈_發(fā)者咆哮你怎么在偽代碼中忘記了后面那個(gè)括號,但這能讓你與其他的開發(fā)者交流峡迷,使得具備接受誠實(shí)(有時(shí)是殘酷)批評的經(jīng)驗(yàn)银伟,并知道其他人可能會如何處理問題,從而打開思考問題的新思路绘搞。
6.學(xué)會如何簡明扼要地解釋給技術(shù)和非技術(shù)人員聽彤避。
我總是聽到大家說溝通是實(shí)現(xiàn)職業(yè)成功時(shí),要掌握的最難和最重要的事情之一夯辖。在早期琉预,我認(rèn)為這是無稽之談——只是跟人講電話,會議期間交談蒿褂,發(fā)送電子郵件能有多難圆米?任何有著專業(yè)溝通經(jīng)驗(yàn)的人都會對這種看法嗤之以鼻,我現(xiàn)在也會贮缅。你會驚訝地發(fā)現(xiàn)誤解的快速突然出現(xiàn)榨咐,工作流程是如此之復(fù)雜,以及項(xiàng)目進(jìn)程的拖延谴供。
要真正掌握高效的溝通,你需要對實(shí)際工作中你需要工作于什么有一個(gè)基本的了解(我強(qiáng)烈推薦Charles Petzold的《Code》)并彼此交互齿坷。寫博客桂肌,并與編程社區(qū)互動有助于有效地提高溝通能力。
如果你能掌握簡練永淌,實(shí)事求是崎场,通俗易懂(如果需要的話)的溝通方式,并將復(fù)雜的問題和解決方案分解為可理解和很小的塊遂蛀,那么你就能在軟件開發(fā)領(lǐng)域立于不敗之地谭跨。你會發(fā)現(xiàn)項(xiàng)目經(jīng)理,其他的程序員,以及執(zhí)行主管等都會爭奪你去他們的團(tuán)隊(duì)螃宙。
保持健康的心態(tài)
專業(yè)軟件開發(fā)人員的成長之路沒有一條不充滿著荊棘和困難蛮瞄,所以你很容易掉入不健康的自我思考和職業(yè)選擇的陷阱。通過了解每個(gè)人都會有的專業(yè)的不安全感谆扎,可以在你對自己失去信心的時(shí)候更好的激勵(lì)自己挂捅。
1.要知道,每個(gè)人都感覺自己像騙子堂湖。
你在你的職業(yè)和生活中遇到的每個(gè)人都在與騙子綜合征做斗爭闲先。我們每個(gè)人都覺得自己正處在被發(fā)現(xiàn)自己是騙子,然后被公開批評無能的邊緣无蜂。了解這一點(diǎn)能在精神領(lǐng)域幫助你覺得公平伺糠,而且還能幫助你認(rèn)識到,每一個(gè)做過值得夸耀的事情的人曾幾何時(shí)的想法就和你現(xiàn)在一樣斥季。
這種心態(tài)可以幫助你堅(jiān)持下來退盯!如果再加上具有建設(shè)性的渠道方法——學(xué)習(xí)新的語言,開發(fā)方法泻肯,以及解決問題的方法——你的整個(gè)職業(yè)生涯都將有極大的提高渊迁,并且能夠快速讓你成為技藝大師。
2.知道自己會陷入困境灶挟。
毫無疑問琉朽,就是在編程中我終于接受了我是人這個(gè)事實(shí)——我也有犯迷糊,笨手笨腳稚铣,錯(cuò)誤頻出的時(shí)候箱叁。沒錯(cuò),你也是如此惕医。你會錯(cuò)過最后期限耕漱,太多次點(diǎn)擊“全部回復(fù)”,滑動捕捉一些嚴(yán)重的錯(cuò)誤抬伺,或者在應(yīng)用程序架構(gòu)中輕易放過一個(gè)令人難以置信的bug螟够。
要想保持快樂和健康,那就得讓自己去分析錯(cuò)誤峡钓,然后從中學(xué)習(xí)妓笙,還要應(yīng)用所學(xué)的東西以便于下次完成得更好。
3.設(shè)身處地地思考能岩。
我第一次被老板罵的時(shí)候寞宫,你知道我是怎么做的嗎?我快速回到我的辦公室拉鹃,鎖上門辈赋,然后哭了鲫忍。我覺得我是有史以來最糟糕的程序員,并且開始擔(dān)心自己會不會被炒魷魚钥屈。但之后悟民,項(xiàng)目經(jīng)理走進(jìn)我的辦公室,向我解釋說我的進(jìn)程和項(xiàng)目迄今都很好焕蹄。老板只是剛剛發(fā)現(xiàn)她的女兒病的厲害逾雄,上司又剛剛指責(zé)了她的過失,然后又雪上加霜地被起訴離婚了才這樣腻脏。好吧鸦泳。
當(dāng)我知道了我的老板的這些經(jīng)歷時(shí),我對自己的自我懷疑和擔(dān)心立即一去無蹤永品。如果是我在那樣的情況下做鹰,我很有可能也會做出相同的反應(yīng)。
感同身受是一個(gè)程序員和一個(gè)人成功的根本鼎姐。了解客戶和用戶的真正需求钾麸,或者知道上司所身處的壓力,可以讓你明白他們的行為原因炕桨。還可以讓你知道你該如何提供有價(jià)值和可解決問題的方法饭尝,展示你的能力。
作為一個(gè)剛剛起步的軟件開發(fā)者献宫,循著我的建議钥平,你的面前已經(jīng)有了一條康莊大道。編寫偉大的代碼以及遵守行業(yè)內(nèi)的相關(guān)規(guī)定姊途,需要你幾乎每天來直面自己的弱點(diǎn)涉瘾,并要求你不斷提高自己。
你可能會和其他人一樣不時(shí)地動搖捷兰,并且盡管我們已經(jīng)討論了一些步驟和策略立叛,你還是會陷入消極思想的泥潭——這是完全正常的現(xiàn)象。
只要你能全身心投入贡茅,持續(xù)改善提高秘蛇,認(rèn)識到自己不過是個(gè)人,能夠設(shè)身處地地思考友扰,你將會步入行業(yè)最值得尊敬和最有成就的開發(fā)者的行列彤叉。