進階過程:程序員做項目的獨立性
***階段:編碼機器
這是***級的階段,程序員拿到詳細設計文檔,上面連許多方法接口都定義好了。重構一些代碼,寫一些實現,調用一些既定的API,然后花許多時間在各 種各樣的場景測試上面。從做的工作上看,這都不能算程序員,最多,只是編碼技巧卓越的碼農而已。因為它幾乎扼殺了一切創造力,但是這很常見,比如在一些對 日外包公司,就是如此。
第二階段:獨立的實現者
程序員得到的只是粗略的設計文檔,也許注明了外部接口的清單,還有框架和基礎設施的API,需求已經澄清清楚,接下去要做的就是發揮聰明才智把軟件 實現設計好,把代碼寫好,測試通過。這項工作可以在安靜和獨立的環境中完成,因為沒有什么是不夠明確的,那些本不清楚的部分,項目經理、架構師和產品經理 已經搞定了。這樣的環境下可以誕生許許多多OO設計優秀、代碼清晰簡潔的程序員,但是這始終只是在做一個殘缺的項目而已。很多程序員新手都是從這個階段開 始的,但是程序員如果只會代碼層面的設計、編碼和測試,并不能算一個完整的程序員,也許連一半都算不上。
第三階段:項目溝通者和管控者
程序員要和需求工程師,甚至客戶澄清需求,分析可行性;需要自行分析設計項目中的技術難點;參與決定和管理迭代周期和計劃表;組織和參與項目組內運 作跟蹤會議。編碼以外的事情會占用一些時間,這些時間大多來自溝通的成本。如果說,前兩個階段還未能明顯看出溝通的重要性的話,那么到這個階段,一個不能 良好溝通的程序員,將成為項目組運轉的瓶頸。國內至少有一半的軟件公司的程序員做項目應該處于這個階段。
第四階段:從做項目到做產品
從做項目跨越到做產品,想想容易,做起來很困難。做項目需要更多傾聽用戶需求,但是做產品更注重思考,思考用戶的痛點和產品的定位遠重于傾聽用戶表 述。從項目周期上看,做項目關注在拿到需求并實現交付的過程,但是做產品需要把更多精力花在產品定義、設計,還有長時間的產品維護上。做產品的程序員,必 須要和客戶溝通,必須要維護自己開發的軟件,獲知用戶和市場的反饋,如此才能體會到什么功能才是迫切需要的,該怎樣把技術、業務和實際產品的實現結合起來。
第五階段:產品成長的見證人
也許很少人能夠參與從零開始,經過創意、市場分析到產品設計的過程,在明確要做什么之前有大量的時間會花在產品探索性的工作上面。也許會做很多的產 品原型,也許某些版本和功能在A/B測試之后就被放棄了,更有些產品在流傳開來以前就銷聲匿跡了,或者很快就死在抄襲和山寨手里。產品的更迭和換代總是千 辛萬苦,而看得到的部分往往如此簡單,但是誰知道它的歷史有多曲折呢?