国产二区免费在线观看-青青操在线观看国产视频-男人的天堂 在线一区-黑丝美女被内射视频免费观看

技術中心

這里象征著我們的態(tài)度和能力

程序員和工程師有什么不一樣?
作者:admin    來源:本站原創(chuàng)    發(fā)布時間:2015-08-21      瀏覽次數(shù):11909
分享到:
  我剛剛工作的時候,面試官曾經(jīng)跟我說:好好干兩年,可以迅速從程序員成長為工程師。當時我覺得太詫異了,從很多招聘啟示來看,“程序員”不就等 于“工程師”嗎,只是“工程師”更好聽一些而已。等我工作久了,才知道“程序員”和“工程師”真的是不一樣的——程序員只寫程序,工程師寫能在現(xiàn)實世界中 創(chuàng)造價值的程序。

  可惜,很多軟件開發(fā)人員未必清楚兩者的差別,甚至做了很久也只算程序員而不算嚴格意義上的工程師。所以我就自己的觀察和經(jīng)驗,談談程序員和工程師的差別。

  第一,工程師不寫黑箱程序。
  “程序=數(shù)據(jù)結(jié)構+算法”,這個著名的公式大家都知道,不幸的是,它不適合描述工程領域或者現(xiàn)實世界的程序。有很多程序,數(shù)據(jù)結(jié)構和算法都寫得 很棒,功能足夠強大,系統(tǒng)足夠復雜,但是——它很難調(diào)試,一跑起來就無法停止,而且誰也不知道程序現(xiàn)在到底在干什么,里面發(fā)生了什么。
  別覺得好笑,我遇到過很多工作三四年甚至五六年的開發(fā)人員,仍然不停地生產(chǎn)黑箱程序:出現(xiàn)問題的第一反應是直接殺掉進程重啟(天哪你們的程序不能安全關閉的嗎?)。當然還有更生猛的,直接用開發(fā)機連上生產(chǎn)數(shù)據(jù)庫(防火墻上開個洞)去調(diào)試。
  你說他們技術不好嗎?明明各種技術問題也能搞定。你說他們沒有系統(tǒng)意識?做過的程序也不簡單。但是,他們做的充其量只能叫“程序”,而不是工程上成熟的“系統(tǒng)”。
  怎樣的程序不是黑箱?你需要考慮它的層次劃分,你需要考慮哪些(功能之外的)運行信息必須暴露和記錄,以什么方式暴露記錄,你甚至還需要考慮這 些暴露和記錄對性能的影響,以及程序需要對外提供什么操縱接口……當你把這一切都考慮清楚,寫出能夠讓運行細節(jié)“盡在掌握中”的程序的時候,你的一條腿就 邁進了“工程”的大門。
  這方面,互聯(lián)網(wǎng)和軟件開發(fā)的大廠會更加關注一些,但也不是說個人就毫無追求的空間了。網(wǎng)絡爬蟲大家都會寫,大家也都知道如果要數(shù)據(jù)抓得準,調(diào)試 起來很麻煩。我有個朋友在某大廠寫過一套“可視化”的爬蟲,可以用逐步操縱語句的執(zhí)行,迅速定位問題所在。這種水平的工程師,屬于可遇而不可求的類型,每 次說起來大家仍然嘖嘖稱贊。
  第二,工程師注意實現(xiàn)和接口分離。
  Java 面試的一道經(jīng)典問題是:請描述抽象類和接口的區(qū)別。通常,大家都會知道“接口”和“實現(xiàn)”要分離。不幸的是,很多人理解的“接口”,只是俠義的特定語言提供的 interface,而沒有考慮“接口”真正的含義。
  接口的真正含義是什么?計算機最擅長處理額是信息,它可以讓信息脫離現(xiàn)實的障礙高速流動起來。如果說“實現(xiàn)”是干臟活累活,“接口”就是發(fā)出干臟活累活指令的窗口。臟活累活干一遍就足夠了,但發(fā)指令的窗口卻可以有千千萬萬。
  更具體一點說,完成功能的是程序員,完成功能并且設想它會在什么情況下使用,并且讓人方便使用的,是工程師。我見過不少這樣的程序:登錄會話一 開始放在本地內(nèi)存里沒問題,到了要切換到數(shù)據(jù)庫里方便會話轉(zhuǎn)移就得大興土木,雖然要做的其實仍然只是存取而已;程序自動加載的數(shù)據(jù)出了問題,就根本不能手 動加載;以前手動加載的數(shù)據(jù),改成自動加載就要推倒重來……
  有沒有接口意識,能不能真正區(qū)分接口和實現(xiàn),這是區(qū)分程序員和工程師的一大標識。
  第三,工程師注重功能的邏輯聯(lián)系。
  很多系統(tǒng)都在不斷的變化和改進過程中,程序員看到的是功能點,工程師看到的是功能點之上的邏輯。
  任何系統(tǒng)當然都是由若干功能構成的。但在功能點之上,還需要一張有邏輯意義的大網(wǎng),才能把功能點組合起來,把復雜度降低,成為大家能理解的對 象。最簡單的“登錄”,就包含數(shù)據(jù)輸入、數(shù)據(jù)驗證、登錄信息記錄等等功能,“登錄”是這些功能的邏輯集合,也是理解這些功能的基礎。
  隨著時間的推移,業(yè)務的增長,新功能可能越來越多,比如用戶數(shù)據(jù)的加載,對好友的通知,廣告的推送準備等等。這些功能實現(xiàn)起來當然都容易(因為 很具體),但功能堆積的后果是復雜度急劇上升,因為功能之間的邏輯聯(lián)系被切斷了。所以,工程師必然需要思考,這些功能應該怎么組合,放到哪些具有邏輯意義 的動作——比如“登錄”里去?正是經(jīng)過這樣持續(xù)不斷的思考,系統(tǒng)的復雜度才能夠被一直維持在較低的水平,容易讓大家理解。
  這個例子看起來很簡單,但做起來卻沒那么容易。我有時看到復雜的系統(tǒng)操作手冊,簡直讓人哭笑不得:1) 點這里;2) 點那里;3) 輸這個…… 這些操作對應的邏輯意義那么準確,分明就該是一次性自動完成的啊,把它們割裂開來的后果大大提高了系統(tǒng)的復雜度,既不方便維護,也不方便操作。最后來擦屁 股的,只能是開發(fā)人員自己。
  我經(jīng)常反思自己接受的教育,在學校里寫程序,和工作了寫程序,有那么一點相同,但又好像完全兩回事,到底有什么不同,只有親自體會、思考了才能 明白,所以我想把自己的所見所感寫出來。悟性好的有機會接受很好訓練的同學,估計不需要了解這些。但對于沒有這樣條件的同學,但愿我的這點念叨能給你們一 點幫助。

4000-880-989
(24小時熱線)
聯(lián)系客服
微信公眾號

官方公眾號

小程序

?2008-2022 CORPORATION ALL Rights Reserved. 昆明奧遠科技有限公司版權所有 滇ICP備09003328號-1 滇公網(wǎng)安備 53011102000818號 增值電信業(yè)務經(jīng)營許可證號:滇B2-20110045
昆明那家網(wǎng)絡公司好,新媒體運營,網(wǎng)站優(yōu)化,網(wǎng)絡推廣,網(wǎng)站建設,網(wǎng)頁設計,網(wǎng)站設計,網(wǎng)站推廣,云南網(wǎng)站公司,昆明新媒體公司,云南網(wǎng)紅主播,昆明SEO公司,昆明網(wǎng)站建設,昆明網(wǎng)絡推廣,昆明網(wǎng)站優(yōu)化,昆明網(wǎng)站推廣,紅河網(wǎng)站建設,大理網(wǎng)絡公司,曲靖網(wǎng)絡公司,麗江網(wǎng)站設計,昭通網(wǎng)絡公司,保山大數(shù)據(jù)服務,智慧高速建設,智慧校園服務,云南IDC服務商,網(wǎng)絡安全測評,等保測評,網(wǎng)站關鍵詞排名優(yōu)化服務,服務客戶盡超2000余家,一切盡在奧遠科技,服務電話:13888956730
一区二区三区18禁看| 亚洲一区二区精品久久av| 日韩综合国产欧美一区| 国产又粗又长又大高潮视频| 欧美在线观看视频三区| 国产精品一区二区高潮| 欧美国产日韩在线综合| 黄色美女日本的美女日人| 日本丁香婷婷欧美激情| 亚洲黑人精品一区二区欧美| 国产精品免费视频久久| 欧美韩日在线观看一区| 日韩高清中文字幕亚洲| 亚洲综合日韩精品欧美综合区| 国产级别精品一区二区视频| 欧美亚洲三级视频在线观看| 在线免费国产一区二区三区| 在线播放欧美精品一区| 久久精品亚洲精品一区| 人妻乱近亲奸中文字幕| 日韩免费国产91在线| 亚洲精品国产第一区二区多人| 国产精品久久精品国产| 亚洲av一区二区三区精品| 欧美自拍系列精品在线| 草草视频精品在线观看| 亚洲成人久久精品国产| av在线免费观看一区二区三区 | 国产亚洲系列91精品| 国产精品欧美在线观看| 亚洲av成人一区二区三区在线| 亚洲中文字幕高清乱码毛片| 中文字幕日韩欧美理伦片| 国产精品一区二区日韩新区| 日韩中文无线码在线视频| 精品人妻一区二区三区免费看| 国产高清精品福利私拍| 亚洲一区在线观看蜜桃| 亚洲国产性感美女视频| 中文字幕一区久久综合| 精品精品国产欧美在线|