成為軟件工匠
英文原文:Becoming Software Craftsmen
作者 Ben Linders ,譯者 夏雪
軟件工藝活動探討了把實踐作為開發編程技能以成為軟件工匠的一種方式。大家都認為技術實踐非常重要,它值得花時間去學習,以成為更好的程序員。
軟件工藝宣言是這樣說的:
作為有追求的軟件工匠,我們正在通過實踐不斷地提升專業軟件開發水平,并幫助其他人學習這門工藝。在工作過程中我們總結了以下的價值觀:
不僅要讓軟件工作,更要精益求精。
不僅可以響應變化,更要穩步增加價值。
不僅要有個體與交互,更要形成專業人員的社區。
不僅要與客戶合作,更要建立卓有成效的伙伴關系。
也就是說,左項固然值得追求,右項同樣不可或缺。
</blockquote>Chris ODell 在博客上發表了一篇名為 the codesmith(代碼匠)的文章,分享了他對工匠定義的看法:
“按照我的理解,工匠不僅僅是拿選定的材料從無到有地創造出一些什么東西,而是通常會把屬于他們自己的一些什么東西融入進去。一名好的工匠會花時間 和精力去做些優秀的東西,它們值得我們這樣去做,在精心打造出來產品之后有些方法仍然可以傳承下去。優良的工藝就是高質量產品的代名詞。”
</blockquote>仿照金匠和鐵匠,Chris 杜撰了一個名詞叫作代碼匠,他說“這代表工藝達到了一定的水準,代表著從學徒走向大師之旅中的一種進展。”他后續又在博客中發表了一篇名為任何人都可以成為代碼匠的文章,他說明了代碼匠可以如何自我提升以成為代碼巨匠:
“成為代碼匠的門檻應該要低一些。這也就是為什么我說無論以什么形式寫代碼的人都可以稱之為代碼匠的原因。我們應該追求工藝的理想,并具有適度的實用主義,花時間去學習技能并且進行實操練習以成為好的編碼者。”
</blockquote>今年早些時候,InfoQ 就《敏捷技術實踐的重要性》發表了一篇新聞,在這篇新聞中參與工藝運動的幾個人強調了技術實踐的重要性:
Matt Badgley:“我們需要重申敏捷工程良好實踐的重要性,并且擁抱工藝的理念——沒有這個,就不可能實現敏捷。”
Robert Martin:“如果你們不使用極限編程的 13 個初中,那么你們最好使用一些別的好實踐甚至是更好的實踐。你們使用的實踐定義了你們的文化,表現了你們的價值。”
Ruud Wijnands:“很多公司應用敏捷時采用了所有有價值的、已實現的技術實踐,我看到了他們在這一方面取得的成功。不這么做的公司很少有成功的。”
</blockquote>程序員如何開發他們的技能以成為一個軟件工匠呢? John Sonmez 寫了一篇名為為什么我不使用編碼招式的博客,在這篇文章中,他說程序員重復做同樣的事情無法提升他們的技能。你要去學些什么,水平必須要持續地提升:
反復不斷地重復寫代碼去解決同樣的編程問題,這就是在做完全相同的事,除非新的約束和變化給你帶來了新的挑戰,你只能從第一次的經驗中有所收獲,而從第二次開始基本就是簡單地重復了。
(……)如果你想要做得更優秀,重復實踐是遠遠不夠的。你必須在實踐中增加更多的難度和挑戰。
</blockquote>按照 John 的說法,實操是提升技能的好方法。程序員必須去寫程序才能成為軟件工匠:
我收到了很多郵件,他們咨詢我學習編程的最佳方式是什么,或者如何提升他們的技能。最近,我收到很多郵件詢問我如何學習安卓開發。你知道我是如何回復這些好奇的心靈的嗎?
去做安卓應用。
但是,嗯,我應該去看什么書呢?
不需要看什么書,只需要迸發一個想法然后去嘗試實現它。一步步實踐,解決過程中遇到的問題。當你卡殼時,就去找找答案或者尋求幫助。
</blockquote>Steve Ropa 寫了一篇關于培養軟件工匠的文章。大學傳授了軟件開發的理論。為成為程序員工匠需要增加“現實世界的經驗和知識的應用實踐”,Steve 說。學徒工計劃能夠為此做出準備:
我的建議是讓時間倒流,我們穿越回一百年前,把你們的工作間變成一個車間。我們需要把工匠安置到車間中。開始的時候我們可是沒有這么多工匠,所以我們需要培訓和鍛煉他們。應用學徒工計劃并且使用針對未來職業生涯的工匠模型就可以做到這一點。
</blockquote>如何從軟件開發學徒成為工匠呢,Steve 在他的博客中談了五個方面:
- 代碼工藝——使用一個或多個程序設計語言的藝術去創建清晰的、構造良好的代碼。(……)
- 實用的原則——(……)一個學徒需要理解類似于 SOLID 這樣的原則,并且知道如何去應用它們。
- 技術和工具——雖然程序員需要有能力去實踐像手工重構這樣的做法,但是他們也需要了解如何使用專門的工具,如何針對特定的任務去選擇適當的工具。
- 工作習慣——(……)我們需要圍繞某些活動培養肌肉記憶,比如 TDD、持續集成等等。
- 軟技能——(……)軟件學徒需要學習如何在團隊中開展工作,如何與其他人進行交流,以及一些其他的軟技能,在傳統學習環境中這些軟技能漸漸地都被忽略掉了。
</ul>來自: InfoQ<span id="shareA4" class="fl"> </span>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!