有次和TRS產品經理馬先生聊天,他說我改行去做售前合適,原本我以為他開玩笑,因為我對售前的工作興趣不大(我一直認為我是個developer)。后來,找了個機會,見面聊了聊,他一語道破了原因:他竟然覺得我適合寫技術方案——很有意思的感覺。
沒想到,近真的在寫技術方案了(還好,沒有轉行)。耗費了兩多星期的時間,總算“攢”出一份技術方案后。自己都用攢這個詞了,可見這份技術方案的水分多大——有必要說明的是,方案中有關產品架構設計到沒有多大的水分。——還有必要說明的是,這里所說的技術方案,不同于以往的什么技術架構設計之類,是有些偏市場行為的
很多人說,這樣的技術方案,應該是項目經理或售前所屬的工作范圍,怎么也挨不著軟件開發者什么事情啊?——原本我也是這么認為,甚至有時候很討厭寫文檔。原先我也認為:我可以跟隨theserverside,跟隨javaworld,跟隨java.net這些新的技術趨勢;我也可以在Together,在coding中快意的遨游。現在看來,過去的思緒有些狹隘了。
在這兩個星期中,越來越感覺到。作為一個軟件開發者,能夠書寫方案(或者說技術方案),應該是必須的,也是必要的。偶爾寫寫,受益匪淺。
作為一個開發者,我想至少需要三個基本要素:精通、思考 與 創造 。精通表示至少需要在某一個領域內基本功非常扎實;思考需要不斷的審視過去的成;創造需要不斷的有發展的眼光——其實有時候,這三個要素是很難統一的,過分的關心新技術和新思維,會讓很多人失去了埋頭苦干的耐心;而過分的扎進某一個領域而不能拓展思維,久而久之也會變得呆板。——我比較喜歡把精通放在第一位。其實,國內目前的整體軟件水平,需要更多更多“精通”的人。
下面從自己的這次寫技術方案的感受,來跟大家說說,為什么需要“學會寫技術方案”——直原因,可能是說:大家都不希望一輩子只是重復的編碼吧——要做一個真正的“Software Developer”。
很多人會說“討厭編程”,特別是很多女孩子(哈哈,軟件行業的第一線總是表現的重男輕女)。——其實,編程真的很枯燥嗎?恰恰相反。
有關這個“編程枯不枯燥的問題”實在不應該在這里提,改天轉門寫篇文檔探討一下,以正俺們“Software Engine”或“Software Developer”的腰。
對軟件行業發展趨勢的把握
對軟件行業發展趨勢的把握,似乎有些托大了。可能很多編程人員會說,他會非常關心新的技術,什么AOP,什么IOC之類的——這些當然也很重要——半年的淡漠意味著落后;一年的松弛,意味遺忘——所以大家都在拼命的學。
但是,技術的發展是原因是什么呢?也許我們也應該思考思考:
是“客戶的需求在縱深、擴張”;是“應用得領域在挖掘”;“是開發模式在變更”;“是軟件概念在細化”。一句話,技術的革新是由于很多原因的碰撞,是軟件上層領域的發展的必然產物。
可能這是我們常說的:有些人在玩市場、有些人在玩需求、有些人在玩概念、有些人在玩技術。
可能提到“軟件平臺化”,大家都知道。但是有多少人能夠較為清楚的描述當前“軟件平臺的層次劃分”呢?能夠描述出為什么會誕生“模型化業務基礎軟件平臺”呢?為什么“中間件回會向軟件基礎架構平臺演變”呢?
作為一個軟件開發者,不光需要扎實的技術基本功(這是必要條件),還需要“抬起頭,望前看”。
對產品所定位的市場把握
這個觀點估計會讓很多人疑惑——軟件開發者為什么要關心市場呢?
大多人可能都會形成“領導決策----CTO把握-----產品經理控制----系統分析架構----軟件技術”之類的思想或領導層次定位,隨意然的認為市場的需求僅僅是領導們的事情,軟件開發者只需要根據領導的決策和定位,研究出產品即可。——這種思維,是多么的悲哀——這樣的思維,才真正的扼殺了一個開發者的靈魂。
一個軟件產品的價值,不在于其有多么高深的技術,而在于其可以為客戶解決什么問題?
所以,一個開發者,在開發產品的時候,除了需要考慮技術問題,還需要考慮這個產品所投放的市場特性。
對產品的軟件層次定位的把握
這個觀點可能很容易理解了,一個軟件必須有自己適合的定位層次。世界上沒有完美的產品,但是在不同的層次,卻有著不同得突出的待解決問題;于是不同層次的產品,解決了不同的問題——于是,客戶的需求這么被不同的層次劃分,一點點的解決。
所以,作為一個軟件開發者,應該清楚地了解自己的所開發產品所屬的層次、定位。
說到這兒,似乎和主題到底有什么關系呢?和技術方案有什么關系呢?——如果你去寫技術方案可以很容易理解:首先需要描述一下這個軟件行業的發展趨勢,因為這個趨勢,所以某某產品是順應時代發展需求的(先戴個高帽子),然后,某某產品定位在某個市場,為什么定位在這個市場啊,有多大發展空間啊(又是戴高帽子)·····
天啊,似乎在教唆老實巴交的軟件開發者們去投靠奸詐、吹噓的炒作中嗎?去玩弄玄乎的概念嗎?——寫到這兒,自己都覺得有些害怕——大家應用看到軟件發展的方向,看到可客戶的需求,看到很多很多本應該看到的東西。
對產品的競爭的把握
如果一個產品沒有了市場競爭,那么它不能良性的發展;如果一個產品融入了太激烈的競爭,那么它有可能被殘殺;所以,一個開發者在開發產品的時候,一定要抱著這樣一種思想:做一個超越競爭對手的產品!——那么,怎么樣才能有這樣的思想呢?《孫子兵法》曰:知彼知己、百戰不殆!
不過,目前國內的市場狀態不盡如人意——好的產品未必有好的市場——大家自己思索吧,點到即止。
--------------------------------------------------
到此差不多要結束了。本來列的幾個方面還包括“對產品多需要解決問題把握”,“對產品的特點把握”,“對產品的體系把握”,不過這幾個方面不說也罷,說個題目大家估計明白一切了,沒必要?里?唆的。
其實,文章主要想表達的意思是——作為一個Software Developer,應該把眼光放遠些,除了技術,還有很多也很重要的東西。
要做一個發展的Software Developer。