99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

編程與軟件工程

Linux閱碼場(chǎng) ? 來(lái)源:Linux閱碼場(chǎng) ? 作者:Linux閱碼場(chǎng) ? 2022-09-22 10:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在軟件工程的概念被提出之前,IT行業(yè)經(jīng)歷了軟件危機(jī)[1]。當(dāng)時(shí)IT行業(yè)開(kāi)發(fā)的軟件正在經(jīng)歷從小規(guī)模到大規(guī)模的過(guò)程,而沒(méi)有系統(tǒng)化的方法論指導(dǎo)大規(guī)模軟件的開(kāi)發(fā)過(guò)程,導(dǎo)致軟件工程師之間的協(xié)作非常的低效且質(zhì)量難以得到保證。

直到IT行業(yè)意識(shí)到軟件需要一種工程化的方法論來(lái)指導(dǎo)開(kāi)發(fā)過(guò)程。

軟件工程是將系統(tǒng)化的、規(guī)范的、可度量的方法用于軟件的開(kāi)發(fā)、運(yùn)行和維護(hù)的過(guò)程,即將工程化應(yīng)用于軟件開(kāi)發(fā)中(IEEE,1993)。

編程與軟件工程

編程是利用某個(gè)編程語(yǔ)言實(shí)現(xiàn)某個(gè)算法或技術(shù)方案從而來(lái)解決某類問(wèn)題,但這類問(wèn)題規(guī)模一般很小,也不太會(huì)隨著時(shí)間產(chǎn)生變化,或者其生命周期也很短,不需要考慮長(zhǎng)期維護(hù)的問(wèn)題。但軟件工程與編程的區(qū)別在于前者需考慮時(shí)間與規(guī)模帶來(lái)變化的影響。

時(shí)間的因素使軟件工程需要考慮質(zhì)量的問(wèn)題,糟糕的質(zhì)量會(huì)產(chǎn)生很多認(rèn)知負(fù)荷,最終難以長(zhǎng)期維護(hù)。規(guī)模的因素使軟件工程需要考慮協(xié)作的問(wèn)題,低效的協(xié)作可能與溝通方式有關(guān),最終拖垮交付進(jìn)度。

軟件工程發(fā)展史

早期的軟件工程借鑒了項(xiàng)目管理的流程,而傳統(tǒng)的項(xiàng)目管理關(guān)注生產(chǎn)過(guò)程大過(guò)于人。

15784476-3a11-11ed-9e49-dac502259ad0.jpg

以過(guò)程為中心的軟件工程過(guò)程方法論主要有瀑布式與統(tǒng)一軟件開(kāi)發(fā)過(guò)程。這種軟件開(kāi)發(fā)過(guò)程需要產(chǎn)生大量的正式文檔,通過(guò)嚴(yán)格的流程管理控制軟件的開(kāi)發(fā)過(guò)程。但軟件開(kāi)發(fā)過(guò)程卻是一個(gè)知識(shí)密集型的生產(chǎn)過(guò)程,過(guò)于關(guān)注流程而忽略人的因素導(dǎo)致這類方法論很難適應(yīng)需求變化,花費(fèi)很多時(shí)間開(kāi)發(fā)出的產(chǎn)品很難滿足變化迅速的市場(chǎng),最終逐漸被淘汰。

以人為中心的軟件開(kāi)發(fā)過(guò)程是為適應(yīng)需求變化的代碼編寫和團(tuán)隊(duì)組織方法論。這類逐漸產(chǎn)生以極限編程與敏捷過(guò)程兩種方法論。

15cb36fe-3a11-11ed-9e49-dac502259ad0.jpg

這里以敏捷過(guò)程為例,敏捷開(kāi)發(fā)至今已經(jīng)成為很主流的軟件開(kāi)發(fā)過(guò)程。

15ec27d8-3a11-11ed-9e49-dac502259ad0.jpg

敏捷開(kāi)發(fā)倡導(dǎo)信任人而非死板的流程與計(jì)劃管理,通過(guò)一系列如上所示的實(shí)踐來(lái)營(yíng)造一個(gè)信任為主的文化土壤,從而打造一個(gè)高效的研發(fā)團(tuán)隊(duì),最終開(kāi)發(fā)出高質(zhì)量的軟件成品。

當(dāng)然本文不是介紹敏捷開(kāi)發(fā)過(guò)程的,而是介紹Google公司的軟件工程實(shí)踐。

Google是一家偉大的互聯(lián)網(wǎng)公司,同時(shí)研發(fā)出來(lái)了大量知名的軟件產(chǎn)品。Google是怎么做到的?在2020年Google的三位工程師@TitusWinters[2]@manshreck[3]@hyrumwright[4]出版了《Software Engineering at Google[5]》這本書來(lái)介紹Google的軟件工程實(shí)踐,這給了我們一個(gè)機(jī)會(huì)一窺究竟。

本文是Google軟件工程系列的上篇之文化篇,來(lái)介紹軟件工程最重要的一個(gè)基石:文化要素。

Google軟件工程文化

以下是《Software Engineering at Google》一書第二部分文化篇的思維導(dǎo)圖,由于此部分占全書近20%,所以本文不會(huì)詳細(xì)的介紹其中的概念,想詳細(xì)了解的讀者建議閱讀原書。本文會(huì)結(jié)合此書這部分內(nèi)容分享作者的個(gè)人理解及相關(guān)經(jīng)驗(yàn)。

1615c5b6-3a11-11ed-9e49-dac502259ad0.jpg

文化為何是軟件工程很重要的一個(gè)要素?我在剛?cè)隝T行業(yè)時(shí)對(duì)軟件開(kāi)發(fā)的理解只是學(xué)習(xí)某個(gè)編程語(yǔ)言來(lái)寫代碼。之后經(jīng)過(guò)多年多個(gè)項(xiàng)目的歷練,我逐漸對(duì)整個(gè)軟件開(kāi)發(fā)的全貌有了一定的理解。但還是停留在對(duì)軟件開(kāi)發(fā)過(guò)程的了解及相關(guān)工具的使用,直到讀完這本書的文化篇后才意識(shí)到了文化的重要性。

文化雖然是和技術(shù)沒(méi)有直接關(guān)系的一些軟性的東西,但文化就像水一樣,利用好它的力量,可以讓軟件開(kāi)發(fā)變得更高效、高質(zhì)。

團(tuán)隊(duì)協(xié)作的基石

軟件開(kāi)發(fā)早已不是單兵作戰(zhàn)的時(shí)代了,雖然人們喜歡聽(tīng)黑客奇跡般的故事,但現(xiàn)在的中大型軟件都是團(tuán)隊(duì)的集體智慧產(chǎn)出。

16db1fdc-3a11-11ed-9e49-dac502259ad0.jpg

17068834-3a11-11ed-9e49-dac502259ad0.jpg

如上是兩大頂級(jí)開(kāi)源基金會(huì)@TheASF[6]與@linuxfoundation[7]的知名項(xiàng)目,成千上萬(wàn)的軟件工程師的集體協(xié)作開(kāi)發(fā)了達(dá)上億的代碼行數(shù)最終才誕生了這些偉大的項(xiàng)目。

而團(tuán)隊(duì)協(xié)作最重要的是成員間的謙虛、尊重與信任。如果沒(méi)有這些最基本的條件,集體協(xié)作將會(huì)困難重重,團(tuán)隊(duì)成員無(wú)法形成穩(wěn)固的合作關(guān)系,時(shí)間和精力很容易被內(nèi)耗完。

打造知識(shí)共享文化

軟件工程與傳統(tǒng)工程的區(qū)別在于其是一項(xiàng)知識(shí)密集型的活動(dòng),其中涉及到了大量的知識(shí)管理工作。知識(shí)管理[8]很容易做差,最終產(chǎn)生了以下的一些問(wèn)題:

?缺乏心理安全:當(dāng)一個(gè)新成員進(jìn)入組織的時(shí)候,會(huì)因?yàn)槿狈π睦戆踩卸桓冶┞蹲约翰欢闹R(shí),這會(huì)阻礙該成員的個(gè)人成長(zhǎng),最終也會(huì)傳導(dǎo)到團(tuán)隊(duì)的開(kāi)發(fā)效率上來(lái)。?知識(shí)孤島:知識(shí)沒(méi)有分享的文化土壤,每個(gè)團(tuán)隊(duì)都悶頭搞自己的項(xiàng)目,會(huì)逐漸產(chǎn)生很多重復(fù)造輪子的現(xiàn)象。?知識(shí)單點(diǎn)故障:團(tuán)隊(duì)內(nèi)的重要信息只有一個(gè)人知道,而這個(gè)人又沒(méi)有分享給其他人,一旦這個(gè)人不在場(chǎng),團(tuán)隊(duì)將無(wú)法正常運(yùn)轉(zhuǎn)。?團(tuán)隊(duì)知識(shí)斷層:團(tuán)隊(duì)內(nèi)的技術(shù)專家并沒(méi)有意愿將個(gè)人的經(jīng)驗(yàn)傳授給團(tuán)隊(duì)其它成員,導(dǎo)致團(tuán)隊(duì)的運(yùn)轉(zhuǎn)離不開(kāi)一小部分技術(shù)專家,一旦這些人離開(kāi),整個(gè)團(tuán)隊(duì)將無(wú)法正常運(yùn)轉(zhuǎn)。?鸚鵡行為:這種很容易出現(xiàn)在團(tuán)隊(duì)新成員,由于經(jīng)驗(yàn)限制或背景上下文了解有限,而在不了解其原理的情況下復(fù)制一些代碼。雖然系統(tǒng)可以運(yùn)行,但潛在的埋下了一些問(wèn)題。?知識(shí)禁區(qū):團(tuán)隊(duì)成員由于經(jīng)驗(yàn)限制或不了解背景上下文,而不敢修改代碼庫(kù)的某些遺留代碼。

這些都是組織學(xué)習(xí)文化中會(huì)遇到的一些挑戰(zhàn)。Google在打造知識(shí)共享文化上做了很多嘗試,比如營(yíng)造安全的學(xué)習(xí)環(huán)境,鼓勵(lì)新人通過(guò)提問(wèn)與分享來(lái)提高個(gè)人的技術(shù)。這些實(shí)踐在敏捷過(guò)程中也可以看到,比如:

?鼓勵(lì)個(gè)人反饋的文化(Feedback)。對(duì)事不對(duì)人,根據(jù)事實(shí)對(duì)成員提供建設(shè)性的反饋,幫助成員變的更好。?鼓勵(lì)團(tuán)隊(duì)成員定期做分享(Session)。比如每周某個(gè)成員可以做某個(gè)主題的Session,這種實(shí)踐能讓分享者對(duì)分享的主題有更深的了解。?每日站會(huì)同步工作進(jìn)度。不僅可以讓其它成員了解你所工作的范圍,還能告知其它成員潛在的交付風(fēng)險(xiǎn)。?定期回顧(Retro)。團(tuán)隊(duì)定期舉行迭代回顧的會(huì)議,回顧最近工作中好的、不好的的方面及相關(guān)建議,最終制定出一些行動(dòng)來(lái)提升團(tuán)隊(duì)的工作效率、質(zhì)量與幸福感。?團(tuán)隊(duì)Wiki工作區(qū)。團(tuán)隊(duì)知識(shí)沉淀的體現(xiàn),新人可以通過(guò)查閱這些資料迅速了解項(xiàng)目背景上下文。?代碼評(píng)審(Code Diff)。代碼評(píng)審在Google的軟件工程中是一項(xiàng)全員必須執(zhí)行的實(shí)踐。代碼評(píng)審可以提高團(tuán)隊(duì)成員的編碼水平,發(fā)掘代碼潛在Bug,識(shí)別代碼壞味道,形成統(tǒng)一的編碼風(fēng)格,共享業(yè)務(wù)與技術(shù)知識(shí),消減團(tuán)隊(duì)知識(shí)斷層的影響,甚至可以解決鸚鵡行為與知識(shí)禁區(qū)的問(wèn)題。比如我所在的項(xiàng)目上團(tuán)隊(duì)所有開(kāi)發(fā)成員每天會(huì)拿出一小時(shí)做集體的Code Diff,雖然成本不低,但其收益也很高。?結(jié)對(duì)編程(Pair Programming)。結(jié)對(duì)編程看起來(lái)是兩個(gè)人在做一個(gè)人的活,但一般也有兩種模式:乒乓模式(Ping-Pong)與領(lǐng)航員觀察者模式(Navigator-Observer),前者適合以TDD的方式開(kāi)發(fā),后者適合老帶新。結(jié)對(duì)編程是成本高但非常高效的知識(shí)共享的實(shí)踐,需結(jié)合項(xiàng)目實(shí)際的帶寬決定當(dāng)前是否采用此模式開(kāi)發(fā)。比如我們項(xiàng)目會(huì)在交付時(shí)間不緊張時(shí)采用此開(kāi)發(fā)模式。

以上的一些實(shí)踐需結(jié)合組織或項(xiàng)目的實(shí)際帶寬來(lái)決定是否使用,比如Code Diff一般是建議或者強(qiáng)制的,而結(jié)對(duì)編程是可選的,分享(Session)和回顧可能是定期或不定期的。

領(lǐng)導(dǎo)團(tuán)隊(duì)(Tech Lead

當(dāng)做了一段時(shí)間獨(dú)立貢獻(xiàn)者(Individual Contributor)后,可能有機(jī)會(huì)做Tech Lead了。Tech Lead是一個(gè)團(tuán)隊(duì)必備的角色,具有一定的職權(quán)影響力,當(dāng)然更多的是采用非職權(quán)影響力去帶領(lǐng)團(tuán)隊(duì)。

如何領(lǐng)導(dǎo)團(tuán)隊(duì)是個(gè)復(fù)雜的工作,對(duì)技術(shù)人員來(lái)說(shuō),從技術(shù)到管理是很難的事情。

175839d6-3a11-11ed-9e49-dac502259ad0.jpg

對(duì)于此我的個(gè)人經(jīng)驗(yàn)也不是很豐富,所以想了解此部分的推薦閱讀此書原文。當(dāng)然下面這些文章也不錯(cuò):

?The Definition of a Tech Lead[9]?What Does a Software Tech Lead Do?[10]?Tech Lead[11]

工程效率測(cè)量

沒(méi)有測(cè)量就沒(méi)有優(yōu)化。只有測(cè)量到團(tuán)隊(duì)的工程效率后,我們才有可能制定提升效率的行動(dòng)。Google設(shè)計(jì)出了GSM框架來(lái)測(cè)量工程效率。

1815a4a8-3a11-11ed-9e49-dac502259ad0.jpg

工程效率的測(cè)量一般發(fā)生在大規(guī)模團(tuán)隊(duì)或組織級(jí)別,我所經(jīng)歷的項(xiàng)目上并沒(méi)有此實(shí)踐。對(duì)小型團(tuán)隊(duì)來(lái)說(shuō),可以通過(guò)簡(jiǎn)單的一些問(wèn)卷調(diào)查這類定性的方式來(lái)收集團(tuán)隊(duì)成員的反饋,當(dāng)然也可以通過(guò)一些量化的指標(biāo)如流水線構(gòu)建速度、迭代開(kāi)發(fā)速率、代碼靜態(tài)分析結(jié)果、測(cè)試覆蓋率等指標(biāo)測(cè)量團(tuán)隊(duì)的工程效率。

總結(jié)

軟件工程是一項(xiàng)復(fù)雜的知識(shí)工程,這讓其區(qū)別于傳統(tǒng)的項(xiàng)目管理。Google的軟件工程文化與以人為中心的敏捷過(guò)程所倡導(dǎo)的理念有很多相似之處。

但反觀國(guó)內(nèi)很多軟件公司雖然也用上了敏捷過(guò)程的方法論,但底層的文化土壤還是以過(guò)程為中心的方法論,對(duì)團(tuán)隊(duì)成員的不信任,沒(méi)有分享文化,團(tuán)隊(duì)領(lǐng)導(dǎo)一言堂還是存在的。希望這種現(xiàn)象能隨著國(guó)內(nèi)IT行業(yè)的逐漸成熟越來(lái)越少吧。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3689

    瀏覽量

    95285
  • 編程語(yǔ)言
    +關(guān)注

    關(guān)注

    10

    文章

    1956

    瀏覽量

    36696
  • 軟件工程
    +關(guān)注

    關(guān)注

    1

    文章

    31

    瀏覽量

    11275

原文標(biāo)題:Google軟件工程之文化篇

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    湃睿科技參與制定的兩項(xiàng)國(guó)家標(biāo)準(zhǔn)發(fā)布

    近日,由全國(guó)信標(biāo)委軟件與系統(tǒng)工程分技術(shù)委員會(huì)主辦,中國(guó)科學(xué)院軟件研究所承辦的“智能軟件工程標(biāo)準(zhǔn)工作會(huì)”在北京召開(kāi),上海湃睿信息科技有限公司(以下簡(jiǎn)稱“湃睿科技”)作為智能
    的頭像 發(fā)表于 07-08 15:45 ?248次閱讀

    開(kāi)源鴻蒙工程工具分論壇圓滿舉辦

    近日,開(kāi)源鴻蒙開(kāi)發(fā)者大會(huì)2025(OHDC.2025)工程工具分論壇在深圳圓滿舉辦。本次分論壇由開(kāi)源鴻蒙IDE SIG組長(zhǎng)、華為終端BG工程工具技術(shù)專家唐春擔(dān)任出品人,主題為“開(kāi)源鴻蒙應(yīng)用開(kāi)發(fā)新范式下的軟件工程技術(shù)和
    的頭像 發(fā)表于 06-05 15:35 ?462次閱讀

    如何成為一名嵌入式軟件工程師?

    如何成為一名嵌入式軟件工程師? 01明確崗位的角色與定位 嵌入式軟件工程師主要負(fù)責(zé)開(kāi)發(fā)運(yùn)行在特定硬件平臺(tái)上的軟件,這些軟件通常與硬件緊密集成,以實(shí)現(xiàn)特定的功能。 不僅需要精通
    發(fā)表于 04-15 14:37

    學(xué)硬件好還是學(xué)軟件好?

    、計(jì)算機(jī)硬件等領(lǐng)域相關(guān)。 學(xué)習(xí)軟件則側(cè)重于編程、算法、數(shù)據(jù)結(jié)構(gòu)等方面。軟件工程師負(fù)責(zé)開(kāi)發(fā)、測(cè)試和維護(hù)各種軟件應(yīng)用程序,如操作系統(tǒng)、辦公軟件
    發(fā)表于 04-07 15:27

    嵌入式軟件工程師就業(yè)好不好?

    嵌入式軟件工程師就業(yè)好不好?會(huì)不會(huì)越老越吃香?今天一起來(lái)看看。 首先看下市場(chǎng)需求。 隨著物聯(lián)網(wǎng)、人工智能、5G等前沿技術(shù)的快速發(fā)展,嵌入式系統(tǒng)的應(yīng)用領(lǐng)域不斷擴(kuò)大,從智能家居、汽車電子到工業(yè)自動(dòng)化
    發(fā)表于 02-20 10:19

    Testin云測(cè)獲智能化軟件工程工作組優(yōu)秀單位榮譽(yù)

    隨著人工智能技術(shù)的深度應(yīng)用,大模型等AI技術(shù)在推動(dòng)軟件行業(yè)智能化進(jìn)程中的重要性日益凸顯。軟件工程,作為大模型、智能體等AI技術(shù)落地應(yīng)用的前沿領(lǐng)域,正加速推進(jìn)智能化轉(zhuǎn)型。在這場(chǎng)變革中,企業(yè)、科研機(jī)構(gòu)以及眾多行業(yè)專家紛紛投身其中,共同探索智能化
    的頭像 發(fā)表于 01-21 10:46 ?378次閱讀

    特斯拉招募軟件工程師強(qiáng)化無(wú)人駕駛與機(jī)器人遠(yuǎn)程操作

    近日,據(jù)外媒最新報(bào)道,特斯拉正緊鑼密鼓地招募軟件工程師團(tuán)隊(duì),旨在加強(qiáng)其無(wú)人駕駛出租車及Optimus機(jī)器人的遠(yuǎn)程操作能力。這一舉措標(biāo)志著特斯拉在推動(dòng)自動(dòng)駕駛與人工智能領(lǐng)域邁出了重要一步。 特斯拉此次
    的頭像 發(fā)表于 11-27 10:26 ?1023次閱讀

    DLPC3439軟件編程人員指南

    電子發(fā)燒友網(wǎng)站提供《DLPC3439軟件編程人員指南.pdf》資料免費(fèi)下載
    發(fā)表于 10-31 10:01 ?0次下載
    DLPC3439<b class='flag-5'>軟件</b><b class='flag-5'>編程</b>人員指南

    歐姆龍的PLC編程軟件有哪些?

    歐姆龍(OMRON)是全球領(lǐng)先的自動(dòng)化解決方案提供商,其可編程邏輯控制器(PLC)編程軟件在工業(yè)自動(dòng)化領(lǐng)域具有廣泛的應(yīng)用。歐姆龍PLC編程軟件
    的頭像 發(fā)表于 10-18 15:48 ?3340次閱讀

    淺談PLC編程軟件的特征

    優(yōu)秀的PLC編程軟件通常具備以下特征。
    的頭像 發(fā)表于 09-20 14:59 ?692次閱讀

    單片機(jī)圖形化編程軟件有哪些

    單片機(jī)圖形化編程軟件為開(kāi)發(fā)者提供了一種更加直觀、易于上手的編程方式,尤其適合初學(xué)者和教育領(lǐng)域。以下是一些常見(jiàn)的單片機(jī)圖形化編程軟件: Ard
    的頭像 發(fā)表于 09-02 10:14 ?3693次閱讀

    esp32用什么軟件編程

    ESP32是一款由樂(lè)鑫(Espressif)推出的低功耗、高性能的Wi-Fi和藍(lán)牙雙模微控制器,廣泛應(yīng)用于物聯(lián)網(wǎng)、智能家居、智能穿戴等領(lǐng)域。要對(duì)ESP32進(jìn)行編程,需要選擇合適的編程軟件和開(kāi)發(fā)環(huán)境
    的頭像 發(fā)表于 08-19 17:24 ?7037次閱讀

    嵌入式軟件開(kāi)發(fā)招聘

    本帖最后由 jf_19082533 于 2024-7-26 13:56 編輯 尋求:嵌入式軟件工程師 要求:3年以上開(kāi)發(fā)經(jīng)驗(yàn),音視頻領(lǐng)域應(yīng)用層開(kāi)發(fā) 地址:北京市昌平區(qū) 郵箱:1017933921@qq.com 歡迎廣大感興趣的朋友約聊。
    發(fā)表于 07-26 13:44