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