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