導航:首頁 > 程序命令 > 程序員出需求人員原型

程序員出需求人員原型

發布時間:2022-05-17 00:29:34

㈠ 為什麼都稱程序員為程序猿反映了這個工種的哪些特質

我上班第一天我的老闆讓我做的第一件事
看兩篇文章:
程序員隨想
雷軍
我不是天生的程序員,也並非天生就喜歡電腦,上高中時也沒有想過將來會當程序員,接觸電腦純屬偶然--小時候的一個好朋友上大學時選擇了電腦專業,為了和這個朋友有更多的「共同語言」我便選擇了計算機系。在大學,我略窺電腦世界,開始為之「發燒」;畢業後,開始了一個程序員的職業生涯。
從開始寫程序到現在快十年了,寫過的程序不少。從這些年的風風雨雨中走過來,不能不有些體會。說到體會,最大的體會就是這條路太漫長。
一、一輩子有你 苦一點也願意
我沒有奢望大家把寫程序和文學創作相提並論,但其中的苦楚卻不是一個普通用戶能夠體味的。為了寫好一個程序,我們度過太多不眠之夜。有個朋友如此評價道,「寫程序簡直是在自殺,巨費精力巨費腦子巨累」。但還是有許多人不畏其苦,前仆後繼。
我剛接觸到電腦就發現電腦的妙處:電腦遠沒有人那麼復雜,如果你的程序寫得好,你就可以和電腦有著非常融洽的關系,就可以指揮電腦干你想乾的事,這個時候,你是十足的主宰。每每坐在電腦面前,你就如同在一個王國里巡行。
電腦里的世界很大,程序員是活在自己想像的王國里。你可以細微到電腦里的每一個位元組、每一個比特的東西。
這樣的日子簡直就是天堂般的日子,很多人都愛上了這樣的日子。
不少人認為程序員最多干到三十五歲就可以收山,腦子也差不多該歇歇了,並認為寫程序是年輕人的事情,到了一定年齡,估計沒什麼人再當程序員。
我剛畢業時,意氣風發,也想先吃點苦,到了三十歲就不幹了。年長一點後就發現了自己的無知。一個人大學畢業就二十一二歲,技術成熟一點後可能二十五,接著就是票子、妻子和房子等等諸多忙不完的事情。一切搞掂的時候,也許就是三十五歲。如果三十五歲就放棄的話,我們就不用選擇程序員的道路。
電腦進入我國時間不短,但真正大規模開始用,還是八五年PC登陸我國時候的事。因此國內真正寫電腦程序的人最長也就寫了十幾年(不知道是否還有這樣的人)。由於電腦應用在國內時間比較短,國內程序開發的主力以三十五歲以下的年輕人為主,但這並不表示程序員如同紅粉佳人般的容易衰老。美國和台灣地區的開發者以三四十歲的人為主。開始寫程序的時候,我們覺得沒有什麼不能做的(現在還能聽到這樣的豪言壯語),而且更要命的是,好象我們特別聰明,特別適合開發軟體,比老外強得多。當我們真正接觸那些傑出的國外開發人員的時候,發現他們太厲害了,都有十多年的開發經驗,絕對多數的產品出自這些有豐富開發經驗的程序員之手。
畢業後,編程不僅僅是愛好,而且成了一輩子的工作,可以肯定會干一輩子,雖然我沒有打算一生只干這一件事。用一生來編程是一件既容易又困難的事。如果碌碌無為,為交差寫點程序,這樣寫兩輩子的人都有。但如果想全身心地寫程序,寫十年都不是一件容易的事。現在我的不少朋友都洗手了,有時我也有這種想法,但一旦面對電腦,立刻頓悟:電腦還是自己最擅長乾的事,也是最順手的事。
二、我的未來不是夢
有的人刻苦學習編程技術,努力提高編程水平,並把高級程序員作為追求的目標,甚至是終身的奮斗目標。後來參與了真正的商品化軟體開發後,感到非常困惑和茫然。
當我上大學的時候,高級程序員也曾是我的目標。當時,我通過等級考試獲得了高級程序員證書,並在自己的名片上印上「高級程序員」的字樣。後來,我的水平提高了,似乎也成了大家認可的好程序員了。這個時候我卻開始茫然。我希望我的技術能得到別人的承認,當得到別人的承認後,我又能如何呢?後來我發現,無論成為多麼高級的程序員都沒用,關鍵是是否能夠出想法、出產品,你的勞動是否能被社會承認,是否能為社會創造財富。
我的未來是明確的,開發出高質量的適用社會的產品,為社會創造財富。
三、每一個程序都是藝術品
有人認為程序員沒有什麼了不起,不過是一種熟練工種而已;也有人把編程說成是藝術創作,捧上天。這兩種意見爭論比較激烈,甚至可以說針鋒相對。
我們換個工種來看,石匠應該是熟練工種,跟藝術似乎沾不上邊。;但正是這些石匠,給我們留下了數不勝數的文物古跡,如樂山大佛、莫高窟等等。應該說這此石匠給我們留下了無窮的文化財富。我認為編程的工作和石匠比較相似,是技術,也是藝術。
現代軟體工業已具相當規模,很多軟體的完成需要的是大兵團作戰。一名精通程序員接受編寫某一塊的任務後,往往只是寫代碼,發揮的餘地很小。在大項目中,很多程序員只能了解到和自己所編模塊相關的很局部的細節,另外還受到開發環境的限制,真的很難體會到自己在從事「藝術」創造,更多的時候是感到自己在從事重體力勞動。有的時候還擔心自己苦苦參與的這個項目究竟有沒有意義,是不是在同類產品中有競爭力,會不會開發出來以後就因為硬體的發展、操作系統的換代而過時......
編程是技術活,才有可能大規模進行,才會有軟體工程的理論。也正是編程具備藝術創作的特點,我們的生活才會有如此多的好軟體產品。寫一個程序需要付出腦力和體力,當我—我們—某個群體完成一個程序之後,在我們的眼裡,每一個程序就都是藝術品。

程序員應具備的素質
前言
程序員是一種技術工作,在IT的發展中有相當重要的地位,從底層硬體通訊協議的建立, 到數據傳輸層的處理,到操作系統的建設,到資料庫平台的建設,一直到應用層上各種數 據營銷平台的搭建,程序員在裡面都扮演著舉足輕重的角色並為IT事業的發展做出了巨大 的貢獻。

中國有很多精於編碼的人,但是中國軟體行業,尤其是網路應用開發方面誤區很大,很難形成有規模的軟體開發力量和產品能力,不但比美國差距甚遠,和印度相比也是頗有不 如。這些問題不是在於中國程序員的智商和工作努力狀況,也不是在於國家和民間對開發 的投入程度,而是很大程度上,有一些對技術,對程序開發,對項目設計方面的思想誤 區,這些誤區,導致了軟體行業的產品化能力不足,缺乏規模化和大型復用系統研發能 力,可以說,改變認識誤區,是解決軟體行業小作坊模式和個體英雄模式所帶來的局限性 的重要工作。

中國有很多小朋友,他們18,9歲或21,2歲,通過自學也寫了不少代碼,他們有的代碼寫的很漂亮,一些技術細節相當出眾,也很有鑽研精神,但是他們被一些錯誤的認識和觀點左右,缺乏對系統,對程序的整體理解能力,這些人,一個網上的朋友說得很好,他們實際 上只是一些Coding fans,壓根沒有資格稱為程序員,但是據我所知,不少小網路公司的 CTO就是這樣的coding fans,拿著嚇人的工資,做著嚇人的項目,項目的結局通常也很嚇人。

一、程序員基本素質
作一個真正合格的程序員,或者說就是可以真正合格完成一些代碼工作的程序員,應該具有的素質。
1:團隊精神和協作能力
把它作為基本素質,並不是不重要,恰恰相反,這是程序員應該具備的最基本的,也是最 重要的安身立命之本。把高水平程序員說成獨行俠的都是在囈語,任何個人的力量都是有 限的,即便如linus這樣的天才,也需要通過組成強大的團隊來創造奇跡,那些遍布全球 的為linux寫核心的高手們,沒有協作精神是不可想像的。獨行俠可以作一些賺錢的小軟 件發點小財,但是一旦進入一些大系統的研發團隊,進入商業化和產品化的開發任務,缺 乏這種素質的人就完全不合格了。
2:文檔習慣
說高水平程序員從來不寫文檔的肯定是乳臭未乾的毛孩子,良好的文檔是正規研發流程中 非常重要的環節,作為代碼程序員,30%的工作時間寫技術文檔是很正常的,而作為高級 程序員和系統分析員,這個比例還要高很多。
缺乏文檔,一個軟體系統就缺乏生命力,在未來的查錯,升級以及模塊的復用時就都會遇 到極大的麻煩。

3:規范化,標准化的代碼編寫習慣
作為一些外國知名軟體公司的規矩,代碼的變數命名,代碼內注釋格式,甚至嵌套中行縮 進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和 糾錯,也有助於不同技術人員之間的協作。
有些coding fans叫囂高水平程序員寫的代碼旁人從來看不懂,這種叫囂只能證明他們自 己壓根不配自稱程序員。代碼具有良好的可讀性,是程序員基本的素質需求。
再看看整個linux的搭建,沒有規范化和標准化的代碼習慣,全球的研發協作是絕對不可 想像的。

4:需求理解能力
程序員需要理解一個模塊的需求,很多小朋友寫程序往往只關注一個功能需求,他們把性 能指標全部歸結到硬體,操作系統和開發環境上,而忽視了本身代碼的性能考慮,有人曾 經放言說寫一個廣告交換程序很簡單,這種人從來不知道在百萬甚至千萬數量級的訪問情 況下的性能指標是如何實現的,對於這樣的程序員,你給他深藍那套系統,他也做不出太 極鏈的並訪能力。性能需求指標中,穩定性,並訪支撐能力以及安全性都很重要,作為程 序員需要評估該模塊在系統運營中所處的環境,將要受到的負荷壓力以及各種潛在的危險 和惡意攻擊的可能性。就這一點,一個成熟的程序員至少需要2到3年的項目研發和跟蹤經 驗才有可能有心得。
5:復用性,模塊化思維能力
經常可以聽到一些程序員有這樣的抱怨,寫了幾年程序,變成了熟練工,每天都是重復寫 一些沒有任何新意的代碼,這其實是中國軟體人才最大浪費的地方,一些重復性工作變成 了熟練程序員的主要工作,而這些,其實是完全可以避免的。

復用性設計,模塊化思維就是要程序員在完成任何一個功能模塊或函數的時候,要多想一 些,不要局限在完成當前任務的簡單思路上,想想看該模塊是否可以脫離這個系統存在, 是否可以通過簡單的修改參數的方式在其他系統和應用環境下直接引用,這樣就能極大避 免重復性的開發工作,如果一個軟體研發單位和工作組能夠在每一次研發過程中都考慮到 這些問題,那麼程序員就不會在重復性的工作中耽誤太多時間,就會有更多時間和精力投 入到創新的代碼工作中去。

一些好的程序模塊代碼,即便是70年代寫成的,拿到現在放到一些系統裡面作為功能模塊 都能適合的很好,而現在我看到的是,很多小公司軟體一升級或改進就動輒全部代碼重 寫,大部分重復性工作無謂的浪費了時間和精力。
6:測試習慣
作為一些商業化正規化的開發而言,專職的測試工程師是不可少的,但是並不是說有了專 職的測試工程師程序員就可以不進行自測;軟體研發作為一項工程而言,一個很重要的特 點就是問題發現的越早,解決的代價就越低,程序員在每段代碼,每個子模塊完成後進行 認真的測試,就可以盡量將一些潛在的問題最早的發現和解決,這樣對整體系統建設的效 率和可靠性就有了最大的保證。

測試工作實際上需要考慮兩方面,一方面是正常調用的測試,也就是看程序是否能在正常 調用下完成基本功能,這是最基本的測試職責,可惜在很多公司這成了唯一的測試任務, 實際上還差的遠那;第二方面就是異常調用的測試,比如高壓力負荷下的穩定性測試,用 戶潛在的異常輸入情況下的測試,整體系統局部故障情況下該模塊受影響狀況的測試,頻 發的異常請求阻塞資源時的模塊穩定測試等等。當然並不是程序員要對自己的每段代碼都 需要進行這種完整測試,但是程序員必須清醒認識自己的代碼任務在整體項目中的地位和 各種性能需求,有針對性的進行相關測試並盡早發現和解決問題,當然這需要上面提到的 需求理解能力。
7:學習和總結的能力
程序員是人才很容易被淘汰,很容易落伍的職業,因為一種技術可能僅僅在三兩年內具有 領先性,程序員如果想安身立命,就必須不斷跟進新的技術,學習新的技能。
善於學習,對於任何職業而言,都是前進所必需的動力,對於程序員,這種要求就更加高 了。
但是學習也要找對目標,一些小coding fans們,他們也津津樂道於他們的學習能力,一 會學會了asp,一會兒學會了php,一會兒學會了jsp,他們把這個作為炫耀的資本,盲目 的追逐一些膚淺的,表面的東西和名詞,做網路程序不懂通訊傳輸協議,做應用程序不懂 中斷向量處理,這樣的技術人員,不管掌握了多少所謂的新語言,永遠不會有質的提 高。
善於總結,也是學習能力的一種體現,每次完成一個研發任務,完成一段代碼,都應當有 目的的跟蹤該程序的應用狀況和用戶反饋,隨時總結,找到自己的不足,這樣逐步提高, 一個程序員才可能成長起來。
一個不具備成長性的程序員,即便眼前看是個高手,建議也不要選用,因為他落伍的時候 馬上就到了。
具備以上全部素質的人,應當說是夠格的程序員了,請注意以上的各種素質都不是由IQ決 定的,也不是大學某些課本里可以學習到的,需要的僅僅是程序員對自己工作的認識,是一種意識上的問題。

二、高級程序員/項目設計者還需具備的素質
那麼作為高級程序員,以至於系統分析員,也就是對於一個程序項目的設計者而言,除了應該具備上述全部素質之外,還需要具備以下素質:
第一,需求分析能力
對於程序員而言,理解需求就可以完成合格的代碼,但是對於研發項目的組織和管理者, 他們不但要理解客戶需求,更多時候還要自行制定一些需求,為什麼這么說呢?
一般而言,進行研發任務,也許是客戶提出需求,也許是市場和營銷部門提出的需求,這 時候對於研發部門,他們看到的不是一個完整的需求,通常而言,該需求僅僅是一些功能 上的要求,或者更正規些,可能獲得一個完整的用戶視圖;但是這都不夠,因為客戶由於 非技術因素多一些,他們可能很難提出完整和清晰,或者說專業性的性能需求,但是對於 項目組織者和規劃者,他必須能夠清醒認識到這些需求的存在並在完成需求分析報告的時 候適當的提出,同時要完整和清晰的體現在設計說明書裡面,以便於程序員編碼時不會失 去這些准則。
程序設計者必須正確理解用戶需求所處的環境,並針對性做出需求的分析,舉例而言,同 樣一個軟體通過ASP租用方式發布和通過License方式發布,性能需求可能就是有區別的, 前者強調的是更好的支撐能力和穩定性,而後者則可能更強調在各種平台下的普適性和安 裝使用的簡捷性。
第二,項目設計方法和流程處理能力
程序設計者必須能夠掌握不少於兩到三種的項目設計方法(比如自頂至下的設計方法,比如快速原型法等等),並能夠根據項目需求和資源搭配來選擇合適的設計方法進行項目的 整體設計。
設計方法上選擇不當,就會耽誤研發周期,浪費研發資源,甚至影響研發效果。
一個程序設計者還需要把很多功夫用在流程圖的設計和處理上,他需要做數據流圖以確立 數據詞典;他需要加工邏輯流圖以形成整體的系統處理流程。
一個流程有問題的系統,就算代碼多漂亮,每個模塊多精緻,也不會成為一個好的系統。 當然,做好流程分析並選擇好項目設計方法,都需要在需求分析能力上具有足夠的把 握。
第三,復用設計和模塊化分解能力
這個似乎又是老調重談,前面基本素質上不是已經說明了這個問題嗎?
作為一個從事模塊任務的程序員,他需要對他所面對的特定功能模塊的復用性進行考慮, 而作為一個系統分析人員,他要面對的問題復雜的多,需要對整體系統按照一種模塊化的 分析能力分解為很多可復用的功能模塊和函數,並針對每一模塊形成一個獨立的設計需 求。舉個例子,好比是汽車生產,最早每輛汽車都是獨立安裝的,每個部件都是量身定做 的,但是後來不一樣了,機器化大生產了,一個汽車廠開始通過流水線來生產汽車,獨立 部件開始具有一定的復用性,在後來標准化成為大趨勢,不同型號,品牌甚至不同廠商的 汽車部件也可以進行方便的換裝和升級,這時候,汽車生產的效率達到最大化。軟體工程 也是同樣的道理,一個成熟的軟體行業,在一些相關項目和系統中,不同的部件是可以隨 意換裝的,比如微軟的許多桌面軟體,在很多操作模塊(如打開文件,保存文件等等)都 是復用的同一套功能模塊,而這些介面又通過一些類庫提供給了桌面應用程序開發者方便 掛接,這就是復用化的模塊設計明顯的一個佐證。

將一個大型的,錯綜復雜的應用系統分解成一些相對獨立的,具有高度復用性的,並能僅 僅依靠幾個參數完成數據聯系的模塊組合,是作為高級程序員和系統分析員一項最重要的 工作,合適的項目設計方法,清晰的流程圖,是實現這一目標的重要保證。
第四,整體項目評估能力
作為系統設計人員,必須能夠從全局出發,對項目又整體的清醒認識,比如公司的資源配 置是否合理和到位,比如工程進度安排是否能最大化體現效率又不至於無法按期完成。評 估項目整體和各個模塊的工作量,評估項目所需的資源,評估項目可能遇到的困難,都需 要大量的經驗積累,換言之,這是一種不斷總結的累計才能達到的境界。在西方一些軟體 系統設計的帶頭人都是很年長的,比如4,50歲,甚至更老,他們在編碼方面已經遠遠不 如年輕人那樣活絡,但是就項目評估而言,他們幾十年的經驗積累就是最重要和寶貴的財 富。中國缺這么一代程序員,主要還不是缺那種年紀的程序員,而是那種年紀的程序員基 本上都是研究單位作出來的,都不是從專業的產品化軟體研發作出來的,他們沒有能積累 那種產品化研發的經驗,這也是沒有辦法的事情。
第五,團隊組織管理能力
完成一個項目工程,需要團隊的齊心協力,作為項目設計者或研發的主管人,就應當有能 力最大化發揮團隊的整體力量,技術管理由於其專業性質,不大同於一般的人事管理,因為這裡面設計了一些技術性的指標和因素。
首先是工作的量化,沒有量化就很難做到合適的績效考核,而程序量化又不是簡單的代碼 行數可以計算的,因此要求技術管理人員需要能真正評估一個模塊的復雜性和工作量。
其次是對團隊協作模式的調整,一般而言,程序開發的協作通常分為小組進行,小組有主 程序員方式的,也有民主方式的,根據程序員之間的能力水平差距,以及根據項目研發的 需求,選擇合適的組隊方式,並能將責權和成員的工作任務緊密結合,這樣才能最大發揮 組隊的效率。
一個代碼水平高的人,未必能成為一個合格的項目研發主管,這方面的能力欠缺往往是容 易被忽視的。

綜上可以看到,作為一個主管研發的負責人,一個項目設計者,所需要具備的素質和能力 並不是程序代碼編寫的能力,當然一般情況下,一個程序員通過不斷的總結提高達到了這種素質的時候,他所具有的代碼編寫能力也已經相當不簡單了,但是請注意這裡面的因果 關系,一個高水平的項目設計者通常已經是代碼編寫相當優秀的人了,但是並不是一個代 碼相當優秀的程序員就可以勝任項目設計的工作,這裡面存在的也不是智商和課本的問 題,還是在於一個程序員在積累經驗,逐步提升的時候沒有意識到應當思考哪方面的東 西,沒有有意識的就項目的組織和復用設計進行揣摩,沒有經常性的文檔習慣和總結習 慣,不改變這些,我們的合格的項目設計者還是非常欠缺。

另外,為防止有無聊的人和我較真,補充一點,本文針對目標是作商業化的軟體項目和工程,那些科研機構的編程高手,比如演算法高手,比如圖象處理高手,他們的工作是研究課題而非直接完成商業軟體(當然最終間接成為商業產品,比如微軟研究院在作的研究課 題),因此他們強調的素質可能是另外的東西,這些人(專家),並不能說是程序員,不能用程序員的標准去衡量。

三、軟體項目研發的設計流程
最後補充一點東西,一個軟體項目研發的設計流程是怎樣的呢?以通常標準的設計方法為例,(不過筆者喜歡快速原型法)。
第一個步驟是市場調研
技術和市場要結合才能體現最大價值。

第二個步驟是需求分析
這個階段需要出三樣東西,用戶視圖,數據詞典和用戶操作手冊。
用戶視圖是該軟體用戶(包括終端用戶和管理用戶)所能看到的頁面樣式,這裡麵包含了 很多操作方面的流程和條件。

數據詞典是指明數據邏輯關系並加以整理的東東,完成了數據詞典,資料庫的設計就完成 了一半多。
用戶操作手冊是指明了操作流程的說明書。
請注意,用戶操作流程和用戶視圖是由需求決定的,因此應該在軟體設計之前完成,完成 這些,就為程序研發提供了約束和准繩,很遺憾太多公司都不是這樣做的,因果顛倒,順 序不分,開發工作和實際需求往往因此產生隔閡脫節的現象。
需求分析,除了以上工作,筆者以為作為項目設計者應當完整的做出項目的性能需求說明 書,因為往往性能需求只有懂技術的人才可能理解,這就需要技術專家和需求方(客戶或 公司市場部門)能夠有真正的溝通和了解。
第三個步驟是概要設計
將系統功能模塊初步劃分,並給出合理的研發流程和資源要求。 作為快速原型設計方法,完成概要設計就可以進入編碼階段了,通常採用這種方法是因為 涉及的研發任務屬於新領域,技術主管人員一上來無法給出明確的詳細設計說明書,但是 並不是說詳細設計說明書不重要,事實上快速原型法在完成原型代碼後,根據評測結果和 經驗教訓的總結,還要重新進行詳細設計的步驟。

第四個步驟是詳細設計
這是考驗技術專家設計思維的重要關卡,詳細設計說明書應當把 具體的模塊以最』干凈』的方式(黑箱結構)提供給編碼者,使得系統整體模塊化達到最 大;一份好的詳細設計說明書,可以使編碼的復雜性減低到最低,實際上,嚴格的講詳細 設計說明書應當把每個函數的每個參數的定義都精精細細的提供出來,從需求分析到概要 設計到完成詳細設計說明書,一個軟體項目就應當說完成了一半了。換言之,一個大型軟 件系統在完成了一半的時候,其實還沒有開始一行代碼工作。
那些把作軟體的程序員簡單理解為寫代碼的,就從根子上犯了錯誤了。

第五個步驟是編碼
在規范化的研發流程中,編碼工作在整個項目流程里最多不會超過1/ 2,通常在1/3的時間,所謂磨刀不誤砍柴功,設計過程完成的好,編碼效率就會極大提 高,編碼時不同模塊之間的進度協調和協作是最需要小心的,也許一個小模塊的問題就可 能影響了整體進度,讓很多程序員因此被迫停下工作等待,這種問題在很多研發過程中都 出現過。編碼時的相互溝通和應急的解決手段都是相當重要的,對於程序員而言,bug永 遠存在,你必須永遠面對這個問題,大名鼎鼎的微軟,可曾有連續三個月不發補丁的時候 嗎?從來沒有!
第六個步驟是測試
測試有很多種:
按照測試執行方,可以分為內部測試和外部測試
按照測試范圍,可以分為模塊測試和整體聯調
按照測試條件,可以分為正常操作情況測試和異常情況測試
按照測試的輸入范圍,可以分為全覆蓋測試和抽樣測試
以上都很好理解,不再解釋。

總之,測試同樣是項目研發中一個相當重要的步驟,對於一個大型軟體,3個月到1年的外 部測試都是正常的,因為永遠都會又不可預料的問題存在。

完成測試後,完成驗收並完成最後的一些幫助文檔,整體項目才算告一段落,當然日後少 不了升級,修補等等工作,只要不是想通過一錘子買賣騙錢,就要不停的跟蹤軟體的運營 狀況並持續修補升級,知道這個軟體被徹底淘汰為止。

寫這些步驟算不上賣弄什麼,因為實話講我手邊是一本《軟體工程》,在大學里這是計算 機專業的必修課程,但是我知道很多程序員似乎從來都只是熱衷於什麼《30天精通VC》之 類的,他們有些和我一樣游擊隊出身,沒有正規學過這個專業,還有一些則早就在混夠學 分後就把這些真正有用的東西還給了老師。
網上現在也很浮躁,一些coding fans亂嚷嚷,混淆視聽,實際上真正的技術專家很少在 網上亂發帖子的,如筆者這樣不知天高地厚的,其實實在是算不上什麼高手,只不過看不 慣這種對技術,對程序員的誤解和胡說,只好挺身而出,做撥亂反正之言,也希望那些還 沉迷於一些錯誤人士的coding fans們能認真想想,走到正途上,畢竟那些聰明的頭腦還 遠遠沒有發揮應有的價值。

㈡ 為什麼軟體開發人員要做原型設計

產品原型也是需求說明書的一種,一般與軟體開發說明文檔 一同形成。比開發文檔描述的需求更加清楚,產品原型可以直接展示需求出來。

㈢ 程序員最好的職業方向是哪些

現在軟體和互聯網大概有哪些方向?程序員的職業方向又有那些?
首先是需求從哪裡來?
客戶的項目
如果做的是客戶的項目,需求當然是從客戶那裡來的。客戶絕大多數是軟體開發的小白,但我也見過客戶是優秀的軟體人才,他們很難清楚地描述自己真正的業務要求,這時候就需要有個人隆重出場了:業務分析師。對於大公司,業務分析師是專職的,對於小公司,項目經理或者開發骨幹也就硬著頭皮上了。業務分析師需要把需求理理清楚,交給後面的架構人員做設計。
業務分析師如果在某個行業干久了,就會變成業務專家,例如你把國內各大銀行的核心系統項目都做了個遍,那你對銀行業務的熟悉程度甚至可能超過銀行的特定人員,這時候你就超級值錢了,不僅僅能分析業務,更能夠幫助銀行優化業務,你說牛不牛?
問:業務分析師需要懂技術嗎?
答:最好是懂一點,你分析出來的東西是要程序員們實現的,如果不考慮現有的技術,一味地迎合用戶,肯定會被程序員們罵死。
如果你是由程序員成長起來的業務專家,技術精湛,那就坐著數錢玩吧。
公司的產品
如果你做的是產品,例如微信、QQ、淘寶、魔獸世界、征途、大話西遊,那需求其實是自己公司的人來定義的。
定義這個需求的現在有個時髦的職業:產品經理。像張小龍就是微信的超級產品經理,史玉柱就是征途的骨灰級產品經理。
產品經理主要根據用戶的心理和體驗來設計產品,讓大家用的爽,好的產品經理現在非常吃香,也屬於緊缺人才。
問:產品經理需要懂技術嗎?
答:需要,最好是從程序員成長起來的,知道一個產品設計實現的難度,不然只顧自己爽,也會被程序員罵死。
設計和開發
架構師
聽起來很高大上的一個職位,但是需要強悍的技術實力和深厚的技術積累。架構師的成長需要歷練,需要技術的廣度和適當的深度。設計優雅、靈活、可擴展的架構是架構師的主要工作。
不能只追求最新、最熱的技術,還需要考慮現有團隊的能力,技術的成熟度。
人員需求:★
難度指數:★★★★★
web 後端程序員
後端程序員主要實現業務邏輯,提供介面給前端使用。
Java 當然是用的最多的,但是也有別的相對小眾的像 Python、ruby on rails 等,還有就是 PHP,簡單粗暴,中小網站常用,無論哪一個,學習起來都不是很難。
這一塊的人員需求是比較大的。
人員需求:★★★★★
難度指數:★★★
web 前端程序員
主要是 Java、CSS、JQuery 等,最近幾年大家重視瀏覽器端用戶體驗,瀏覽器端做得越來越炫,所以也很火。
人員需求:★★★★★
難度指數:★★★
手機端程序員
主要是 Android、iOS,由於移動互聯網的發展,現在很火爆,需求量很大,相對而言 iOS 的門檻高一些,程序員也少一點,不過工資高一點。
人員需求:★★★★
難度指數:★★★★
系統編程程序員
有些需求很簡單,有些需求很復雜,需要支持海量的用戶,海量的並發,像淘寶的「雙十一」, 像微信的春節搶紅包。
需要做雲計算,虛擬化,分布式處理,支持系統水平擴展。對於海量的數據,還需要做大數據分析,從中提取有價值的信息,例如 Hadoop。由於需要對操作系統,資料庫,伺服器端系統做定製開發,甚至自己做一套,小公司一般沒有這樣的技術能力,主要是 BAT 這樣的公司在做。人員需求不是很大,對程序員來講,需要在一個領域鑽研得非常深,技術穩定度比較好。
人員需求:★★
難度指數:★★★★★
安全
互聯網時代,你的信息一不留神就有可能被偷走,安全變得越來越重要。所以單單實現了功能,滿足了性能還不夠,很多公司,尤其是 BAT 對安全非常重視。當然這個方向也需要對技術鑽研得很深才可以。
人員需求:★★
難度指數:★★★★★
測試
這個對技術要求不太高,但也需要測試相關的知識,能夠設計測試用例,准備測試數據,執行測試。
現在敏捷開發流行,對測試也要求懂開發知識,至少能夠開發一些自動化的腳本。很多女生後來轉到了測試崗位,我想主要是因為女生比較細心。我在 IBM 見過一個非常優秀的測試人員:她不僅僅能出色完成上面指派的工作,還可以參與設計開發的討論,經常能從測試角度提出開發人員都沒有想到的問題,極大地幫助提升了軟體的質量。
資料庫管理員
幾乎所有項目都需要資料庫的支持,對於大型、超大型項目,會有一個叫做 DBA 的職位。他對資料庫知識極為精通,平時對資料庫進行管理,開發時能幫助開發團隊設計資料庫,並且找出性能瓶頸,進行性能調優。
美工 / 文檔
美工
主要是對界面進行美化,一般是由美工先出界面原型,大家討論,修改,確定後美工會生成各種界面元素,像圖標、按鈕等。
現在對美工也有一定的技術要求,不僅僅是畫界面,還要把 html 模板做出來,所以美工需要懂得 HTML、CSS,甚至部分 Java。程序員拿到 html 模板後,往上添加業務代碼即可。
文檔編寫人員
小項目一般是團隊中有人兼職做,大的項目、產品會有人專職寫文檔, 我 2003 年的時候參與過上海證券交易所的項目,看到有個專職的文檔編寫人員寫的 Word,非常專業、精美,完全是可以直接出版的水準。我把它 下來,自己都想山寨一個,但照葫蘆畫瓢都做不出來。
項目管理
項目已經開始了,業務分析師、架構師、開發、測試等一群人如餓狼撲食,勢必要把項目撕個粉碎。可是這么多人怎麼協作? 如何管理?進度能不能按要求完成?這就需要項目經理出馬了。
項目經理,說白了就是帶著大家做項目,主要和人打交道,需要協調各個方面的關系,保證項目的進展順利。
問:項目經理需要懂技術嗎?
答:當然需要,最好是開發出身,要不然你就聽不懂那幫程序員在說什麼,只能在表面漂浮著,無法深入項目,別人也就不服你,團隊肯定是帶不好的。
運營
如果你是在開發自己的產品,開發完成以後,馬上就會遇到一個問題,怎麼推廣?
在互聯網時代,世界是公平的,競爭異常激烈,一個好的軟體、App 或者網站,如果缺乏運營,你的技術再好也不行。
運營其實就是想方設法讓你的產品被人知道,被人用起來,這里邊水很深,例如怎麼寫個軟文?怎麼在社交網路、微信、微博進行營銷?怎麼統計,分析,精準地定位?
這方面,2014 年以前的小米絕對是典範。雷軍的 7 字訣:專注、極致、口碑、快。 黎萬強的《參與感》 都是經典。
好的互聯網運營人才奇缺,當然非常的吃香。對編程不感興趣的同學,不妨看看這個方向。
說了這么多職業方向,你會發現,絕大多數都要求懂一定的技術,所以我其實想說的是:剛參加工作,不妨先從程序員開始,慢慢地再尋找自己感興趣的方向。

㈣ 程序員喜歡什麼樣的需求文檔

程序員實際上並不需要這個文本的需求供認書,程序員喜歡「圖片」,文檔的文本應該是產品學生在腦子里思考,而不應該直接把這個想法描述成文字。
程序員需要的是一個清晰的交互圖,在關鍵位置的交互圖顯示,有一些邊界條件,交互圖不需要使用亂七八糟工具輸出,一張紙和鉛筆描述清晰,但恢復需求描述的所有元素就可以了,雖然沒有UI設計,但程序員可以開始開發演示。
一、產品介紹和行業簡介。首先,給程序員簡單介紹一下產品的價值,比如產品的作用,產品可以提供的服務,以及產品相對於競爭對手的優勢。還要介紹產品的目標用戶和使用場景。第二點是簡要說明行業的現狀,未來的趨勢是什麼,同行業競爭對手的情況如何?

二是產品的介紹。第一,實體關系圖很重要。當您將產品從0變成1時,為了使資料庫開發人員更快地了解您的產品,實體關系圖(e-r圖)將發揮很大的作用,資料庫開發人員可以參考圖來做數據表結構設計。
第二是用戶角色表的訪問。當涉及到角色和許可權時,需要一個全面的角色許可權表單來促進開發人員的參考。第三是業務流程圖。通過業務流程流程圖,可以從總體方向了解產品的整體邏輯,通過拆卸業務流程流程圖得到流程流程圖。

三是各種細節問題。產品的要求、功能和交互指示。寫功能描述,交互說明,不能漏掉一些細節,導致邏輯不嚴謹。可以從以下幾個方面來考慮,它會讓你更全面地思考:欄位,欄位描述,數據源;先決條件,排序機制,刷新機制;狀態流(頁面可能有多個狀態,需要解釋);交互操作(正常操作,異常操作)

㈤ 程序員背景的產品經理畫原型用axure好還是直接寫代碼好

原型肯定是比較快的,代碼不太了解。但個人覺得,不管哪種方法,能夠清晰的表達產品需求的邏輯、流程,都可以拿來用。

㈥ 產品經理做的原型和交互設計師做的原型有什麼區別

般來說,除了從設計師轉崗的,大部分產品經理輸出的原型都是低保真的,表現形式也五花八門。我見過用畫圖板配合截圖的,也見過用PPT的。這些原型都是為了輔助說明產品的意圖,產品經理也不會花時間去輸出一個充滿注釋,或者有各種交互行為的原型。
而交互設計師則會分不同的階段輸出不同的原型。比如在產品概念階段,在白板上畫線框圖;創意階段,在紙上畫圖進行構思;後期使用軟體(比如Axure)繪制線框圖,並配上各種注釋和說明;有時候為了進行測試,也可能做一個能模擬實際使用情況的高保真原型。
所以對於產品經理來說,原型僅僅是輔助他說明意圖的工具,產品經理並不靠原型混飯吃,他就算不會使用Axure之類的工具也沒關系。而原型對於交互設計師,則是安身立命的工具(當然並不是唯一的工具)。在我看來,交互設計師的一個功能就是將產品需求翻譯成設計需求,並通過視覺化的方式讓參與項目的人員容易理解,而原型就是很好的一個工具。另外原型也是設計師整理思路,擴展思維,記錄設計成果的工具。所以一個好的交互設計師必然能很好地利用原型這個工具,在不同的設計階段靈活運用。

㈦ 如何正確對待需求的變更

軟體需求是軟體項目最難把握的問題,同時又是關系項目成敗的關鍵因素,因此對於需求分析和需求變更的處理十分重要。 軟體需求變更會給項目帶來巨大的風險,會導致項目的成本費用增加、開發周期延長、產品質量下降及團隊工作效率下降等不良後果,因而需求變更在軟體開發項目中應該盡量避免。然而由於政府對特定軟體的相關要求、用戶部門市場戰略的調整、工業界的發展等因素都可能帶來需求的變更,而這些因素往往不可避免。在軟體開發過程中如果只有一條真理的話,那一定是:需求的變化是永恆的,需求不可能是完備的。因而,對於需求變更應該正確的對待,盡量將其負面影響降低到最低。 2、減少需求變更 正如前文所說,需求變更往往是不可避免的。通常是項目負責人員花費了大量的氣力避免需求變更,可最後需求變更總是會出現。但是這並不意味著項目開發人員不應該做這方面的工作,項目開發人員對於需求變更的正確態度應該和軟體測試的態度一樣,在需求並更發生之前盡量減少需求變更,以將需求變更帶來的風險降低到最低。項目開發人員切忌在項目設計之前試圖消除需求變更,這樣做往往費力不討好。 相比於需求開發人員而言,客戶可能對需求變更認識不足,認為他們出錢,程序員或軟體開發公司就要為它服務,因此客戶對需求變更往往將需求變更視為兒戲,隨個人喜好隨意變更需求。因此,在需求人員同用戶代表或用戶部門主管人員接觸時,就應該向他們挑明態度,和他們協商好,特別是應該讓他們清楚軟體的定價應該與軟體的功能相關,以及需求隨意變更所帶來的風險的承擔者應該由客戶和項目開發者共同承擔。通過這樣做,讓客戶在需求分析之前就盡量對他們所需要的功能有個整體的了解和確定的思路,而不是等到程序員開始編碼了,才提出以前原本在需求分析時就可以提出的需求。 讓客戶明白減少需求變更的重要性後,需求分析人員應該採取合適的方法同客戶交流,幫助他們明確他們的需求。需求分析人員和客戶的關系不應該僅僅是記錄人員和需求提供者,他們的關系應該更多的是戰略合作夥伴關系。雖然需求分析人員和客戶存在著服務商和顧客的關系,但是他們有著一個共同的目標:開發出適合客戶需求的軟體,因此需求分析人員除了記錄客戶提出的需求以外,還應和用戶討論,提出一些建議,使用合適的工具幫助客戶提出需求。在需求分析時,盡量多的召集需求研討會,邀請開發人員和客戶共同協商探討,在研討會上允許任意的提出需求,並將這些需求整理成檔後由客戶代表和需求分析人員共同商議可選的功能,這樣能夠盡量使得需求完備。在需求開發時,開發人員採用原型的方法啟發客戶思考功能需求也不失為一個好辦法。 雖然需求不可能是完備的,但是在項目開始設計時盡量使得需求完備還是應該的,也是值得的。 3、規範文檔 需求文檔作為客戶和開發人員的介面在整個項目開發過程中起著舉足輕重的作用。需求文檔應該按照一定的格式和規范書寫,而且應該具備完整性、一致性、基線控制、歷史記錄等特性。文檔書寫完畢以後應該交給客戶審閱,在客戶滿意的基礎上確定基線。一個完整規范的需求文檔不僅能夠有助於設計人員和編碼人員完成項目開發,更重要的是它作為一個階段性的成果可以供軟體需求變更時參考。 需求變更發生後,也應該生成相應的文檔,並且這些文檔的書寫也應該採用規范的形式書寫。需求變更文檔也應該包含基線以供下一次修改參考,還應包含歷史記錄以供開發人員和客戶清楚當前的文檔內容的新舊以及歷史文檔的情況,以備以後查看。 4、設計良好的體系結構 開發軟體就如同建造一座房屋,軟體體系結構則如同建房屋時的規劃。兩層高的家庭住宅和幾十層高的商業大廈建造時的規劃必然不同,同樣,大型軟體和小軟體採用的體系結構也必然有所區別。因此,設計一個合理的體系結構對於項目的成敗也是十分關鍵的。 體系結構的建立一般位於需求分析結束之後,軟體設計之前。軟體體系結構的設計是從結構的角度對整個系統進行分析,選擇合適的構件,安排構件間的相互作用以及他們之間的約束,形成一個系統框架以滿足用戶需求。在設計軟體體系結構時,不僅應該想到如何完成滿足現在已經提出的用戶需求,同時也應適當地考慮到需求的變更。 採用有彈性和可擴展的軟體體系結構設計可以有效地降低需求變更引起的風險和維護代價,能夠在項目范圍未發生變化的前提下很好地適應需求的變化。體系結構的靈活和可擴展性設計使得開發者可以在這種體系結構上面進行各個功能層的組合和分離,也可以將各個功能層分布在各個不同的伺服器上共同提供服務,因而能夠快速的對需求變更作出響應,並且對已經開發好的系統產生盡可能少的影響。 體系結構的設計除了考慮到體系結構的靈活性和可擴展性以外,還應盡量採用鬆散耦合的結構,使得結構中的各個構件之間的關聯程度盡可能的少,這樣就能在需求發生變更時一個構件的變化對另一個構件產生盡可能少的影響。 現有的軟體體系結構很多,包括管道-過濾器結構、B/S結構(含C/S結構)、解釋器/虛擬機結構、黑板系統以及基於中間件技術的體系結構。在設計體系結構時,首先應該選出適合項目需求的系統結構,然後在從中挑選出那些擴展性比較好,構件之間耦合性比較小的體系結構。基於中間件技術的體系結構就是擴展性比較好的體系結構。採用中間件技術,中間件作為用戶界面和操作系統以及網路的連接點,向上為用戶提供服務,向下屏蔽操作系統和網路的細節。這種分層的思想能夠很好的適應操作系統和網路的變化,可擴展性十分的好。同時,可以在中間件中給出容易改變的介面或是為系統將來改變預留介面來實現功能上的需求變更。當然可擴展性比較好的體系結構遠不止基於中間件技術的體系結構這一種,具體的選擇和運用應該由設計人員根據實際需要考慮。 5、採用面向對象思想 需求是不穩定的,因而沒有不變的需求,然而需求之中卻有穩定的東西,這就是對象。世界都是由對象組成的,而對象都是持久的,例如動物、植物已經有相當長的時間。雖然對象也在變化,動物、植物也在不斷的進化。但對象在一個相當長的時期內都存在,動植物的存在時間肯定比任何一家企業長久。面向對象的開發方法的精髓就是從企業的不穩定需求中分析出企業的穩定對象,以企業對象為基礎來組織需求、構架系統。這樣得出的系統就會比傳統的系統要穩定得多,因為企業的模式一旦變化,只需要將穩定的企業對象重新組織就行了。 面向對象(OO)技術的三大特徵保證了採用OO技術可以建立易於改變和加強可重用性的軟體系統。封裝可以把問題影響的范圍縮小,外部的變化要求對系統的影響可以限定到某個類層次或某些類層次中,從而改變系統的一部分相對簡單;繼承可以使改變基於原有技術基礎,很大程度上減少重復開發工作;多態的應用可以使開發和設計人員在相對統一的介面下更改系統的實現細節,從而改變系統的行為。 顯然,OO技術是一種增強軟體可維護性、健壯性以及保持設計穩定性的一種分析和設計方法,可以在一定程度上快速對需求變更進行反應,並可相對減少需求變更需要的成本。因此,在系統開發過程中應該盡量的採用面向對象的思維方式來構建系統和開發系統。 6、需求變更控制 正如前文所言,需求變更不可避免的會發生,那麼當需求變更發生後項目開發人員應該如何應對呢? 一般來講,需求的變更通常意味著需求的增加,需求的減少相對很少,而且處理也比較容易。當客戶提出新需求的時候,項目開發人員應該分析這些新需求對項目現階段帶來的風險,得出雙方實現變更需求的需要的成本,包括時間、人力、資源等等方面,再與客戶商討是否有必要進行變更和如何在最小代價下實現變更。 當客戶確實希望進行需求變更時,可以讓開發人員開發一個快速原型,讓用戶體驗一下,以確保客戶確確實實的希望添加這些需求。在客戶和項目開發人員共同確定了需求變更後,項目開發人員應該與客戶簽訂一份新的合同。 當客戶提出需求變更並且簽訂了合同後或是開發人員根據市場和國家政策作出的需求變更得到確證後,項目開發人員應該決定何時實施這些變更。對於那些對系統影響不大和一些優先權十分高的需求變更可以立即在項目中實施,而對於那些對於整個系統現階段的開發影響很大,而且又不是十分緊急的需求可以放在下一個版本中進行。無論是立即實施還是放在下一個版本中,都應該給新的需求一個充足的開發和測試時間,保證產品質量。 結論 在面對需求變更時,除了通過減少需求變更和規範文檔,從分析和設計的角度通過採用合理的分析和設計方法適應需求變更以外,還應該改變我們設計的意識和對需求變更的理解,做好對需求變更的控制和管理,做到對需求變更的靈活應對,在一定程度上降低維護代價和提高用戶滿意度。

㈧ 程序員工作到底能幹多久程序員的前途如何

千千萬萬的程序員們一直困惑程序員的前途如何、程序員工作到底能幹多久的問題。目前比較普遍的認識,程序員的職業通道有兩條進階路線。一條 是技術路線,即由程序員、高級程序員、系統分析師,到架構設計師。在這條路線上,立足於從業務模型到計算機軟體模型的轉換,成為高端的軟體技術工作者。另 一條是管理路線,即由程序員,經開發小組負責人、項目經理,再到企業中高層管理者。程序員加強自己管理意識的培養,多站在組織的角度來分析問題和解決問 題,成為優秀的管理者,甚至職業經理人。 近年來,產品管理成為企業多產品經營形勢下一個越來越受重視的管理課題。特別是知識經濟環境下,諸如互聯網與軟體、創意、傳媒等現代新型產業鏈中, 其幾乎可以忽略不計的復製成本,有競爭力的產品與優秀的產品管理成為了制勝的關鍵。基於產品的商業化運營,在越來越具聚合效應的網路時代,扁平經營、草根 聚合、精準營銷、直通車服務等全新的經營環境常常造就了贏者通吃的局面,以產品為中心的企業管理逐漸形成獨立的產品管理體系,被眾多企業所關注和採用。 在軟體企業中,隨著產品管理的興起,可以說,走向產品,是程序員在技術與管理之外的第三條職業通道。越來越多的程序員開始轉型做產品工作,特別是對 那些具有創業意識的程序員而言,走向產品是一條必經之路。騰訊的馬化騰和360的周鴻禕,他們都是由程序員做起,然後開創自已的產品和事業。 產品管理的興起,產生了以產品經理為中心的產品工作職業方向。產品職業方向可以從產品系列的職務與崗位兩個維度來觀察。職務上,有首席產品官 (CPO)、產品總監、產品經理、產品專員、產品助理,其中尤以產品經理一職最為中心;崗位上,有產品競爭分析與用戶需求管理、產品創意與策劃、產品原型 設計、產品運營規劃、產品實現過程跟蹤、產品商品化實施、產品運營、產品經營成果分析與跟蹤、產品升級維護管理、產品管理體系與制度建設、產品人員技能培 養等。這些基於產品而設計的崗位以有效滿足用戶需求為中心,它不同於其它以專業技術和職能效率為中心的因職能分工而產生的崗位。 產品管理是近些年隨著IT和互聯網的快速興起而被各企業所重視,而現在的各大院校並沒有產品管理相關的專業,各類培訓機構也少有類似培訓課程,從事 產品工作的人員大多是從不同專業、不同崗位轉型過來的。相比較而言,程序員有著營銷、測試、客服等崗位走向產品的人員所難以比擬的優勢。有些公司甚至做出 了規定,欲從事產品工作,必須要有多年的軟體開發經驗。程序員轉型從事產品工作所具有的獨特優勢主要包括以下幾點: 第一,程序員能夠更好地理解產品的實現方案,所策劃的產品更具可行性。做產品策劃工作,也許缺的不是點子或創意,而是有效可行的方案。多年的程序員 工作經驗,對軟體技術和軟體實現方案的判斷,可以規避那些天馬行空的產品想法,工作更有成效。比如在整理用戶需求時,程序員的前期有效判斷和可行性辨別, 會大大提高產品的策劃質量與速度。程序員出身的產品人員可以和研發人員進行無隙的溝通,用更便於研發人員理解的語言和思路來進行產品方案的解讀和跟進。 第二,程序員的軟體開發工作,與其說是代碼的編寫,不如說是邏輯語句的組織。程序員一般都具備嚴密的邏輯思維能力,這是進行紛繁而雜亂的需求分析和 產品概念設計必備的優勢,更有利於從中分門別類理清脈絡關系,轉換為產品功能規劃,把產品做成精品。例如需要往U盤寫文件,產品人員可能只想到正常的操作 邏輯,但程序員可能會想到更多異常情況,如:U盤損壞、傳輸過程中拔出、斷電、傳輸的文件損壞、U盤防寫、重復文件、焦點位置、空間不足等等。再有,好 的用戶體驗的產品,在本質上,就是產品功能的邏輯展示,或者說用戶操作的邏輯引導。 第三,程序員往系統分析的技術方向發展,從本質上來說,同往產品策劃方向發展是相通的,都需要對真實世界本質關系有著充分的理解與把握。能夠走向系 統分析員的優秀程序員,完全有可能成為一個優秀的產品策劃人員。差別在於系統分析員的工作成果是面向程序員、面向計算機,而產品策劃是面向用戶、面向市 場。每一名程序員也必定是某個軟體產品開發工具的使用者,有深厚的軟體產品使用體驗,具有從用戶出發來表述問題的基礎。 第四,程序員一般都具有快速學習能力,保持對計算機相關行業動態和技術革新的觀察與思考,這在一定程度上會培養對行業與技術的洞察力。產品策劃和設 計工作,最後能否獲得市場的成功,考驗的正是這種洞察力。因為產品工作是時時圍繞解決的是什麼人的什麼問題來開展,也就是始終圍繞做正確的事。只 有對行業與技術有洞察力的人,才能夠站在用戶需求的角度來理解與體驗,激發創意,做出好產品來。 當然,程序員雖具備上述獨特優勢,並不等於程序員轉做產品工作,就一定能夠成功。要策劃出好的產品,要成為一名優秀的產品經理,他們也面臨著各種挑戰: 第一,創新和結構化思維的沖突。 結構化思維可以說是程序員的典型標志,這種思維模式對於把一件事情做好是很重要的,但它往往也會是創新思維的天敵。創新卻是產品工作的靈魂,程序員需要不斷打破常規激發靈感才能做好產品工作,就必須克服已經形成的思維定勢。 第二,團隊協作與英雄主義的矛盾。 程序員往往習慣於單打獨斗的工作方式,崇尚技術牛人,缺少團隊協作意識和與人溝通的技能。產品工作則需要大量的溝通協調,甚至組織領導工作,強調的是團隊作戰。在合作精神方面,想要轉向產品工作的程序員的確亟待加強。 第三,商業意識和市場運營知識匱乏。 特別是在全面產品管理思想下,產品人員需要有很強的市場營銷方面的知識和商業化運作的策劃與分析能力,僅僅把產 品做出來是不夠的,賣得掉才是硬道理。產品策劃的環節,面臨著營銷模式、目標用戶、渠道選擇、競爭策略等的選擇與設計,這也是擺在技術出身的程序員面前的 重要課程。 每個企業,都會根據自身所在行業特點和本企業的資源優勢,來部署不同形式的產品管理機制。程序員針對自己的性格特點和能力特徵,抓住產品管理這一方興未艾的職業機遇,走向產品,以優秀產品經理的能力模型培養來規劃學習道路與職業生涯,是值得重視的一個職業方向。 ------------------------------------------------------------------------------ 安徽高新專修學院

㈨ 如何把業務需求轉換成程序員需求

作為程序員,作為需求分析設計人員,更應該明白客戶就是上帝。在與用戶交流的時候,不要把客戶想像成架構師,要把他們當做「白目」來對待,因為客戶的沒有開發過軟體的經驗,他們表達的想法不是按照程序來執行。如果程序員只是一味的揣測客戶的意願,而不能自己的所想轉換成原型,那麼很可能會弄巧成拙。 比如客戶甲說想要在應用軟體中加個公雞報時的功能。程序員A以為客戶想要一個公雞寵物,點擊時可以報時,而實際上客戶是想讓軟體可以設置鬧鍾,在某個時間點發出公雞鳴叫的聲音。可想而知,設計出來的寵物再好,也不是用戶所需要的。 也許有一些客戶是屬於「鑽石王老五」類型的,他們對軟體一竅不通,偏偏還在和你談需求,他們會對軟體提出很多意見,他們會很固執的讓我們按照他的思想去設計、實現,盡管那樣可以,但是軟體的性能及維護性將大大降低,這時候我們需要去主動的引動客戶,不是客戶左右了你,就是你左右了客戶。 如果客戶左右了你,盡管可能你按照客戶的需求把軟體設計出來了,但這卻是一個失敗的軟體,因為它的運行效率很低,而且需求又經常發生變動,而這個軟體沒有絲毫的可擴充性,那麼最後客戶會說這個軟體設計師給他們設計的軟體不夠好,而不是客戶影響了正常的開發,那麼作為軟體的需求分析設計師就應該對這件事會責任。業務需求是通過對業務流程、業務目標、業務實體類型和決策過程的業務模型的分析捕獲的。業務需求應或可以通過一組關鍵性能指標進行度量,以便提供有關實現要求和滿足業務需求方面的成功程度的反饋。 它們是通過一個對變化進行劃分、分解、細化、映射和分析的過程(面向變化的分析和設計)解釋的。劃分是將業務域分解為域組成類型或功能區域。這表示結構劃分。業務的分解是對如何將流程分解為子流程和用例的解釋。分解過程將創建一個分層結構,而細化過程則將這個分層結構細化為一組可操作的面向目標的交互序列。

㈩ 產品經理和程序員,如何避免矛盾

產品實現是你的目的,為了這個目的不必太講究。

做了一陣子之後我有了自己對於與程序員相處的方法論,對這句話並不苟同,我還是傾向於把事做好的同時也能把話說好,雖然我現在也能深刻的領會到當時leader的核心意思是產品本身是第一位的。

接下來我就闡述下自己的一些心得:

閱讀全文

與程序員出需求人員原型相關的資料

熱點內容
在電腦上怎麼找到加密狗圖標 瀏覽:435
電腦的瀏覽器怎麼打開pdf文件怎麼打開 瀏覽:142
pdf卡片庫下載 瀏覽:11
單片機中二進製表示什麼 瀏覽:725
java網路編程推薦 瀏覽:794
施耐德開關編程 瀏覽:65
組織胚胎學pdf 瀏覽:844
linux查看發包 瀏覽:496
加密貨幣交易所暴利時代 瀏覽:824
歌詞滾動效果android 瀏覽:14
程序員一天的六場戰斗 瀏覽:797
自製壓縮泵的做法 瀏覽:622
androidstring變數 瀏覽:247
數學乘法速演算法 瀏覽:986
壓縮包製作後照片順序怎麼改 瀏覽:680
fibonacci數列演算法 瀏覽:775
產品經理要和程序員吵架嗎 瀏覽:252
grub2命令行 瀏覽:618
無法獲取加密卡信息 瀏覽:775
雲伺服器網卡充值 瀏覽:509