那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

程序員的價值體現在哪些方面?

j4AI_wujianying ? 來源:未知 ? 作者:胡薇 ? 2018-09-11 16:08 ? 次閱讀

高手程序員之間的神對話

隨著做軟件的時間越來越長,我發現,做軟件越來越難。難在哪?難在怎么做出一個好的軟件。好的軟件標準是什么?兩個詞,好用,好看!程序員的最大價值在于做出好用又好看的軟件的能力。

因此,我覺得程序員的價值絕對不在于技術本身,而在于做出好用且好看軟件的能力。

這是一個開放性的話題,每一個人都是菜鳥過來的,我希望和祝愿每一個技術人員都能盡快成為高手,也希望更多老鳥來分享經驗。

在這篇文章,我將根據自己的經驗來分享,期望能給人有更多的有幫助的信息。在這里,我只想從技術角度來分析,技術不一定和收入相關聯的。

1 命名

程序代碼的命名,我們就可以看出一個人的水平。最差的命名就是使用中文、拼音、拼音縮寫、中英混搭,接下來要么是模仿式命名,要么干脆就隨意命名。

模仿式命名典型的就是“××DAL”,說實話,我覺得類似于“UserDAL”這樣的名字,我覺得太不美觀了,一般這我就知道這是典型分層架構的模仿者,說明他是有些經驗的人了。

隨意命名,就是寫代碼的時候,名字壓根就沒有意義,比如var list = new List,其實完全可以寫成var users = new List的。

想要命名的更有意義,你只需要將每一個類、每一個方法、每一個單詞的名字都用你開發時的意思直接描述出來就行了。

2模型抽象能力

模型決定一個系統的可用性、穩定性、易用性、可維護性、可擴展性!

這個模型不是UML建模,而是軟件的核心。就是你設計一個軟件時,為其所抽象出來的原理性的描述。模型決定一個軟件的質量、易用性和擴展性。

凡是優秀的軟件,都有一個共同特點,就是其模型構建的非常漂亮,當然也有不怎么優秀的軟件,模型也很漂亮。

微軟MEF,我個人覺得其模型構建非常的漂亮和優雅,有興趣同學可以看看《體驗Managed Extensibility Framework精妙的設計》這篇文章。

MEF的核心就是組合基元,如下圖所示,它簡單的定義了動態組合的支持基礎,然后一層一層的進行擴展。

當然了,因為文章是我寫的,我也得得瑟的顯擺一下OSGi.NET的設計。

可以說,OSGi.NET的設計。OSGi.NET的設計也是類似于MEF,內核很簡單,只是為了實現三大功能:動態插件化、面向服務、擴展。

不過,我們卻可以從簡單的OSGi.NET來支撐WinForm、ASP.NET、ASP.NET MVC等任意應用,從簡單控制臺擴展到iOpenWorks這樣的自動化部署與軟件生產線平臺。它的擴展方式是:

WinForm等桌面插件應用 = OSGi.NET + 應用插件

ASP.NET應用 = OSGi.NET + WebExtension + Web插件

MVC應用 = OSGi.NET + WebExtension + MvcWebExtension + Web插件

自動部署 = OSGi.NET應用 + iOpenWorksBundleRepository + iOpenWorksBootstrap + 自動升級插件

遠程服務 = OSGi.NET應用 + 遠程服務宿主插件

負載均衡 = OSGi.NET應用 + 遠程服務宿主插件 + 負載均衡客戶端插件。

在OSGi.NET之上的任何應用,都是基于組合和擴展的方式,并沒有去不斷變更OSGi.NET內核本身的代碼。

此外,OSGi.NET內核能夠支持.NET Framework、Mono、.NET Compact Framework,因為它設計的模型非常小,沒有用過多的類庫支持。

3 謙虛隨和

我們的客戶都是一些大的企業,接觸了很多各種類型的技術人員。

你可以發現一個非常有趣的現象,那些懂得尊重別人、比較謙虛的人經過深入接觸后,會發現他們的技術往往都很了不起。

而那些說話刻薄無禮,覺得這個技術也不怎樣,那個技術沒什么了不起的,這個技術沒有什么用,我自己的東西已經挺好的,這樣的人水平、經驗和見識一般都不怎樣。

軟件的問題,并不是簡簡單單解決一個技術問題,從技術的角度上看,只要學會了使用技術,那么我們就已經掌握了技術,因此,單純的技術是很簡單的。

相反的是,軟件的協作開發、管理,軟件的易用性,軟件是否美觀,這些東西才是最麻煩的,也往往是技術水平一般、經驗短缺的程序員意識不到的東西。

我曾經接觸過不少一般的程序員,大體都是這一類,他們覺得軟件太簡單了,沒有什么了不起的。對于什么思想,也不屑一顧,他們已經覺得自己掌握了很多真正的技術。

4異常處理與穩定健壯

通過異常處理可以看出一個程序員程序設計的嚴謹與扎實的基礎知識。

對于Java開發人員而言,會發現每一個方法都有可能需要強制的處理異常和聲明這個函數需要處理的異常,這中強制的約束,會強迫開發人員來習慣性的考慮和思考它。

不過,對于大部分人來說,它處理異常的方式就是簡單的使用try { … } catch(Exception anyException) { // 忽略異常 },用這種方式來捕捉所有的異常信息。

這樣做的好處就是快,傻,缺點就是一旦出現問題,就不知道問題在哪發生,怎么回事,如果有靠譜的QA還好一些,比如外企,他們都有規范的測試方法和測試流程,一旦發現問題,就會將重現捕捉完整的描述出來給開發者看。

不過,在國內沒有嚴格的測試是很正常的,那么出現問題時,就傻了。客戶是絕對不可能把出現問題的方式給你完整的Repro的,一旦出現問題,客戶會干的就是急眼,那接下來怎么辦?你就老老實實加班,老老實實的去猜去找問題。

當“try { … } catch(Exception anyException) { // 忽略異常 }”這樣的代碼充斥整個軟件系統時,你就可以想象有多可怕,這個軟件能穩定就怪了!

我曾經在一個熱電公司,在半夜12點,好幾個廠家的人聚在熱電,等待0點時刻數據采集,一旦數據少了,那么你就麻煩了。

我到現場之后,發現有很多開發人員拿個本子,需要不停的看數據庫,或者需要將軟件Debug打開,然后看看每一個時刻數據是否正常上來。這真是讓我喜出望外,因為競爭對手太弱了!!你們的軟件在此之前,難道對它7×24小時不間斷穩定運行那么沒有信心?

我們的軟件,我通過系統運行過程的消息和日志,我就可以看出所有的東西,如下,消息窗口能夠展示系統后臺運行的詳細過程。

此外,還有非常完整的日志,任何異常我都可以找到,并想辦法重現。

關于異常處理,另一面,就是菜鳥程序員在寫代碼或者實現功能的時候,一般不考慮反面情況,一個軟件按照正常步驟可能能走通,但是一旦出點意外,就麻煩了。以下就是一個典型的代碼。

If(*****)

{

// ….do something…

}

這個代碼處理了if,但是萬一出現else的情況呢?可想而知,系統將會出現無法意料的情況。

因此,這也是菜鳥程序員做的系統一般都非常不穩定的一個根源,做程序一般只考慮功能實現,忽略掉意外情況。

5優雅與美觀

菜鳥程序員并不是缺乏審美,缺乏的是優雅和美觀的抽象能力。

一個好的系統,要做到兩點,好用,好看!因此,這絕對不是單單功能上的堆砌。

很多國產軟件都深深的烙上了技術人員設計的印子,一看就知道這個軟件是出自一個技術人員的設計和實現,一看就知道這個軟件的實現過程,這簡直是慘不忍睹,不過,各位看官,這就是你們的機遇啊。

菜鳥技術人員開發功能的時候,一般都是從實現的角度進行堆砌,怎么簡單,怎么來。

不會去仔細分析,用戶在操作這個功能的時候,到底還會做什么事情,各個功能之間怎么進行有機結合來完整的進行結合。

相反,一些技術比較好的程序員往往都要直面客戶,經常被客戶罵,罵著罵著,也有點覺悟了。

當然,也有一些程序員因為自尊,直接不干了。不過,我覺得厲害的程序員基本都有用戶意識,也希望自己的軟件能有很好的評價,甚至能夠影響社會。

好用,好看,是軟件能夠被普遍采用的前提,因此,我們需要學會抽象優雅。

6 基礎扎實

技術知識決定一個人能做的技術的層次。基礎的知識有計算機組成原理、計算機操作系統網絡原理、數據庫原理、計算機圖形學、編譯原理、數據結構、離散數學、人工智能等等很高深的理論知識。

在這些基礎知識之上,就是軟件開發語言、類庫、框架,面向過程、面向對象、面向服務等編程思想,架構思想等等。

這些知識不一定會影響你現在的工作,但一定會影響到你的格局,那格局肯定也會影響到你自身的發展。

我碰到過有些理論很差的人,但技術在公司內也是有些影響力的,因此,他們對技術原理就很不屑,甚至為自己不懂太多理論而擅長實戰而沾沾自喜。

這些人會對那些懂理論,但動手能力一般的人顯示出由內而外的鄙夷,但是他們卻不知道那些既有基礎知識,也有動手能力的高手做出的東西是怎樣的。

就像我本人,實在是想不通,那些技術天才是如何開發出一個數據庫、操作系統這樣的軟件。因此,如果你已經發覺自己基礎不夠扎實,那么還是有空就修煉修煉自己的內功吧!

7文檔與表達能力

很多技術人員都寫不了文檔。不過,坦白的將,如果要獲得更好的報酬,文檔時絕對關鍵的因素。沒有文檔就沒有溝通,就沒有交易。

有人提了,“文檔是第一生產力”,我非常之贊同。文檔的類型有很多,針對的對象也各不相同。不同的人,對文檔的理解能力也是完全不一樣的。

因此,你的文檔必須適應于你的目標。這個對于搞技術的人太難,他覺得還不如寫代碼來得快。

表達能力決定了你所做的技術的影響范圍,決定了你的影響力,決定你的威信。

因此,也絕對的影響到你的報酬。因為這個能力而影響到你的報酬,你可能會心里覺得虧,但沒有辦法,這是硬傷,可不僅僅是我只是不擅長寫文檔,但我擅長與搞技術。

如果哪一天,有一個擅長忽悠,技術不如你的人,爬到你的上面并且領導你,那也是該的。千萬不要去怪別人擅長忽悠,而是要想辦法來彌補自己的硬傷。

8積極的心態

技術好的人,一般人都壞不到哪去。很簡單的一句話,想要技術好,就要投入時間,有時間投入到技術,那么就沒有時間投入到其它方面,特別是消極的坑蒙拐騙,因此,技術人員一般也都比較靠譜。

積極的心態,不僅僅對于技術,對于生活也是如此。一旦有了積極的心態,那么菜鳥到高手的過程,僅僅是時間的問題!

9覺得軟件不值錢

我特別煩的就是做一個軟件和一些水平不怎么高的技術人員談費用的問題。只要是想要做好,每一個哪一個事情是簡單的。

凡是靠良心和能力謀生的,都是依靠自身的實力來獲取合適的報酬,我們每一個人都需要有收入。我也一樣的,況且,我還是在技術人員骨子里面認為的那種見錢眼開的“老板”,因此,這就很頭大。

不過,好在,和我見面的人,都能看出來,我也是做技術的。但是,這依然不能改變一些技術人員認為軟件不值錢的想法,他們的理論是,這個功能放我身上,我一天就搞定了,憑什么你要那么多錢?

可是,咱們的做法一樣嗎?一個功能的實現方法有很多種,就像我說的數據采集。如果你的數據采集實現沒有以下“1、2、3”這些輔助的功能,后臺的實現要簡單的多。

7.jpg(66.97 KB, 下載次數: 0)

下載附件 保存到相冊

昨天15:19 上傳

如果沒有指令重試,沒有多線程,沒有異步刷新,沒有7×24小時穩定運行,沒有采集數據丟失,沒有指令優先級排列,沒有多線程和分布式集群采集,沒有支持1天1GB數據采集等等這些非功能性的需求。

那么這個軟件會更簡單,我也見過有人用一個控制臺,用一個單線程,顯示的信息都是完全看不懂的二進制數字,運行一會CPU就100%,內存不斷升高的采集軟件。這個也算得上是采集軟件。

不過,菜鳥程序員一般都會按照自己的做事方法來對軟件進行評估,如果沒有好的經驗,一般都會認為軟件很不值錢。

事實上,做好看的、好用的軟件非常難,做好看、好用、還要好維護以擴展的軟件那就是難上加難。

還有一個幾年前碰到的軟件定制,有一個人直接說了,這是簡單的CRUD,一個頁面200元,你算算這個系統值多少吧,我現在都害怕跟這些人打交道,也害怕做業務軟件定制了。

曾經也見到一個數據采集軟件,軟件負責人說,他們這個軟件一個月3個人就實現了,而我告訴他我們需要更多人手,更多時間,然后他非常不屑。

最后,我就想看看他們的軟件,他打開讓我看看,我在一個TextBox里面沒有輸入信息就點擊一個按鈕,然后系統竟然直接崩潰,拋出異常。

看完我就笑著說了,我們不做這種通過拖拉控件直接數據綁定的軟件,我們需要做出一個好用且好看的軟件,能夠容易追溯、容易跟蹤狀態且支持多線程和分布式集群部署的軟件。

軟件是一個充滿智慧結晶的勞動成果,如果說的高尚一點,有些軟件時無價的,當然我做的軟件不是這樣的層次!

10 工資

這點顯而易見,工資是價值的體現,成為高手程序員就意味著你能為自己爭取高報酬。所以小伙伴們,加油吧!(下圖,對號入座)

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 軟件
    +關注

    關注

    69

    文章

    5009

    瀏覽量

    88074
  • 程序員
    +關注

    關注

    4

    文章

    953

    瀏覽量

    29856

原文標題:程序員高手和菜鳥的區別是什么?

文章出處:【微信號:wujianying_danpianji,微信公眾號:單片機精講吳鑒鷹】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    PGA2311P和PGA2311PA主要區別體現在哪里?一般情況運用下能通用嗎?

    PGA2311P和PGA2311PA主要區別體現在哪里,一般情況運用下能通用嗎,感謝!!!
    發表于 10-31 07:13

    GPU服務器在AI訓練中的優勢具體體現在哪些方面

    GPU服務器在AI訓練中的優勢主要體現在以下幾個方面: 1、并行處理能力:GPU服務器擁有大量的并行處理核心,這使得它們能夠同時處理成千上萬個計算任務,極大地加速了AI模型的訓練過程。這種并行處理
    的頭像 發表于 09-11 13:24 ?544次閱讀

    cat6utp和cat6的區別體現在哪些方面

    CAT6 UTP與CAT6在網線領域中的區別,主要體現在以下幾個方面: 一、定義與標準 CAT6 UTP:全稱是Category 6 Unshielded Twisted Pair,即六類無屏蔽
    的頭像 發表于 09-06 10:02 ?2878次閱讀

    北美運營商PTCRB認證的優勢主要體現在哪些方面

    北美運營商PTCRB認證的優勢主要體現在以下幾個方面:一、市場準入與認可度市場準入門檻提高:PTCRB認證是北美地區移動通信設備進入市場的必備門檻。通過認證的設備可以獲得運營商的認可,從而更加順利
    的頭像 發表于 08-23 17:19 ?447次閱讀
    北美運營商PTCRB認證的優勢主要<b class='flag-5'>體現在哪些方面</b>?

    溫振變送器的功能體現在哪些方面

    預警等方面起到了重要作用,為工業發展貢獻了力量。 溫振變送器可以對設備的運行狀態和故障進行在線監測和診斷,主要監測旋轉機械設備運行時的振動速度、振動位移以及表面溫度變化等參數,可以預防因機械設備故障而對工業生
    的頭像 發表于 08-20 15:28 ?241次閱讀

    雨量監測設備的優勢體現在哪些方面

    雨量監測設備在現代氣象監測中具有重要應用價值
    的頭像 發表于 08-16 16:08 ?215次閱讀

    網絡配線架的優勢體現在哪些方面-科蘭

    網絡配線架在網絡基礎設施中扮演著至關重要的角色,其優勢主要體現在以下幾個方面: 一、組織與管理優勢 網線組織:網絡配線架為以太網線纜的端接和管理提供了一個集中的位置,使網絡布線更加有序和整潔。配線架
    的頭像 發表于 07-19 10:08 ?329次閱讀

    配線架和理線架的區別體現在哪些方面

    配線架和理線架在網絡布線中各自扮演著不同的角色,它們的區別主要體現在以下幾個方面: 一、基本概念 配線架:用于終端用戶線或中繼線,并能對它們進行調配連接的設備。配線架是管理子系統中最重要的組件
    的頭像 發表于 06-20 10:29 ?1690次閱讀

    鋰電池分容測試柜的優點體現在哪方面

    鋰電池作為現代科技的重要動力源,其生產和測試環節至關重要。分容測試柜作為鋰電池生產過程中的關鍵設備,其優點直接影響電池的性能和質量。那么,鋰電池分容測試柜的優點究竟體現在哪些方面?本文將站在專業角度,深入探討鋰電池分容測試柜的優點,并結合實際案例,分析當前行業對這一設備的要求以及我的見解。
    的頭像 發表于 06-18 09:25 ?493次閱讀
    鋰電池分容測試柜的優點<b class='flag-5'>體現在哪方面</b>

    網線屏蔽和非屏蔽的區別主要體現在哪些方面

    網線屏蔽和非屏蔽的主要區別體現在以下幾個方面: 作用與使用場景: 屏蔽網線:主要用于強干擾、電磁輻射嚴重、對傳輸質量要求較高的場合。它能減少輻射、防止信息被竊聽,起到屏蔽作用。在金融、政府等對數
    的頭像 發表于 06-17 10:25 ?1373次閱讀

    hdmi高清線的作用體現在哪些方面

    HDMI高清線(也稱為HDMI線或HDMI電纜)在現代高清視頻和音頻傳輸中扮演著至關重要的角色。其主要作用體現在以下幾個方面: 高清視頻傳輸:HDMI線能夠傳輸高質量、無壓縮的數字視頻信號。這種傳輸
    的頭像 發表于 06-13 10:24 ?1527次閱讀

    柔性制造主要體現在哪些方面

    柔性制造,即Flexible Manufacturing,是一種以提高生產效率、降低成本、縮短產品開發周期、提高產品質量為目的,通過靈活調整生產線、工藝流程和生產設備來滿足市場多樣化需求的先進生產方式。 一、生產方式的靈活性 生產線的可調整性:柔性制造系統可以根據不同的產品需求,快速調整生產線的布局和設備配置,實現多品種、小批量的生產。 工藝流程的可變性:柔性制造系統可以根據不同的產品特點和生產需求,靈活調整工藝流程,實現工藝流程的
    的頭像 發表于 06-11 09:34 ?1082次閱讀

    柔性制造系統的柔性體現在哪些方面

    品的生產需求。柔性制造系統的柔性主要體現在以下幾個方面: 設備柔性 設備柔性是指柔性制造系統中的設備能夠適應不同產品的生產需求,實現多種產品的生產。這主要體現在以下幾個方面: 1.1
    的頭像 發表于 06-11 09:16 ?1063次閱讀

    cat6網絡電纜特點體現在哪些方面

    ,是Cat5e網線的升級版本。 Cat6網絡電纜的特點主要體現在以下幾個方面: 傳輸速度更快:Cat6網線支持的傳輸速率高達10Gbps,比Cat5e網線快了10倍,可用于處理大量的高速數據傳輸需求。 阻抗更好:Cat6網線采用優質的線材和更好的線構造,具有更低的信號衰減
    的頭像 發表于 04-29 11:30 ?1321次閱讀

    小電容并聯的穩定性體現在哪些方面

    小電容并聯是電路設計中常見的一種技術,其穩定性對電路性能起著至關重要的作用。在實際應用中,小電容并聯的穩定性體現在多個方面,包括頻率響應、電壓穩定性、溫度影響等。下面將從不同角度深入探討小電容并聯技術的穩定性及優化方向。
    的頭像 發表于 02-22 14:15 ?676次閱讀
    小電容并聯的穩定性<b class='flag-5'>體現在哪些方面</b>
    百家乐娱乐城官方网| 百家乐在发牌技巧| 大发888娱乐城官方下载| 鼎尚百家乐官网的玩法技巧和规则| 大发888娱乐城客户端| 百家乐官网桌子租| 康乐县| 乐中百家乐的玩法技巧和规则| 网上百家乐官网如何打水| 百家乐真人现场| 百家乐官网合| 百家乐官网美女视频| 德州百家乐扑克桌| 属鼠做生意办公桌摆貔貅好不好| 根河市| 百家乐官网小路是怎么画的| 百家乐官网视频打牌| 网络百家乐电脑| 百家乐官网赌博导航| 丰宁| 威尼斯人娱乐平台反| 虚拟百家乐游戏下载| 大世界百家乐官网娱乐平台| 吉木萨尔县| 大发888易付168 充值| 百家乐赌机凤凰软件| 钱柜百家乐官网娱乐城| 百家乐官网娱乐城博彩| 申城棋牌2.0| 大中华百家乐的玩法技巧和规则| 百家乐官网不锈钢| 网络百家乐官网输了很多钱| 白银市| kk娱乐城开户| 黄金城百家乐苹果版| 百家乐高手论坛| 百家乐赌的技巧| 百家乐官网园云鼎赌场娱乐网规则| 娱乐城送现金| 大发888bet亚洲| 百家乐破解秘|