如果每天和代碼相處的你真心覺(jué)得自己很苦逼,那么你應(yīng)該考慮考慮自己是否適合這個(gè)職業(yè)了.如果不是出于熱愛(ài),這真的是一份難以堅(jiān)持的工作.飛速更新的知識(shí)會(huì)讓你一不留神就被行業(yè)甩在身后.
在我看來(lái),合格的程序員至少應(yīng)該具備以下三種修養(yǎng):
- 第一、不斷學(xué)習(xí)、提升技能的意識(shí)
真實(shí)世界中的程序員們, 不僅不是段子中邋遢、死宅、不懂風(fēng)情、加班無(wú)止境的屌絲,(那些大都是人家富于娛樂(lè)精神的自黑,只不過(guò)說(shuō)得多了大家便信以為真).我眼中的程序員群體是一群積極、善于學(xué)習(xí)、追求進(jìn)步(偶爾還是有些悶騷)的卓越青年。
因?yàn)樗麄冎?沒(méi)有一個(gè)技能可以讓你一勞永逸,大部分的人都保持著對(duì)技術(shù)的敬畏之心,學(xué)習(xí)更新的技術(shù),學(xué)習(xí)牛人的思想,學(xué)習(xí)先進(jìn)的框架,從而追求更簡(jiǎn)潔的代碼,更優(yōu)美的實(shí)現(xiàn),更健壯的架構(gòu)。他們相信無(wú)論是自己還是還是自己的程序,永遠(yuǎn)還有優(yōu)化的空間。而且你會(huì)發(fā)現(xiàn)越接近大神的人越表現(xiàn)出謙遜的態(tài)度和學(xué)習(xí)的積極性。站在山頂?shù)娜藭?huì)覺(jué)得個(gè)人的渺小,學(xué)到越多的東西越覺(jué)得自己的無(wú)知,這就是程序員的境界。
- 第二、堅(jiān)持鍛煉、強(qiáng)健身體的自覺(jué)性
相對(duì)于其他工作, 這一點(diǎn)對(duì)于程序員們來(lái)說(shuō)更為重要.
我們的工作面對(duì)電腦的時(shí)間長(zhǎng)于一般的工作, 有時(shí)候入了迷可能幾個(gè)小時(shí)動(dòng)都不動(dòng).當(dāng)時(shí)可能沒(méi)有察覺(jué),長(zhǎng)此以往便會(huì)則腰酸背痛、容易疲勞, 重則腿部浮腫、臀部變形、身體素質(zhì)大打折扣.
運(yùn)動(dòng)是最好的保養(yǎng)品,不管是什么樣的職業(yè), 堅(jiān)持運(yùn)動(dòng)會(huì)讓你在事業(yè)的道路上跑得更輕松更愉快更長(zhǎng)久.經(jīng)常運(yùn)動(dòng)的人在工作的時(shí)候會(huì)更專(zhuān)注,而且工作起來(lái)不容易感到疲勞,這點(diǎn)我有切身的體會(huì). 很多行業(yè)內(nèi)的名人都在堅(jiān)持每天運(yùn)動(dòng), 他們的成功和抗壓力的能力與運(yùn)動(dòng)不無(wú)關(guān)系.不管是為了健美,還是為了身體不垮,你都應(yīng)該動(dòng)起來(lái).搞不好一個(gè)不小心練出一身腹肌, 妹子也會(huì)隨之而來(lái).
- 第三、較好的語(yǔ)言表達(dá)能力
我想說(shuō)的語(yǔ)言表達(dá)能力不是指?jìng)€(gè)人的口才或者演講的能力,而是指作為程序員解答問(wèn)題和提出問(wèn)題的能力, 進(jìn)一步延伸便是與其他同行交流的能力.
解答問(wèn)題的能力就是在別人向你求助的時(shí)候,你可以快速地知悉對(duì)方的疑惑點(diǎn),懂得如何用最簡(jiǎn)單明了的方式解答對(duì)方的疑問(wèn).
而懂得如何提問(wèn)則有著更高的技術(shù)含量.
一般來(lái)說(shuō), 在問(wèn)問(wèn)題的時(shí)候比較容易犯兩種類(lèi)型的錯(cuò)誤.
第一種 提的問(wèn)題太寬泛.
文件上傳不成功是什么原因? 放到某地的imageView怎么顯示不出來(lái)?為什么我使用XX框架做XX事情有時(shí)可以成功有時(shí)不可以成功...
這些讓人蛋疼的問(wèn)題會(huì)讓被提問(wèn)者在回答你的問(wèn)題之前先花上好多時(shí)間來(lái)搞清楚你想問(wèn)的到底是什么,浪費(fèi)彼此的時(shí)間和生命.第二種 在已經(jīng)跑偏的道路上提問(wèn)細(xì)節(jié).
小明同學(xué)在做的功能中需要將服務(wù)器返回的數(shù)據(jù)進(jìn)行處理.服務(wù)器返回是NSData類(lèi)型的數(shù)據(jù),小明通過(guò)將NSData轉(zhuǎn)化成NSString打印出來(lái)發(fā)現(xiàn)返回?cái)?shù)據(jù)是正常的:{"username":"xiaoming","tel":"152"}
.
然后小明犯難了,我要怎樣取到這里面的用戶(hù)名并存儲(chǔ)下來(lái)呢?小明之前聽(tīng)說(shuō)有個(gè)叫正則表達(dá)式的東西好像就是做這種事情的,這次試著用一下還有機(jī)會(huì)裝裝13.于是他向公司的大神請(qǐng)教正則表達(dá)式的用法.大神看小明很愛(ài)學(xué)習(xí),變拿出了自己珍藏多年的<正則寶典>送給小明.小明對(duì)著寶典研究了一天也沒(méi)研究出怎么解決他的問(wèn)題.于是他打算放棄正則這條路,開(kāi)始研究怎樣截取字符串.然后他又向大神提供了一系列關(guān)于字符串處理的問(wèn)題.
大神感覺(jué)今天的小明問(wèn)的問(wèn)題不太正常,便順嘴問(wèn)了一下他在做神馬.結(jié)果發(fā)現(xiàn)小明只是想解析json數(shù)據(jù)而已,大神哭笑不得.
這是我杜撰的一個(gè)情景,很多人包括我自己一開(kāi)始都容易犯這樣的錯(cuò)誤:在已經(jīng)跑偏的道路上鉆細(xì)節(jié).所以我會(huì)建議在向不了解你項(xiàng)目的人提問(wèn)之前可以先大概說(shuō)下你想實(shí)現(xiàn)的功能是什么樣的.
此外還有一些典型,在論壇提問(wèn)的時(shí)候由為常見(jiàn).比如直接貼了幾百行代碼問(wèn)有什么問(wèn)題的; 比如直接丟了兩個(gè)截圖問(wèn)為什么這樣的...等等.
我覺(jué)得一次比較合理的提問(wèn)應(yīng)該讓被提問(wèn)者接收到以下信息:
-
你在做一個(gè)什么樣的功能,期望的效果是什么樣的.(簡(jiǎn)明扼要,一兩句話(huà)概括)
遠(yuǎn)程提問(wèn)時(shí)候這點(diǎn)尤為重要,可以把被提問(wèn)者迅速帶入到問(wèn)題中來(lái).此外還可以避免上面提到的問(wèn)題跑偏的情況.
-
現(xiàn)在出現(xiàn)了什么樣的問(wèn)題.
如果是當(dāng)面問(wèn)問(wèn)題,可以將程序運(yùn)行起來(lái)展示問(wèn)題所在;如果是遠(yuǎn)程問(wèn)問(wèn)題或者在論壇上面問(wèn)問(wèn)題,必要的情況可以選一張能夠表明情況的圖片(如報(bào)錯(cuò)信息的截圖或程序正常和不正常情況下的對(duì)比圖片)并做適當(dāng)標(biāo)注.
-
你做了什么樣的嘗試
這個(gè)信息有助于被提問(wèn)者排查問(wèn)題原因.
-
關(guān)鍵代碼或者實(shí)現(xiàn)思路
如果能定位到是某段代碼的問(wèn)題,你可以指出代碼位置,如果遠(yuǎn)程或者論壇上可以復(fù)制一段關(guān)鍵代碼.切記一定是關(guān)鍵代碼
,幾百行幾千行地往上貼那就只能呵呵了.
如果涉及的代碼范圍比較廣,可以大致描述下實(shí)現(xiàn)此功能的思路.然后載關(guān)鍵的地方展示一些代碼就可以讓被提問(wèn)者以最快的速度幫你定位問(wèn)題.
當(dāng)然這些信息要根據(jù)你與被提問(wèn)者的關(guān)系,問(wèn)題的復(fù)雜程度等因素進(jìn)行增加或者減少.
如果是和你一個(gè)項(xiàng)目組的同事,就可以直奔主題說(shuō)問(wèn)題; 如果是求助網(wǎng)友,可能需要先讓他了解功能大致情況.如果是比較大的功能模塊(如后臺(tái)下載)可以介紹思路,如果你只是想問(wèn)label文字如何居中還先把項(xiàng)目介紹一遍那仍然是在浪費(fèi)別人生命.
前面提到其他同行交流的能力, 包括但不局限于程序員之間的交流,還涉及到程序員與產(chǎn)品經(jīng)理、項(xiàng)目負(fù)責(zé)人之間的交流,有時(shí)候可能還會(huì)有和用戶(hù)之間的交流.程序員不應(yīng)該是一個(gè)獨(dú)立的個(gè)體,溝通交流的過(guò)程就可以看到自己的提升.
所以,噪起來(lái)吧.