關於好程序和好產品的思考

從小接觸電腦,大學開始系統學習軟件工程,工做了繼續編碼,編了這麼多代碼,我在思考我所作的一切的意義在哪裏?也請碼農兄弟們和我一塊兒思考一下,咱們耕種的做物到底給別人,給社會,給咱們本身,有多大的貢獻。有時候我在想咱們學了這麼多東西,意義在哪裏,是爲了作什麼?咱們學了組成原理,數據結構與算法,各類語言,設計模式,各類架構,軟件工程,敏捷開發,項目管理,雲計算,大數據等等,那麼這些東西最終的目的又是爲了作什麼呢? 我以爲目的就是作出好產品,好產品的前提是好程序,咱們學的大部分知識都是爲了寫出好的程序。 我以爲好程序無非三點: 一、性能優秀,性能是程序很重要的一個特性,不管是辦公軟件、殺毒軟件、遊戲仍是web幾乎全部的程序都是很關注性能的,沒人喜歡慢吞吞的軟件,咱們學的計算機原理,算法,數據結構,各類xx性能優化,各類xx調優,各類高性能xxx,各類xx編程藝術,各類架構,分佈式也好,並行計算也好最終目的是什麼?就是爲了良好的性能,說白了就是爲了程序效率 二、容易維護:程序不是一成不變的,維護性也很重要,什麼代碼整潔之道啊,程序員素養啊,大道至簡啊,軟件工程啊,設計模式,重構,REST,AOP,IOC,面向對象,UML,文檔驅動開發,等等各類方法各類概念,其實目的無非就是讓程序代碼更優美,結構更合理,改起來更方便,之後更好維護。 三、魯棒性好:做爲好程序來說,BUG必定要少,這是必須的,對於用戶的各類合理不合理操做都要有良好的應對方案,咱們學習各類測試技術、各類編程思想,安全技術,密碼學、各類高可用、各類主從架構,各類備份技術等等都是爲了讓咱們的程序保證良好的運行狀態,不管是用戶的誤操做仍是惡意攻擊,不管是天災仍是人禍咱們的程序都能從容面對。linux

作到上述3點我以爲就是好程序了,固然,寫好程序的前提是得會寫程序,因此還有些基礎知識是咱們必須學習的,好比各類語言啊,操做系統啊,計算機網絡啊等等基礎的東西,這些東西可讓咱們能夠開發程序,但不足以開發好的程序。這也是區分初級程序員和高級程序員及架構師的標準。

會寫程序只能算是程序員或初級工程師,知足了好程序標準中的一點,就能夠稱爲高級工程師了,好比你會寫高性能的程序,確定沒人說你是初級工程師了,再好比你寫的程序沒bug,確定也不是初級程序員能作到的。上述3點知足2個以上就能夠達到架構師的水平了,好比有的架構師擅長高性能的架構,有的架構師擅長流程管理開發規範等。一般3點都知足的人事極少極少的,由於其實從成長路線角度講,實際上是三條不一樣的發展路線。 知足第一點的,也就是寫出高性能程序的,一般是計算機科學與技術或相關專業的,這些人邏輯性好,數學算法功底好,計算機底層瞭解深入,偏向理論,他們的訓練過程當中大多注重的是算法和理論,對於工程的概念有所淡化,一般他們習慣面向過程的開發,代碼一般看起來沒什麼組織。 知足第二點的,一般是學軟件工程的,這些人不愛數學,不精算法,不太接觸理論,更關注的是實際工程開發,更擅長設計模式,開發流程,UML建模,數據建模,他們更關注的是語言和代碼,何況他們沒過高的智商寫出不容易看懂的程序,所以他們寫出的程序更加容易維護,可讀性好。 知足第三點的,一般是偏測試或信息安全的,他們關注的是軟件的漏洞,攻擊和防範,這些人一般不寫算法也不大規模開發程序,他們更多的是看別人代碼,發現問題發現漏洞,和嘗試別人的程序。 比如遊戲中的法師、戰士等職業都是不一樣的發展方向,想都專精是有些難度的。也正是如此寫出好程序一般不是一我的能夠搞定的,須要團隊的配合。因此誰都別說本身寫的程序好,你的算法好效率高,也許代碼就像一坨翔,他的代碼優美無比各類設計模式運用自如,就是運行起來慢如牛,個人代碼效率也高設計也好,就是bug一堆。。因此很難就一方面說誰的程序寫的好。 那麼有了好程序,是否是就等同於有了好產品呢,固然不是的,好程序只是好產品的前提,是必要不充分條件。你說你的產品一堆bug,運行的還慢,擴展性又很差你敢說你的產品是好產品?固然不能。那是否是好程序就是好產品呢,也不是,不少軟件、產品程序很不錯,bug少,運行快,代碼也漂亮但仍是很失敗,爲何呢?由於它界面巨難看,用戶體驗很差,不易用,最致命的的是沒有觸到用戶的痛點,沒什麼特點,沒比別的產品有什麼優點。 那什麼產品纔是好產品呢,我以爲也有三點: 一、創新性,就是說這款產品是有特點的,能觸摸用戶痛點,幫用戶解決之前不能解決的問題的,換句話說用戶用過這款產品後就離不開了,變成生活的一部分了,這就是產品的核心競爭力,回顧一下全部成功的產品,windows,office,電子郵件,google,百度,淘寶,QQ等等,這些產品的成功就在於他的創新改變我人們的生活方式,改變的越大,產品就越成功,微軟爲何成功,他讓世界上進入計算機時代,使世界發生了巨大的改變,linux也是成功的產品,但爲何沒有windows成功,就是他帶來的影響沒有windows大,他只改變了服務器市場。再看qq,10多年前,人們的通信仍是靠傳呼機,手機,短信。qq改變了人們的通信方式,在中國的影響實在太巨大了,幾乎每一個人都有至少一個qq號,包括中老年人,這就是他成功的地方。反過來想,若是你發現了哪些產品能夠改變人們的生活,請立刻去作(別忘了叫上我),若是已經有人在作了,請當即加入他們或投資他們,若是已經有人作成了,那你只有詛咒他們了,就像如今罵騰訊那樣。 二、充分理解用戶,這也是成功產品不可缺乏的,必定要注重用戶體驗,作到這點其實很難,很是難,不少時候是你在臆想用戶的需求,其實用戶並不但願是那樣的,這裏的學問就太多太多了,須要的就不光是計算機學科的知識了,心理學,藝術,哲學,數學等多個學科的綜合知識才能達到充分理解用戶,如今火熱的大數據搞得轟轟烈烈的,目的是什麼?就是充分理解用戶,瞭解產品的狀態,分析和挖掘用戶的需求,因此要是挖掘不到用戶心理所想,就別說是搞大數據的,充其量是搞報表統計什麼的。其實也未必要搞什麼大數據才能充分理解用戶,理解用戶途徑不少,最直接的,最有效的我以爲就是,本身就是用戶,固然了,這也是有侷限性的,畢竟你不表明大多數,不過在沒那麼大規模作分析前,你的產品首先要本身用着滿意,順手。剛纔說qq的成功是改變了人們通信方式,有人會問,那聊天工具多了,爲什麼qq成功了呢,其實就是卡在了這點上,qq能充分理解用戶。另外qq知足好程序的標準了,其餘軟件可能還到不了好程序階段呢,有的慢,有的bug多。另外,充分理解了用戶,你才知道用戶須要什麼,用戶的習慣是什麼,而後你的產品是要符合用戶習慣的,同時也是要培養用戶習慣的,和搞對象同樣,磨合久了就離不開了,你的產品就成功了,你就有錢了。。。 三、好賣相:這個沒必要多說,人們是比較感性的,對於美的追求是本能的,軟件也不例外,好看的老是有優點的,沒辦法。固然是知足以前前提的了,由於中看不中用固然不行,可是一樣好用的前提下確定用好看的啊,很正常。程序員

以上就是我對好程序和好產品的一些思考,循着這個軌跡,若是這些點都達到了的話,我以爲沒有不成功的理由,試想一下,一個能夠改變生活,使生活更便利,操做體驗良好,界面美觀,沒有bug,響應速度飛快,常常更新的產品,難道會沒人用嗎,不可能嘛,不成功絕對是命很差了。可是話說回來,想造出這樣的產品又豈是朝夕之功,與君共勉吧。。web

相關文章
相關標籤/搜索