日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Thoughtworks

系統(tǒng) 1920 0

與一群國外的Dev一起工作是我從未有過的經(jīng)歷,在陌生的國度,陌生的團(tuán)隊(duì),陌生的客戶,做著陌生的項(xiàng)目,對我而言,Everything is new。我們在客戶這里,仍然采用典型的敏捷方式:故事墻、站會、用戶故事、結(jié)對編程、持續(xù)集成、TDD甚至BDD……幾乎所有的敏捷實(shí)踐我們都會運(yùn)用。在加入這個項(xiàng)目時,已經(jīng)進(jìn)行到第7個迭代,整個項(xiàng)目的框架已經(jīng)比較成熟。我們的任務(wù)是盡快熟悉業(yè)務(wù)和整個技術(shù)框架,并為新的項(xiàng)目做好充分準(zhǔn)備。在接近3周的時間內(nèi),我們都會和客戶以及美國Thoughtworks的同事們進(jìn)行Pair,通過實(shí)際的開發(fā)來熟悉和了解業(yè)務(wù)與技術(shù)。然后,在剩下的兩周內(nèi)為新項(xiàng)目做Inception。

項(xiàng)目是基于.NET Framework 4.0進(jìn)行開發(fā)的,采用的技術(shù)包括C#, VB.NET, Ext Js, SQL Server 2008。IoC容器為Structure Map,NUnit作為單元測試框架,Moq作為Mock測試框架。我們使用了Jenkins(即Hudson)作為持續(xù)集成工具,使用了Thoughtworks的產(chǎn)品Twist作為回歸測試和集成測試工具,并使用了Powershell作為構(gòu)建腳本,Git作為源代碼控制工具。

來到LA的第一周。除了第一天參加了幾次Meeting,了解了整個項(xiàng)目的情況尤其是業(yè)務(wù)邏輯之外,第二天就迅速進(jìn)入團(tuán)隊(duì),開始結(jié)對編程。整個第一周,我完成了2個Bug Fix,同時,對Regression Test出現(xiàn)的問題進(jìn)行了修復(fù),并參與了一個Story的開發(fā)。在這一周,我并沒有Switch Pair,一直是和客戶這邊的一位Dev(名叫Andrew)進(jìn)行合作。

回顧這一周的工作,我的感受如下:

1)業(yè)務(wù)邏輯的了解比技術(shù)更重要

作為一名Dev,可能首先會想到項(xiàng)目會使用什么技術(shù),我對這些技術(shù)了解嗎?總之,會首先關(guān)注一切與技術(shù)有關(guān)的東西。在進(jìn)入項(xiàng)目之前,我特別關(guān)注了這些內(nèi)容,并抓緊一切時間為這些技術(shù)做儲備。當(dāng)然,我們也希望了解業(yè)務(wù)邏輯,但由于前期準(zhǔn)備時缺乏這方面的條件,我們所能了解的就是項(xiàng)目與Healthcare有關(guān),項(xiàng)目內(nèi)容有些接近CMS。然而,到了項(xiàng)目之后,我們才發(fā)現(xiàn),技術(shù)并非決定你能否快速進(jìn)入團(tuán)隊(duì),并開始開發(fā)和實(shí)現(xiàn)的關(guān)鍵。如果不了解業(yè)務(wù)邏輯,不明確領(lǐng)域術(shù)語,我們將很難進(jìn)行溝通和交流。尤其對于現(xiàn)在這個項(xiàng)目,由于項(xiàng)目已經(jīng)做了一部分。對領(lǐng)域的了解就更加重要了。對于一名有著多年經(jīng)驗(yàn)的Dev來講,其實(shí)技術(shù)并不會成為制約你進(jìn)行項(xiàng)目開發(fā)的主要瓶頸。在這個項(xiàng)目中,有很多技術(shù)都不是我掌握的,但我們?nèi)匀豢梢钥焖龠M(jìn)入開發(fā)活動。這是因?yàn)镻air Programming可以很好地完成知識共享和傳遞,我的Pair可以像Mentor一樣來帶領(lǐng)我迅速進(jìn)入狀態(tài)。

2)交流是項(xiàng)目開發(fā)的根本

在國內(nèi)做項(xiàng)目,交流或許也會成為障礙,但因?yàn)檎Z言相同的緣故,我們往往將交流活動忽略了,似乎覺得這是順乎自然的事情。在這一周的工作中,我仿佛進(jìn)入了另一個世界,耳邊充斥地都是自己難以理解的語言。雖然我有一定的英語基礎(chǔ),但真正和這些母語為英語的Dev合作時,才發(fā)現(xiàn)我所掌握的英語單詞和語法都變得不夠用了。我的舌頭似乎也打結(jié)了,我很難理解Pair所要表達(dá)的意思,自己也很難向Pair表達(dá)我的意見。這就導(dǎo)致開發(fā)效率受到很大影響。即使任務(wù)已經(jīng)完成,整個實(shí)現(xiàn)對我而言,仍然似是而非,還需要自己下來看Story的描述,看源代碼。例如,在我們項(xiàng)目中已經(jīng)實(shí)現(xiàn)了比較好的Validation機(jī)制,但為了實(shí)現(xiàn)一個相對較小的Story,由于交流的問題,我們的實(shí)現(xiàn)被嚴(yán)重阻礙了。

此外,在我們項(xiàng)目中完全具備現(xiàn)場客戶的條件,因而交流更是成為重中之重。我們的BA團(tuán)隊(duì)既有TW的,也有客戶的。他們都寫了很不錯的User Story。在我們實(shí)現(xiàn)這些User Story時,如有不明白之處,都需要盡快咨詢BA,通過交流消除歧義。而在實(shí)現(xiàn)之后,必須和BA做Show Case,以盡快獲得反饋。這一點(diǎn)非常重要,也是敏捷的核心價值觀體現(xiàn)。

3)好的習(xí)慣很重要

第一周,和我Pair的Andrew是來自客戶的一位實(shí)習(xí)生。他剛從大學(xué)畢業(yè),進(jìn)入項(xiàng)目大約三個月時間。在大學(xué)期間,他只學(xué)習(xí)了C++,對.NET、Javascript以及CI等內(nèi)容都不熟悉。換言之,他現(xiàn)在所掌握的所有技術(shù),都是在項(xiàng)目中學(xué)到的。雖然是這樣一個Intern,但我發(fā)現(xiàn)他已經(jīng)具備了非常良好的編碼素質(zhì)。在開始一個Story時,他會首先在Twist編寫Regrssion Test Sceinario。而在實(shí)現(xiàn)代碼時,也會嘗試著通過Unit Test來驅(qū)動實(shí)現(xiàn)。在提交代碼時,會合理地運(yùn)用Git命令。例如在開發(fā)前,會通過Git Status檢查當(dāng)前狀態(tài),看是否有變更。在Commit時,如果發(fā)現(xiàn)提交的內(nèi)容有沖突,他會非常慎重地處理Merge。編寫代碼時,會嚴(yán)格遵循我們制定的編碼規(guī)范。雖然,他在開發(fā)方面的經(jīng)驗(yàn)還有很多欠缺,但無疑已經(jīng)有了一個好的開始。我想,通過這個項(xiàng)目的鍛煉,在Thoughtworkers的言傳身教下,只要他愿意繼續(xù)努力,應(yīng)該會有一個很好的發(fā)展前景。

同時,對于團(tuán)隊(duì)而言,這樣良好的編碼習(xí)慣,就像所謂的“童子軍軍規(guī)”一般影響這團(tuán)隊(duì)的每個人,我們欠下的Technical Debt就會少很多,這對于后期的維護(hù)、修改以及將來后續(xù)的開發(fā),都有非常大的幫助。

4)學(xué)會尋求幫助

每個人所掌握的知識總是有限的。或許你的能力足夠讓你解決任何問題,但考慮成本問題,若能適當(dāng)?shù)貙で髱椭慵饶軌蚩焖偻瓿扇蝿?wù),同樣能夠?qū)W到你希望學(xué)到的知識。即使尋求幫助后,沒有得到你所期望的結(jié)果,至少說明,我們可以拒絕某些選項(xiàng),這同樣可以節(jié)約時間成本。最關(guān)鍵的一點(diǎn)需要時刻記住,我們是一個Team。

在第一周的Story開發(fā)中,由于我和Andrew都對Validation的機(jī)制不太熟悉。我們嘗試了多種方法,希望解決問題,但都不奏效,這樣反復(fù)的嘗試已經(jīng)耽擱了大約一天的時間。后來,我們主動找到另一位Thoughtworker-Eric,他已經(jīng)在項(xiàng)目呆了較長時間。了解我們的問題后,Eric僅用了不到10分鐘的時間就解決了這個問題。事實(shí)上,這個問題的解決方案需要一個小技巧,在Label中設(shè)定我們事先指定的CSSClass,就可以顯示那些Validation Message。

5)知識分享

毫無疑問,只有充分的知識分享,才能有效發(fā)揮團(tuán)隊(duì)的作用。尤其對于新加入團(tuán)隊(duì)的成員,如果沒有足夠好的知識分享,或者團(tuán)隊(duì)的老成員不具備這方面的意識,將自己擁有的知識傳遞給新成員,新成員就很難融入團(tuán)隊(duì),也很難快速地貢獻(xiàn)自己的Effort。在知識分享的過程中,通過Meeting和Session,或者閱讀文檔的方式當(dāng)然是有效的。但事實(shí)上,即使你參加一天的Session,或閱讀一天的文檔,都不如和你的Pair實(shí)際做一個Story,對知識的分享來得更好。根據(jù)我自己的經(jīng)驗(yàn),所謂Session或文檔的方式,更適合介紹一些領(lǐng)域背景知識,或宏觀的系統(tǒng)架構(gòu)。細(xì)節(jié)知識必須在實(shí)踐過程中獲得。這時,Pair Programming就顯得非常重要了。

在選擇自己的Pair時,也需要針對實(shí)際情況做出調(diào)整。例如與新手Pair的必須是相對有經(jīng)驗(yàn)的Dev(當(dāng)然也可以和QA或BA結(jié)對)。另外,也需要適當(dāng)?shù)豐witch Pair。在這個項(xiàng)目中,我就體會到這一點(diǎn)的重要性。第一周的3天時間,和我Pair的都是Andrew。雖然他已經(jīng)進(jìn)入項(xiàng)目三個多月,但畢竟還缺乏一定的經(jīng)驗(yàn)。而我作為項(xiàng)目新人,更是很多內(nèi)容都不了解。這樣的Pair組合,效果可想而知。在這個過程中,本來我們應(yīng)該進(jìn)行Switch,但因?yàn)镾tory的關(guān)系,其他Pair也有自己的任務(wù),這個Switch活動就被推遲到了第二周。事實(shí)上,在第二周的第一天,我和Eric合作,效果就非常好。整個Velocity得到了較大的提高。

Thoughtworks


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亳州市| 桂东县| 县级市| 安徽省| 延寿县| 东台市| 南阳市| 自治县| 莆田市| 庄河市| 绥宁县| 辽阳市| 丽江市| 勃利县| 灵台县| 砀山县| 剑川县| 红安县| 沈阳市| 无为县| 吉安县| 泌阳县| 湖北省| 阜康市| 临安市| 巴林右旗| 佛冈县| 八宿县| 曲靖市| 沙雅县| 涿鹿县| 仁寿县| 兴宁市| 电白县| 阳原县| 都江堰市| 桂东县| 方正县| 衡南县| 文登市| 四平市|