• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學(xué)習(xí)啦 > 知識(shí)大全 > 知識(shí)百科 > 百科知識(shí) > 程序員和軟件工程師的區(qū)別

    程序員和軟件工程師的區(qū)別

    時(shí)間: 肖陽(yáng)1034 分享

    程序員和軟件工程師的區(qū)別

      關(guān)于軟件工程師和程序員的區(qū)別,大家都知道嗎?今天小編就帶大家了解一下 軟件工程師和程序員的區(qū)別 , 軟件工程師是程序員嗎 。

      軟件工程師和程序員的區(qū)別

      其實(shí)懂IT的朋友應(yīng)該知道,程序員和軟件工程師之間有著很大的區(qū)別,軟件工程師是對(duì)于軟件開發(fā)相關(guān)工作的人員的一個(gè)統(tǒng)稱。軟件工程師是IT行業(yè)中需求量最大的一個(gè)職位,穩(wěn)居IT行業(yè)職位需求TOP10第一位。軟件工程師的技術(shù)要求比較全面的,除了最基礎(chǔ)的編程語(yǔ)言(C語(yǔ)言/C++/JAVA等)、數(shù)據(jù)庫(kù)技術(shù)(SQL/ORACLE/DB2等)、.NET平臺(tái)技術(shù)、C#、C/S B/S程序開發(fā),還要掌握諸如JAVA SCRIPT、AJAX、HIBERNATE、SPRING、J2EE、WEB SERVICE、STRUCTS等的前沿技術(shù)。除此之外,還要涉獵于網(wǎng)絡(luò)工程和軟件測(cè)試的其他技術(shù),以便于操控全局。軟件工程師可以說是一個(gè)項(xiàng)目開發(fā)的掌舵者。一名優(yōu)秀的軟件工程師應(yīng)該具有較強(qiáng)的邏輯思維能力,對(duì)于技術(shù)的發(fā)展有著敏銳的嗅覺。雖然要求技術(shù)全面,但無須偏執(zhí)于門門技術(shù)都精通,任何軟件工程師都有自己的技術(shù)特長(zhǎng)和偏向,對(duì)于自己手中的技術(shù),可有精通-掌握-熟悉-了解之分,根據(jù)工作需要和職業(yè)發(fā)展的具體情況來劃分。 程序員是專職從事程序開發(fā)、維護(hù)的專業(yè)人員。

      按照標(biāo)準(zhǔn)來看:一個(gè)軟件工程師的工作程序是需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、測(cè)試設(shè)計(jì)、軟件開發(fā)編程。與此軟件開發(fā)流程管理相適應(yīng),軟件企業(yè)也要有合理的人力資源結(jié)構(gòu)。在這一結(jié)構(gòu)中每一個(gè)人都必須按照分工協(xié)作的原則來進(jìn)行流水線作業(yè),其中數(shù)量最多的要數(shù)從事軟件開發(fā)編程等基礎(chǔ)工作的人員,也就是我們所說的程序員。所以,程序員和軟件工程師之間的區(qū)別就像蓋樓的分工一樣,程序員永遠(yuǎn)是扮演工人的角色,而軟件工程師是這座大樓的設(shè)計(jì)人員。這也是程序員和軟件工程師的最大區(qū)別。

      軟件工程師是程序員嗎

      應(yīng)該說一個(gè)軟件工程師首先應(yīng)該是一個(gè)合格的程序員,但程序員只能是成為軟件工程師的第一步。一個(gè)軟件工程師來說,在掌握了基本的編程技能后,開發(fā)軟件所需要的各種除了編碼之外的其它知識(shí)會(huì)更為重要,比如如何從組織工程與項(xiàng)目的角度來看待軟件開發(fā)的問題,如何為軟件搭建合理準(zhǔn)確的架構(gòu),什么樣的軟件會(huì)更易于維護(hù)與更新。故而軟件工程師的級(jí)別要大于程序員。

      程序員和工程師有什么不一樣

      第一、工程師不寫黑箱程序

      “程序=數(shù)據(jù)結(jié)構(gòu)+算法”,這個(gè)著名的公式大家都知道,不幸的是,它不適合描述工程領(lǐng)域或者現(xiàn)實(shí)世界的程序。有很多程序,數(shù)據(jù)結(jié)構(gòu)和算法都寫得很棒,功能足夠強(qiáng)大,系統(tǒng)足夠復(fù)雜,但是——它很難調(diào)試,一跑起來就無法停止,而且誰(shuí)也不知道程序現(xiàn)在到底在干什么,里面發(fā)生了什么。

      別覺得好笑,我遇到過很多工作三四年甚至五六年的開發(fā)人員,仍然不停地生產(chǎn)黑箱程序:出現(xiàn)問題的第一反應(yīng)是直接殺掉進(jìn)程重啟(天哪你們的程序不能安全關(guān)閉嗎)。當(dāng)然還有更生猛的,直接用開發(fā)機(jī)連上生產(chǎn)數(shù)據(jù)庫(kù)(防火墻上開個(gè)洞)去調(diào)試。

      你說他們技術(shù)不好嗎?明明各種技術(shù)問題也能搞定。你說他們沒有系統(tǒng)意識(shí)?做過的程序也不簡(jiǎn)單。但是,他們做的充其量只能叫“程序”,而不是工程上成熟的“系統(tǒng)”。

      怎樣的程序不是黑箱?你需要考慮它的層次劃分,你需要考慮哪些(功能之外的)運(yùn)行信息必須暴露和記錄,以什么方式暴露記錄,你甚至還需要考慮這些暴露和記錄對(duì)性能的影響,以及程序需要對(duì)外提供什么操縱接口……當(dāng)你把這一切都考慮清楚,寫出能夠讓運(yùn)行細(xì)節(jié)“盡在掌握中”的程序的時(shí)候,你的一條腿就邁進(jìn)了“工程”的大門。

      這方面,互聯(lián)網(wǎng)和軟件開發(fā)的大廠會(huì)更加關(guān)注一些,但也不是說個(gè)人就毫無追求的空間了。網(wǎng)絡(luò)爬蟲大家都會(huì)寫,大家也都知道如果要數(shù)據(jù)抓得準(zhǔn),調(diào)試起來很麻煩。我有個(gè)朋友在某大廠寫過一套“可視化”的爬蟲,可以用逐步操縱語(yǔ)句的執(zhí)行,迅速定位問題所在。這種水平的工程師,屬于可遇而不可求的類型,每次說起來大家仍然嘖嘖稱贊。

      第二、工程師注意實(shí)現(xiàn)和接口分離

      Java面試的一道經(jīng)典問題是:請(qǐng)描述抽象類和接口的區(qū)別。通常,大家都會(huì)知道“接口”和“實(shí)現(xiàn)”要分離。不幸的是,很多人理解的“接口”,只是狹義的特定語(yǔ)言提供的Interface,而沒有考慮“接口”真正的含義。

      接口的真正含義是什么?計(jì)算機(jī)最擅長(zhǎng)處理的是信息,它可以讓信息脫離現(xiàn)實(shí)的障礙高速流動(dòng)起來。如果說“實(shí)現(xiàn)”是干臟活累活,“接口”就是發(fā)出干臟活累活指令的窗口。臟活累活干一遍就足夠了,但發(fā)指令的窗口卻可以有千千萬萬。

      更具體一點(diǎn)說,完成功能的是程序員,完成功能并且設(shè)想它會(huì)在什么情況下使用,并且讓人方便使用的,是工程師。我見過不少這樣的程序:登錄會(huì)話一開始放在本地內(nèi)存里沒問題,到了要切換到數(shù)據(jù)庫(kù)里方便會(huì)話轉(zhuǎn)移就得大興土木,雖然要做的其實(shí)仍然只是存取而已;程序自動(dòng)加載的數(shù)據(jù)出了問題,就根本不能手動(dòng)加載;以前手動(dòng)加載的數(shù)據(jù),改成自動(dòng)加載就要推倒重來……

      有沒有接口意識(shí),能不能真正區(qū)分接口和實(shí)現(xiàn),這是區(qū)分程序員和工程師的一大標(biāo)識(shí)。

      第三、工程師注重功能的邏輯聯(lián)系

      很多系統(tǒng)都在不斷的變化和改進(jìn)過程中,程序員看到的是功能點(diǎn),工程師看到的是功能點(diǎn)之上的邏輯。

      任何系統(tǒng)當(dāng)然都是由若干功能構(gòu)成的。但在功能點(diǎn)之上,還需要一張有邏輯意義的大網(wǎng),才能把功能點(diǎn)組合起來,把復(fù)雜度降低,成為大家能理解的對(duì)象。最簡(jiǎn)單的“登錄”,就包含數(shù)據(jù)輸入、數(shù)據(jù)驗(yàn)證、登錄信息記錄等等功能,“登錄”是這些功能的邏輯集合,也是理解這些功能的基礎(chǔ)。

      隨著時(shí)間的推移,業(yè)務(wù)的增長(zhǎng),新功能可能越來越多,比如用戶數(shù)據(jù)的加載,對(duì)好友的通知,廣告的推送準(zhǔn)備等等。這些功能實(shí)現(xiàn)起來當(dāng)然都容易(因?yàn)楹芫唧w),但功能堆積的后果是復(fù)雜度急劇上升,因?yàn)楣δ苤g的邏輯聯(lián)系被切斷了。所以,工程師必然需要思考,這些功能應(yīng)該怎么組合,放到哪些具有邏輯意義的動(dòng)作——比如“登錄”里去?正是經(jīng)過這樣持續(xù)不斷的思考,系統(tǒng)的復(fù)雜度才能夠被一直維持在較低的水平,容易讓大家理解。

      這個(gè)例子看起來很簡(jiǎn)單,但做起來卻沒那么容易。我有時(shí)看到復(fù)雜的系統(tǒng)操作手冊(cè),簡(jiǎn)直讓人哭笑不得:1) 點(diǎn)這里;2) 點(diǎn)那里;3) 輸這個(gè)…… 這些操作對(duì)應(yīng)的邏輯意義那么準(zhǔn)確,分明就該是一次性自動(dòng)完成的啊,把它們割裂開來的后果大大提高了系統(tǒng)的復(fù)雜度,既不方便維護(hù),也不方便操作。最后來擦屁股的,只能是開發(fā)人員自己。

      我經(jīng)常反思自己接受的教育,在學(xué)校里寫程序,和工作了寫程序,有那么一點(diǎn)相同,但又好像完全兩回事,到底有什么不同,只有親自體會(huì)、思考了才能明白,所以我想把自己的所見所感寫出來。悟性好的有機(jī)會(huì)接受很好訓(xùn)練的同學(xué),估計(jì)不需要了解這些。但對(duì)于沒有這樣條件的同學(xué),但愿我的這點(diǎn)念叨能給你們一點(diǎn)幫助。
    猜你喜歡

    1.程序員和軟件測(cè)試工作哪個(gè)比較累

    2.測(cè)試和開發(fā)的區(qū)別是什么

    3.從程序員到軟件測(cè)試工程師的路該怎么走

    4.軟件工程師個(gè)人職業(yè)規(guī)劃

    5.軟件工程師職業(yè)規(guī)劃范文3篇

    3234899 主站蜘蛛池模板: 久久国产精品99国产精| 性做久久久久久久| 国产精品一线二线三线精华液| 亚洲色偷偷色噜噜狠狠99网| 一出一进一爽一粗一大视频免费的 | 十六一下岁女子毛片免费| 久久免费视频一区| 韩国19禁无遮挡啪啪无码网站| 精品人妻VA出轨中文字幕| 成成人看片在线| 另类欧美视频二区| 一边摸一边桶一边脱免费视频| 综合网在线视频| 寂寞山村恋瘦子的床全在线阅读 | 丁香狠狠色婷婷久久综合| 美国式的禁忌80版| 少妇无码AV无码一区| 免费特黄一区二区三区视频一 | 亚洲综合日韩在线亚洲欧美专区| javaparser日本高清| 特级毛片aaaaaa蜜桃| 国自产拍在线天天更新91| 亚洲欧美日韩国产一区图片| 2021国产在线视频| 校花哭着扒开屁股浣肠于柔 | 97久久精品无码一区二区天美| 毛片在线播放a| 成人品视频观看在线| 全部免费a级毛片| avtt亚洲天堂| 欧美人与动性xxxxx杂性| 在线天堂中文www官网| 亚洲欧洲精品成人久久曰影片| 天堂在线最新资源| 日韩免费观看一级毛片看看| 国产亚洲欧美日韩精品一区二区 | 爱豆传媒视频在线网址最新| 在线天堂中文www官网| 亚洲AV无码潮喷在线观看| 青春草国产成人精品久久| 成人午夜精品无码区久久|