工匠精神,一方面,指的是工匠們對本身的產品精雕細琢、精益求精的精神:「工匠們對細節有很高的要求,他們追求完美和極致,努力把品質從99%提升到99.99%。」另外一方面,指的是整個社會對能工巧匠由衷的敬意,給予較高的社會地位。而現代西方以製造業立國,必定意義上,製造業文化就是工匠文化,尤爲是高端製造業,每每須要從業者乃至整個社會具有一種所謂的「工匠精神」。而工匠精神放在程序開發上面來看,是對本身程序的精雕細琢,對本身的程序負責,以及對程序的敬畏心態等各方面。程序員
其實,寫好程序並無過高深的學問,不少時候,一個問題無法解決,或程序出bug的,每每是細節沒有作好。古人有云「一屋不掃,何以掃天下」,一我的的能力提高,每每也是從細節積累,量變而達到質變,首先有量的積累,而後就會有質的改變,而這個過程,幾乎每一個程序員都會經歷過這樣的過程。設計模式
而不少人在作開發,每每是和別人比,誰誰誰又學習了什麼新東西,而後本身必定要想辦法超越,而後又開始扎入另一頭去研究,而後各類基礎的理論,什麼架構啊,設計模式啊,基本上都懂一些,而其實並無進行深刻的研究,彷佛懂得不少東西,而後本身也就會有種飄飄然的感受。固然,不斷的去研究新東西,這種態度,我以爲對於程序員來講,是一種很好的態度,可是不能捨棄從細節處的研究。架構
具體的如何從細節處研究,該怎麼樣在細節上面進行雕琢,我在此能夠大概舉一些例子或是一些狀況進行描述一下。好比,在實現菜單點擊按鈕的時候,通常來講,點擊後就彈出子菜單,而後點擊菜單能夠進行一些操做,但若是帶着工匠精神去作,應該要考慮用戶在長按的時候會不會有其餘操做,用戶按下去以後,顏色是否須要改變,長度高度是否須要改變,而後點擊後加載菜單的底層應該如何實現達到相應更快更高效,是否須要驗證權限是否能夠點擊這個菜單?等等,這就是從細節方面進行深刻的思考,我以爲這就是程序員細節上該有的工匠精神。工具
對有的人來講,是玩程序;對有的人來講,是被程序玩;通常來講,就是分爲這兩種狀況,但絕大部分人但願本身是在玩程序。我以爲想要玩程序,應該須要抱有一種敬畏的心態。這做何解釋呢?看似與玩程序有衝突,實則否則。其實,若是你敬畏他,那麼你就能更好的發現問題,發現本身的不足之處,而也才能作到更當心。而我記得也有一句諺語描述了大體是這樣的一件事情:越是會游泳的,每每不是死於大江湖海,而是死於溝渠。而其實對於任何人來講,都看似不可能會發生錯誤的地方發生錯誤,而在看似會發生錯誤的地方反而不會發生錯誤,這是爲何呢?由於,越容易犯錯誤的地方,人就會越謹慎,越敬畏,而在看似不會犯錯的地方,就每每會疏忽、自大,天然就出問題了。學習
而在寫程序上的敬畏,我這裏也大體說明一些例子來描述這些事情。好比寫一個你常常寫的功能,都應該作一下測試,看是否達到預期的效果,由於有可能你寫的時候會大意,形成語法不對(通常人可能會說,用的IDE,不太可能出現這種狀況沒發現錯誤),或者因爲環境配置問題甚至是SDK版本不同而形成問題等等;而工做中,出錯了,首先不要急於回答不是本身的錯誤,先思考而後在回覆是否是本身的錯誤,解決方案是什麼樣的,而後進行總結,最好是整理成筆記,記錄詳細的錯誤表現和解決方案;這些都是對程序的敬畏,由於敬畏,因此認真。測試
我在上面的敬畏心態裏最後提到一個關於錯誤的態度問題,這裏,我對總結方面進行一下分析和大體分析一下如何去作。設計
開發,其實總結分爲不少方面。一方面是在學習新東西過程當中,與當前學到的東西或是結合本身的經驗、經歷對當前所學進行對比,總結;另外一方面就是對錯誤進行總結,再者,就是對本身想到的解決方案進行解決;其餘方面的總結。開發
而總結,我以爲很是重要的一點,就是造成文字,並作詳細的描述,能夠寫在博客或發到技術論壇,或者是紙質筆記本記錄,等等。若是是能分享出來,一方面能幫助別人,一方面能夠獲得更好的建議,再者就是能夠作更詳細的反思,這些都是不錯的。若是不作總結,基本上下次一般會再犯,而後不斷的進行迭代犯錯過程,也許多犯幾回會自動跳出這種犯錯迭代。文檔
而總結以後,不去看,不去回顧,也是沒有卵用的。總結了,能夠針對印象快淡了的,進行選擇性的查看,反思,也許能溫故而知新,或者會想出其餘一些點子。而我每每也是經過這種總結,而後就會誕生一些如何讓開發更高效的想法,而後就會思考能不能寫一個自動化工具來讓開發更高效,或是能不能造成更好的規範化文檔,等等。博客
本文我大體分爲了幾個方面對程序員的工匠精神進行了一些分析,以及如何去作等方面舉了些稍微具體的例子,但願分享出來能給其餘人一些幫助,而且本身之後能進行回顧和分析,思想能提升到更高的層次。