Monday, December 29, 2008

The Five Stages of Programming

Programming is an interesting job, because it goes in continual cycles. Each part of the cycle has its own emotion that goes with it, too.

When starting off a new project, there's a learning curve that goes with it. You're spinning up, reading code, reading technical papers, trying to figure out what the hell you're going to do. The main emotion here is puzzlement -- how is this thing going to work? What's the interface? What's the feature set? What the heck is going ON?

After that comes early implementation. In this phase, the main emotion is nervousness. You think you know how it's going to work, but there's nothing really there yet. So you're hacking madly away, trying to get enough of a skeleton in place that you can start to make it dance. Forget about getting flesh on the bones, you're just trying to come up with something that can stand up! Since you don't really know what you're doing yet, it could all still fall apart on you.

Once you're out of those woods, you're into late implementation. Here, the main emotion is adrenalin. You're charging on all cylinders, driving at full throttle. The bones are rapidly becoming enfleshinated, and you're in the zone. This is in some ways the most satisfying part of the whole cycle, because now you start to see some real results from what you've been working on.

The last phase is debugging. Here, the emotion swings wildly between frustration and relief. You're almost done... except you're not! There's a bug! Fix it, fast! OK... and on to the next test... and WHAMO, another weird bug! Grrrr. OK, got that one done... YES! IT WORKS!!! Ship it!

And then the whole cycle starts over again.

So that's my job: puzzlement, nervousness, adrenalin, frustration, and relief. Of course sometimes you take a few steps back. For example, right now I made it all the way to relief, but I'm about to backslide into nervousness. The best-case scenario, though, is when you make it to relief and then you can keep building on the code you just finished... then you have a kind of secure happy foundation under you, reassuring you that even if your current layer falls to bits in a welter of recrimination, at least you know the relief -- that fantastic sense of accomplishment that comes with writing a software machine from thin air, that has real value and usefulness -- is still out there, in the future, waiting for you.

That's what software is, to me: the promise of progress, of building on what's come before, making it better. And this emotional cycle is what it takes to make that happen. So I'll close with a word that sums it all up for me:

Onwards!

9 comments:

Jamie Faye Fenton said...

When I read your "Five Stages" entry, two ideas came into my mind, one was that the process resembles "falling in love", the other was that it resembles the grieving cycle as described by Kübler-Ross.

Falling in love, and coping with death are, of course, about the same underlying process. The dramatics of software invention are the same as those experienced by explorers, artists, scientists, and by families as the grow.

You and I have been in on one of these epics, to which both the birth and death analogies apply.

Your project sounds like something worth moving to Seattle/Redmond to do.

Wishing you extended limerance and delayed senescence.

-- Jamie

Rob Jellinghaus said...

Thank you, Jamie! Good observations. Best wishes to you as well.

Cheers,
Rob

S said...

月子中心 seo 關鍵字廣告 關鍵字 關鍵字行銷 今日金價 網路行銷 通姦 徵信社 外遇 桃園房屋仲介 桃園房屋買賣 桃園房屋 醫學美容診所 淨膚雷射 雷射溶脂 飛梭雷射黃金價格 金價查詢 黃金買賣 環保袋 微晶瓷 植髮 團體服 團體服訂做 抽化糞池 訂房 雄獅旅遊 汽車美容 汽車美容 三久太陽能 黃金價格查詢 貸款 信用貸款 微晶瓷 3D飛梭雷射 淨膚雷射 汽車借款 汽車貸款 徵信 徵信社 膠框 創業 加盟 早餐店加盟 統一發票3 4月 坐月子 meat processing equipment food processing mixers 衝孔網 藥盒 金價查詢 月子餐 月子中心 坐月子餐 賣車 辦公室風水

S said...

月子中心 seo 關鍵字廣告 關鍵字 關鍵字行銷 今日金價 網路行銷 通姦 徵信社 外遇 桃園房屋仲介 桃園房屋買賣 桃園房屋 醫學美容診所 淨膚雷射 雷射溶脂 飛梭雷射黃金價格 金價查詢 黃金買賣 環保袋 微晶瓷 植髮 團體服 團體服訂做 抽化糞池 訂房 雄獅旅遊 汽車美容 汽車美容 三久太陽能 黃金價格查詢 貸款 信用貸款 微晶瓷 3D飛梭雷射 淨膚雷射 汽車借款 汽車貸款 徵信 徵信社 膠框 創業 加盟 早餐店加盟 統一發票3 4月 坐月子 meat processing equipment food processing mixers 衝孔網 藥盒 金價查詢 月子餐 月子中心 坐月子餐 賣車 辦公室風水

S said...

月子餐外送 月子餐食譜 統一發票9 10月 金價 統一發票9 10月 找工作 統一發票7 8月 求職 1111求職人力銀行 104求職人力銀行 104人力銀行 塑膠袋 統一發票1 2月 金價 肉毒桿菌 黃金 sum中古車 1111人力銀行 104求職人力銀行 1111人力銀行求職 黃金價格查詢 中古車買賣 塑膠袋 統一發票9 10月 抽水肥 水管不通 化糞池 通馬桶 導光板 洗水塔 自由行 塑膠袋批發 中古車 中古車買賣 消防公司 團體服創意 地板施工 網路廣告 網路行銷 平溪 景觀餐廳 桃園房屋買賣 關鍵字行銷 關鍵字 seo 關鍵字行銷 關鍵字 seo 熱水器 衛浴設備 節能減碳 電熱水器 中古車 義賣

S said...

義賣活動 二手車 環保袋 環保袋 環保袋 十分瀑布 台北旅遊網 月子餐 飛梭雷射 太陽能熱水器 太陽能 三久太陽能 三久 身體檢查 健康檢查 台北民宿 薰衣草花園 花園餐廳 螢火蟲 渡假村 鐵道之旅 團體服 滷味 滷味加盟 滷味批發 滷味食材 滷味宅配 滷雞翅 滷雞腳 健康滷味 租店面 魯味 加盟創業 慈善 慈善機構 公益彩券 肉毒桿菌 系統家具鐵門 採光罩 清水溝 通水管 台中漆彈場 漆彈 團體服 團體服 月子中心 全身健康檢查 統一發票5 6月 104人力銀行 104求職人力銀行 團體服 T恤 圍裙 健康食品 慈善基金會美白 塑膠射出模具

S said...

義賣活動 二手車 環保袋 環保袋 環保袋 十分瀑布 台北旅遊網 月子餐 飛梭雷射 太陽能熱水器 太陽能 三久太陽能 三久 身體檢查 健康檢查 台北民宿 薰衣草花園 花園餐廳 螢火蟲 渡假村 鐵道之旅 團體服 滷味 滷味加盟 滷味批發 滷味食材 滷味宅配 滷雞翅 滷雞腳 健康滷味 租店面 魯味 加盟創業 慈善 慈善機構 公益彩券 肉毒桿菌 系統家具鐵門 採光罩 清水溝 通水管 台中漆彈場 漆彈 團體服 團體服 月子中心 全身健康檢查 統一發票5 6月 104人力銀行 104求職人力銀行 團體服 T恤 圍裙 健康食品 慈善基金會美白 塑膠射出模具

S said...

皺紋 減肥 禿頭 醫學美容 網路行銷 中古車 涼麵 POLO衫 電波拉皮 雷射溶脂 肉毒桿菌 玻尿酸 痘疤 婦產科診所 室內設計 埋線 內分泌失調 黃體不足 針灸減肥 公益團體 愛心捐款 捐款 坐月子中心 婦產科 玫瑰花束 盆栽 網路花店 花店 鍛造 樓梯扶手 欄杆 通馬桶 喜餅價格 訂婚禮盒 訂婚喜餅 宜蘭民宿 泰國 關鍵字廣告 seo 網頁設計公司 雷射溶脂外遇 徵信 徵信社 清潔公司 喜餅禮盒 塑膠射出 柔膚雷射 獸醫師 創業 鞋之澡堂 洗鞋子 洗包包加盟 彌月禮盒 模具

S said...

彌月禮 玻尿酸 星座運勢 算命 皮膚科 皮膚科診所 肉毒桿菌 肉毒桿菌瘦臉 脈衝光 除斑 Flex PCB PCB Electronic PCB 房屋仲介 法拍屋 法拍 法拍屋查詢系統 室內裝潢設計 照明 彩盒 水晶燈 日租套房 台北日租 apartment 太平山民宿 宜蘭民宿推薦 借錢 素食 素食食譜 省電熱水器 電波拉皮 姓名配對 星座casino gaming machine 泰國清邁 外遇 模具設計 素食料理 素食水餃 開運印章 風水 外遇 徵信 壁癌 屋頂防水 屋頂隔熱 抓漏 油漆 徵信社 外遇 徵信 徵信社 外遇 徵信 徵信社 外遇 紙盒印刷