Monday, May 07, 2007

My Agile Project (based on a true story)

What makes a project 'agile'? Are you only doing an agile project when you apply all principles of eXtreme Programming for example? From the way I phrased these questions you probably already concluded that I think differently.

What agile projects really make agile is best formulated in the Agile Manifesto. Among others the following principles are included:
  • Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  • Working software is the primary measure of progress.
  • Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  • Continuous attention to technical excellence and good design enhances agility.
Not specifically included (probably assumed to be intrinsic) is the following principle:
  • Address the biggest risks first.
I think these principles best explain why my latest project has been such a success, meaning that it as delivered in time, within budget, with a happy customer, and last but not least, happy end-users!

But before I explain, let me first tell you a little bit about the project. It concerns maintenance of an existing system that is over more than five years old. The system has been build using Oracle Designer / Developer, with a lot of PL/SQL code in the database of which a considerable part enforces rules and regulations. Rules and regulations being changed significantly was the reason to start the project and make the system adapted accordingly.

The major challenges we focussed were these:
  • A first increment should go into production before January (it was end of October when I got first involved so we had only two months).
  • The PL/SQL code was set up using a lot of (what we in retrospective may call) bad practices, like one huge package that 'does it all' with tightly coupled procedures of which many had no clear responsibility.
Although we talk about rules and regulations, many things were up for interpretation. When you read one of my previous posts you know I try to avoid a Big Design Up-Front where feasible. Normally you have to justify this to people that have not yet bought into agile development, but in this case the time constraint made it even impossible to create such a thing.

So what you gonna do? Well, first of all we (meaning a team of 3 developers, a client-project manager and ambassador user) decided to meet on a daily basis to monitor the status, exchange information and address issues as soon as they emerge. In this setting we made up a high-level MoSCoW-list, determined the dependencies between the requirements, and decided upon their prorities (primarily based on dependencies and biggest risks first). Using this as input, we then thought of an approach how we best could adapt the existing system in an incremental way. We created a low-level MoSCoW-list with a scope of two weeks, delivered what we produced and based on our experience created the next low-level MoSCoW-list.

Sounds easy, wouldn't you agree? Yeh, right...

We are dealing with people here and in general people have a few pretty persistent habitst that must be dealt with. Like many people find it counter-intuitive to design and implement functionality just to achieve a foreseable goal, knowing that in some near future they probably have to change it as a result of evolving insight. Main reason is that we have a tendency to try to do it right the first time to prevent needing to change code later on which just seems like overhead. Unfortunately experience shows almost none of us is capable overseeing everything that needs to be taken into account upfront. Discrepancies between vision and reality emerge the minute we start to build the real thing and especially become apparent when end-users are confronted with it.

Another tendency we have, is starting with a couple of simple things just to get a sense of achievement, while postponing the more complex issues, hoping they kind of solve themselves as time goes by. But those issue are the ones with the biggest risks associated with them and when they do not solve themselves, it often is too late and you find yourself being in big trouble. I have never done research to find out, but I do believe that addressing high-risk issues too late is the major cause of budget overrun, deadlines not being met or deliverance of considerable less functionality than planned for.

So what agile methods therefore promote is developing small increments that are delivered frequently. This will prevent us from going the wrong direction for too long as we will notice it soon after that happens. To prevent that changing things later indeed results in a lot of overhead, we maintain a simple design by creating the simplest thing that could possibly work. Whenever the design starts to get complex, we refactor to make it simple again. To allow for refactoring without breaking the functionality, we apply unit testing to prove the system still works afterwards. To reduce risk we ensure that the code one person creates works with to code of others, by continuously integrating everything we produce. And wherever feasible, we start with those aspects that are the least clear to us how to proceed with, to find out as soon as possible how they can be resolved and what the impact on other aspects is.

All this is not just a nice theory. We did just that and proved it works!

We consulted each other at least once a day, keeping eachother on track with maintaining a simple design and refactoring when necessary. On an average we delivered every two weeks and from increment to increment added new functionality while at the same we improved the existing poor architecture. The result is a system that not only does what it is supposed to do, but which also is based on a solid architecture with excellence through simplicity!

Only time will tell, but I have a strong feeling that we considerably reduced the costs for maintenance and perhaps made that the system will survive for yet another five years.

17 comments:

Anonymous said...

Regardless of the debate, North American games now have the chance to play Ragnarok Online with all kinds of ro zeny. During the free open Beta test period that you do not cost any ragnarok zeny, over ten thousand people logged on the game daily. Soon after this latest period, on a week notice, players were informed that the game was going pay iro zeny to play again. Each type of weapon, daggers and two handed swords, bows and so on which can gain from cheap zeny, have a unique animation for every class and sex. All ragnarok online zeny has the end effect of making every series of dungeons or outdoor maps look exactly alike.

筱娅 said...

I like a game which needs to use flyff penya, when you do not have flyff money, you must borrow flyff gold from friends, or you buy flyff penya. If you get cheap penya, you can continue this game.

kevin said...

牙醫,植牙,矯正,紋身,刺青,創業,批發,皮膚科,痘痘,中醫,飛梭雷射,毛孔粗大,醫學美容,seo,關鍵字行銷,關鍵字自然排序,網路行銷,關鍵字自然排序,關鍵字行銷seo,關鍵字廣告,部落格行銷,網路行銷,seo,關鍵字行銷,關鍵字廣告,關鍵字,自然排序,部落格行銷,網路行銷,網路爆紅,牛舌餅婚紗台中婚紗,腳臭,腳臭,腳臭,腳臭,腳臭,腳臭,腳臭,腳臭,中古車,二手車,中古車,二手車,高雄婚紗,街舞,融資,借貸,借錢,小產,雞精,紋身,刺青

kevin said...
This comment has been removed by the author.
Anonymous said...

29047126483369175 I play dofus Replica Watches for one year, I Replica Rolex Watches want to get some Replica Watch kamas to buy Replica Chanel Watches item for my character. So, I search "Replica Swiss Watches" on google and found many website. As Exact Replica Graham Watch the tips from the forum, I just review the Swiss Replica Watches websites and choose some Replica Montblanc Watches quality sites to Replica Cartier Watches compare the price, and go to their Replica Breguet Watches online support to make Replica Breitling Watches the test. And Last Chaos Gold I decide to use Replica BRM Watch at the end. And Tag Heuer Replica Watch that is the Replica IWC Watch beginning..

Anonymous said...

搬家公司 桃園房屋仲介 桃園房屋買賣 桃園房屋 醫學美容診所 淨膚雷射 雷射溶脂 飛梭雷射 微晶瓷 植髮 團體服 團體服訂做 醫學美容診所 肉毒桿菌 肉毒桿菌瘦臉 醫學美容 整型診所 美國月子中心 月子中心 seo 關鍵字廣告 關鍵字 google關鍵字廣告 關鍵字行銷 網路行銷 通姦 徵信社 外遇 徵信 徵信公司 出軌 清潔公司 搬家公司 搬家公司 台北搬家公司 新竹搬家公司 桃園搬家公司 台北搬家公司 整形 韓風整形 整形 韓風整形 老人癡呆症 情緒管理 訂房網 線上訂房 宜蘭民宿 宜蘭住宿 網路訂房 宜蘭飯店 新娘祕書 清潔公司 植牙 裝潢 室內設計 油漆粉刷 油漆工 油漆工程 洗鞋加盟 洗包包加盟 洗包包 創業加盟店 早餐店加盟 開店創業 創業開店 結婚金飾 鑽石婚戒 通水管 通水管 通馬桶 抽水肥 包通 馬桶不通 通馬桶 通水管 清水溝 沙發 室內設計公司 室內設計 室內裝潢設計 裝潢設計 澳門自由行 香港自由行

Anonymous said...

太陽能熱水器 三久 櫻花牌熱水器 熱水器 省電熱水器 衛浴設備 節能減碳 電熱水器 中古車 二手車 環保袋 環保袋 環保袋 十分瀑布 台北旅遊網 台北民宿 平溪 景觀餐廳 薰衣草花園 花園餐廳 螢火蟲 渡假村 鐵道之旅 團體服 滷味 滷味加盟 滷味批發 滷味食材 滷味宅配 滷雞翅 滷雞腳 健康滷味 魯味 加盟創業 慈善 義賣 義賣活動 慈善機構 公益彩券 健康食品 慈善基金會 公益團體 愛心捐款 捐款 美白 皺紋 減肥 禿頭 醫學美容 電波拉皮 雷射溶脂 肉毒桿菌 玻尿酸 痘疤 婦產科診所 室內設計 埋線 內分泌失調 黃體不足 針灸減肥 坐月子中心 婦產科 月子中心 月子餐 飛梭雷射 太陽能熱水器 太陽能 三久太陽能 三久 身體檢查 健康檢查 全身健康檢查

Anonymous said...

玫瑰花束 盆栽 網路花店 花店 鍛造 樓梯扶手 欄杆 鐵門 採光罩 熱水器 蘭花 化糞池 抽化糞池 抽水肥 水管不通 洗水塔 消毒 通水管 通馬桶 馬桶 馬桶不通 上順旅行社 五福旅行社 大興旅行社 天喜旅行社 天福旅行社 日本旅行社 日本旅遊 日本機票 日本自由行 日本訂房 包通 抽化糞池 抽水肥 水管不通 洗水塔 清水溝 通水管 通馬桶 馬桶 馬桶不通 便宜機票 國內旅遊 國外旅遊 國外機票 團體旅遊 直航機票 簽證 自由行 訂房 雄獅旅遊 汽車美容 汽車美容 三久太陽能 太陽能

Anonymous said...

黃金價格查詢 貸款 信用貸款 房屋貸款 剖腹生產 命理網 姓名學 姓名配對 星座 星座運勢 算命 開運印章 風水 外遇 徵信 徵信社 外遇 徵信 徵信社 外遇 徵信 徵信社 外遇 徵信 徵信社 外遇 徵信 徵信社 外遇 徵信 徵信社 清潔公司 壁癌 屋頂防水 屋頂隔熱 抓漏 油漆 浴室 漏水 舊屋翻新 裝潢 防水工程 壁癌 健康飲食 台北素食餐廳 吃素 團購美食 水餃 素食 素食料理 素食水餃 素食食譜 素食餐廳 交友 婚友 婚友社 婚友聯誼 婚友聯誼社 愛情 愛情公寓 相親 相親銀行 聯誼 Hook and Loop 婚禮佈置 情人花束 新竹花店 會場佈置 氣球佈置

Anonymous said...

二手車 環保袋 肉毒桿菌 健檢 醫學美容 淨膚雷射 汽車美容 法拍屋 水餃 清潔公司 實驗動物 到府坐月子 坐月子 坐月子中心 坐月子餐 孕婦 月子餐 到府坐月子 坐月子 坐月子中心 坐月子中心台中 坐月子中心台北 月子餐 月子中心 坐月子餐 月子餐外送 月子餐食譜 統一發票9 10月 金價 統一發票9 10月 找工作 統一發票7 8月 求職 1111求職人力銀行 104求職人力銀行 104人力銀行 統一發票5 6月 104人力銀行 104求職人力銀行 塑膠袋 統一發票1 2月 塑膠袋批發 塑膠袋工廠 金價 黃金價格 金價查詢 黃金買賣 黃金 統一發票3 4月 1111人力銀行 104求職人力銀行 1111人力銀行求職 黃金價格查詢 中古車買賣 塑膠袋 統一發票9 10月 塑膠袋批發 中古車 中古車買賣 台北人力銀行 金價查詢 sum中古車 中古車 今日金價

Anonymous said...

消防公司 地板施工 超耐磨地板 店面出租 乳癌 全身健康檢查 肝癌 健康檢查 身體檢查 飛梭雷射 雷射溶脂 直航機票 自由行 三久 太陽能 三久太陽能 太陽能熱水器 環保袋 電波拉皮 hand dryer 電波拉皮 雷射溶脂 肉毒桿菌 系統家具 台中漆彈場 漆彈 團體服 美國月子中心 團體服 團體服 團體服 T恤 圍裙 POLO衫 班服 團體服創意 熱轉印 團體服訂做 宜蘭民宿 關鍵字廣告 seo 網路廣告 網路行銷 seo 網站設計 seo 線上客服 seo 網頁設計 seo 網頁設計公司 網路行銷 網路行銷 中古車 涼麵 食品批發 拉麵 T恤 慈善 慈善基金會 慈善機構 租辦公室 租店面 買辦公室 店面租賃 店面出租 店面出售 花茶 花草茶 養生茶 招牌 led招牌 招牌製作 美國月子中心 保養 美國月子中心

Anonymous said...

OBU 投審會 會計師事務所 會計師 工商登記 公司登記 包子 肉粽 宅配美食 四神湯 搬家公司 訂房網花東旅遊 桃園土地 桃園房屋仲介 桃園房屋 桃園房屋網 桃園房屋買賣 漆彈 搬家公司 會場設計 展場設計 會場設計 展場設計 展覽設計 消防設備 消防設備 機電 崴立機電 牙齒美白 植牙 牙周病治療方法 植牙費用 牙周病 微晶瓷 3D飛梭雷射 淨膚雷射 光纖美白除毛 肉毒桿菌除皺 紙盒印刷 紙袋包裝 包裝紙盒 手提紙袋 紙袋印刷 紙袋工廠 包裝紙袋 紙盒訂裝 手提袋 包裝盒 股票教學 股市分析 股市億萬贏家 股票軟體 股票行情 ferrari 賣車 賓士 lexus 二手車 中古車 Bmw 中古車買賣 保時捷 法拉利 福利 清潔公司 汽車借款 當鋪 當舖 借錢 貸款 票貼 二胎 融資 工商融資 支票貼現 借款 汽車借款 汽車貸款 徵信 徵信社 外遇 彌月送禮 喜餅 喜餅禮盒 喜餅價格 訂婚禮盒 訂婚喜餅 彌月蛋糕

Anonymous said...

彌月禮盒 彌月禮 彌月 離婚 法律事務所 債物 律師事務所 律師 寵物醫院 獸醫 獸醫院 寵物住宿 白內障 心絲蟲 腎衰竭 狗皮膚病 動物醫院 獸醫師 創業鞋之澡堂 洗鞋子 洗包包加盟 洗鞋店 加盟 洗鞋 洗包包 洗鞋加盟 酒店式公寓 台北民宿 日租套房 台北日租 apartment 太平山民宿 宜蘭民宿推薦 宜蘭民宿 宜蘭旅遊 宜蘭住宿 Disposable plastic cups Disposable plastic cups Disposable products Plastic Drinking Cups ECO products Biodegradable plastic PLA polylactic acid Biodegradable Plastic Cup Plastic manufacturer 懷孕 坐月子 坐月子食譜 新竹坐月子中心 坐月子中心 坐月子餐 月子餐 月子餐外送 外送月子餐 素食月子餐 飛梭雷射 柔膚雷射 玻尿酸 皮膚科 皮膚科診所 肉毒桿菌 肉毒桿菌瘦臉 脈衝光 除斑 Flex PCB PCB RF PCB Rigid-Flex PCB Electronic PCB

Anonymous said...

Industrial PCB Heavy Copper PCB Microwave PCB Medical PCB Telecom PCB 泡菜 團購美食 創業加盟 水餃 湯包 加盟創業 冷凍宅配 宅配美食 手工水餃 中華湯包 mini usb DC Jack tact switch Slide switch Phone Jack USB connector RCA Jack開 關 製網 菱形網 不鏽鋼網 金屬網 衝孔網 菱型網 不鏽鋼 沖孔網 喇叭網 金屬擴張網 壯陽 成人用品 壯陽食品 早洩 情趣用品 春藥 壯陽藥品 持久 催情 增大 模具廠 塑膠射出成型 模具 Odm 塑膠射出模具 Oem代工廠 塑膠射出 塑膠射出廠 模具設計 Precision Mold Light guide panels Plastic Products Mold design Plastic injection Mold developmentInjection Mold Plastic injection molding Injection molding ISO9001認證 射出成形 塑膠製成品塑膠模具設計 模具開發 精密射出 縫衣機塑件 無塵室射出 膠框導光板 房屋仲介 法拍屋 法拍 法拍屋查詢系統 104法拍網 信義房屋 房屋買賣 台北法拍屋

Anonymous said...

板橋法拍屋 大台北法拍屋 原裝進口燈飾 流行燈飾 水晶燈 進口燈飾 吊燈 led燈 燈飾 燈具 照明 磁鐵 消毒 抽水肥 抽化糞池 化糞池 通馬桶 馬桶不通 通水管 水管不通 水管不通 化糞池清理 洗水塔 加盟創業 創業 加盟 早餐店加盟 創業加盟 pe膜 冬令營 冬令營 冬令營禮盒包裝 化妝品包 裝 紙盒 禮盒 化妝品盒 藥盒 彩盒 禮盒 印刷供應商 彩色盒 禮盒 設計 網版印刷 紙盒工廠 印刷公司 印刷 3D立體印刷 印刷服務 彩色印刷 包裝 設計breading machine food processing equipment frying machine meat processing equipment food processing mixers food forming patty machine boiling machine breading machine vegetable machine日立冷氣 電腦回收 回收 回收電腦 資源回收

Anonymous said...

教育訓練 品質管理 Ohsas 18001 iso認證 iso

curtisgarett said...

I'm glad I found your blog and find something you really need and use me. Thank you very much for sharing this information.
Office furniture