從事軟件開發相關工作近八年,將自己形容成一名老兵。做開發幾年,帶團隊幾年。頭幾年編碼量較大,后幾年斷斷續續寫點東西,大多時間以指導別人開發為主。究個人能力而言,不算特別出色的程序員。但因工作性質等原因,對軟件系統產品整體的把握和產品設計工作還是有一些心得。這幾年的工作,既有項目管理,也有架構設計與分析設計,還有產品設計。對軟件開發的感覺相對比較宏觀,但也還是有一些方面有較為深入的了解。
今天談談軟件開發方法,主要原因在于最近觀察到新入行做外包開發的小伙子們,似乎都不太注重方法這類知識的積累。個人理解,軟件開發是一門技術活,其直觀特點應是一門偏工程類的工作。既然為一門工程,必然有方法可循。整個行業發展至今,各個細分領域都有不少經典的理論。如項目管理工程,架構方法,產品設計方法等等。這些理論都是在工程實現的過程中可以借鑒和使用的方法學知識,是提升工程效率和質量的武器裝備。軟件的實現過程,不僅僅是一個將計算機語言轉換為信息系統的過程。它不僅包含了一類信息流,數據流的抽象和組織工作和方法。還是一個用信息科技解決現實需求的過程。
在外包行業,代碼的重復堆疊的時間遠比創新的結構設計工作要多得多。有時候為了趕工,大量的拷貝和復制成為現實的選擇。但隨著從業年齡的增長,繼續使用這類方法顯然不合時宜。這既不利于提高工作效率,也不利于提高軟件產品的質量。大量的編碼實踐是提高軟件實現能力的不二選擇,但沒有軟件開發方法的思考與積累,再多的量變也無法發生質變。軟件產品千千萬,但其組織結構與設計方法卻是大同小異。更多的關注軟件產品的設計方法而非語言實現形式,才能不斷提高軟件開發水平。
一名資深的架構師設計或分析師編寫代碼的速度不一定比從業兩三年的小伙子快,但其實現的軟件產品質量絕對要比后者好得多!
ajax默認使用UTF-8來發送中文數據,因此在服務器端,需要通過類似new String(getBytes("iso-8859-1"),"utf-8")去轉換。
或者在發送前,使用escape處理中文數據,再在服務器端進行unescape操作。