很多像這樣的日子,當地上積起厚厚的雪時,我通常會燃起鐵爐,把馬蹄跌燒的通紅,搓搓溫暖的手,開始打造特製手工馬蹄鐵。
經過了5年多的專職釘馬掌生活後,我開始問自己一個問題:我要一直這樣幹下去嗎?能不能幹點兒別的?我的性格跟其他鄉下那些叼著雪茄、喝著小酒的鐵匠不一樣,我從來沒有戴過牛仔帽或騎過公牛。我渴望的是知道更多的事情,琢磨更多的事情,做更多的事情。
成功從事開發工作 7 個月後,我已經給幾百人回覆了郵件,他們問我如何成為一個程式設計師的,尋求我的建議,他們想知道如何判斷自己是否適合去做一名程式設計師。
本文的作者 Joshua Kemp
下面羅列了7種特徵,是我從同事中最有效的程式設計師身上觀察到的,我知道,優秀的程式設計師都有很多共同之處:
1) 注意細節,尤其是最小的細節。
“差不多”、“很接近”是隻能在做馬蹄鐵時用的詞,在軟體開發中,95%的正確仍然是不能用,一個“差不多”能用方法或一個使圖片很“接近”居中的CSS樣式都是不合格、不能用的。這剩下的5%對於整個軟體的有效性十分重要,能造成完全相反的結果。
««« 如果你討厭細節,你就別去做程式設計師。
2) 學無止境
起初這句話聽起來會很迷人,你會很喜歡!我喜歡學習新事物!尤其是當你來自於一個無聊的工作或像釘馬掌這樣永遠不變的事情時 =-)。然而,經過了一段時間後,你會發現,這變成了一條永不停息的知識河流,如果你不喜歡水,你會感覺困在了無盡無邊的知識瀑布前,無法停止,也無法窮盡。我每天大概有學到10-20種新的東西,我喜歡這些!我的弟弟卻希望事情永遠不會變化,始終如一,他對我說他永遠都不願意去學程式設計。
««« 如果你不喜歡堅持不懈的去學習新事物,而喜歡待在一個永不變化的環境中,那你很可能成為不了一名程式設計師。
3) 面對壓力、緊張和限定期限
沒錯,每個人都喜歡使用軟體,但你喜歡面對任務的最後期限和最終目標嗎?需要什麼時候完成?做完這些要花多少時間?我們能在這段時間裡完成更多的任務嗎?是否還記得要注意細節?你怎麼辦?急匆匆的完成?加班加點希望能多完成一些?在理想世界裡,程式設計是一個很有趣的活動,我們寫出程式碼,讓它們完成很酷的事情,吃著批薩,喝著可樂。而在現實生活中,有的是壓力,雖然不是時刻都這樣,但事情會比那種做一個30分鐘的簡單線上輔導要不同的多。我喜歡挑戰我的極限,我渴望成長,變成一個更棒的程式設計師,所以我不介意。
««« 你面對時間限制和工作壓力會怎樣?如果你想回避這些壓力,那你將無法成為一名程式設計師。
4) 有組織能力
我知道有些程式設計師的生活一塌糊塗,看起來他們似乎沒自我組織能力,但我說的不是這些,我是說管理好工作流程的能力。比如,能否迅速容易的在你的計算機裡找到一個東西?我認識的優秀的程式設計師通常能迅速的定位一個需要的檔案,能夠用工具或指令碼幫他們處理繁雜的事物,這些都是高效的工作。
««« 當你學到了一個新東西時,你是否把它寫下來?你是否喜歡想出辦法來替你完成那些重複的工作?你能很好的安排各種不同的任務嗎?如果不能,那你就不適合去當一名程式設計師。
5) 好奇心
當我還是十幾歲時,教堂裡的一位夫人幾乎每月都會對我說一次,她說我應該停止問那麼多為什麼,她說這讓人討厭。雖然受了批評,最終我還是清楚的認識到,優秀的程式設計師總是在問“為什麼?”這個應用的工作原理是什麼?那個橫跨街道的建築是怎麼建起來的?程式設計師之間的對話聽起來總是像這樣開始的:“很奇怪他們為什麼要這樣做…?”以前我以為問這麼多為什麼是很奇怪的表現,但現在我明白,至少是在軟體開發中,這是一個好的品質。
««« 不明白的事情會引起你的好奇心嗎?新事物會讓你興奮的想搞清楚它的原理嗎?如果你不具有某種程度天生的好奇心,那麼你就很可能不喜歡做一名程式設計師。
6) 自學
我知道,很多的程式設計師都上過大學,出自高校的,但這不是我要說的。優秀的程式設計師總是在鑽研程式程式碼和文件,來弄清楚東西的工作原理,他們不會敲開老闆辦公室的們說:“我需要上培訓課,學習這款新軟體”。優秀的程式設計師在不斷的學習,不斷的靠自己研究出事情的原委——不論是有高學歷還是沒有學歷。
««« 如果你需要有人教你,或者等著參加熱門的課程去學知識,那你很可能不會成為一名程式設計師。
7) 人際交往能力
這在程式設計師中不是一個普遍的特徵。真正優秀的程式設計師善於與人交往,但大多數程式設計師缺乏這些能力。如果你善於溝通,你的老闆、你的公司會非常喜歡你。而且,不要因為他們不會編碼就瞧不起他們。
««« 如果你不喜歡與人接觸,跟別人在一起時覺得很難受,那你也許就不應該成為一名程式設計師。