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