小强怎样练成——读《现代软件工程——构建之法》第三章有感
小強(qiáng)怎樣練成
————讀《現(xiàn)代軟件工程——構(gòu)建之法》第三章有感
一、知道自己吃幾碗干飯
先秦時期的“革命家”告訴我們“知人者智,自知者明”,“自知之明”是一種美德,即便是老得“掉渣”的思想,直到今天依然有用。
對于軟件工程師來說,這種能力尤為重要。我們與生俱來,有著一種“盲目”性,身處職場或是課堂,看著他人升職加薪得高分,心里的癢癢肉又開始“騷”起來。
然而,你摸摸自己胸口的肉,“你良心不會痛”嗎?如果說“水平”分成100分,“大牛”95分,那么問問自己到“70分”了嗎?
然而為了明白“自己吃幾碗干飯”我們就需要一把衡量自己的“尺子”。
二、嘴好使就行
“軟件開發(fā)流程”是我們在前兩章中,經(jīng)常會接觸到一個名詞,簡言之就是軟件開發(fā)者將開發(fā)的相關(guān)技術(shù)和過程統(tǒng)一到體系中的工作過程。此“過程”是“有序”的,但卻并非是“無爭論”的,“少馬爺”說“抬杠長姿勢”也就是這個道理。
為什么呢?
理由很簡單,不同角色的考慮范疇是不同的,有人的地方就有“江湖”,有江湖的地方就有“沖突”。然而好的團(tuán)隊就是盡量釋放積極方面(做好自己,說服別人),同時避免消極方面(因?yàn)闆_突產(chǎn)生的消極、抵觸情緒等)。
那么什么才是“包治百病”的“老中醫(yī)”呢?其實(shí)很簡單,就是“嘮”。
說的書面一點(diǎn)就是“溝通”、“交流”【2】。
作為一名IC(Individual Contributor),交流的作用【2】有如下:
1.通過“嘮嗑”,理解問題、需求或任務(wù)。
就像《猩球崛起3》里反派上校說的一樣,上帝賦予人類區(qū)別于禽獸的表征就是“Speak”,開發(fā)者通過“交流”了解用戶的需求。
2.提出解決方法和工作量。
對于沒有硬性規(guī)定的工作,在開始時期,任務(wù)都是“潤物細(xì)無聲”的存在于雙方的腦中,需要通過不斷的“溝通”將抽象內(nèi)容具體化。
3.與相關(guān)角色交流解決問題的提案,決定一個可行方案。
4.執(zhí)行,把想法“代碼化”,同時驗(yàn)證方案“可行性”。
5.與他人合作,改錯。
“一人計短,三人計長”,在實(shí)際問題中,我們總會遇到這樣那樣的問題,很多時候,一個人很難把所有問題掌握清楚,于是乎,開發(fā)中我們也應(yīng)該具備“圓桌騎士”精神,凡事商量著來。
6.對發(fā)布的結(jié)果,進(jìn)行負(fù)責(zé)。
對于已經(jīng)發(fā)布的活兒,需要不斷的“嘴對付”,對于提出的問題需要進(jìn)行“解答”。
三、大招套裝(衡量水平)
哲學(xué)喜歡以辯證的方式看待問題,同樣衡量一個軟件開發(fā)者的標(biāo)準(zhǔn)也不可能是“一錘子買賣”。現(xiàn)在,由貧僧教施主兩個大招【2】:
第一招,針對成長的標(biāo)準(zhǔn)
1.積累軟件開發(fā)的相關(guān)基礎(chǔ)知識,增強(qiáng)內(nèi)力。
《射雕英雄傳》里,郭大俠最喜歡的招就是“飛龍在天”,因?yàn)檫@是整套“降龍十八掌”的第一招和基礎(chǔ),只有基礎(chǔ)打牢,才能在更高層次上“游刃有余”。正所謂“重劍無鋒,大巧不工”。
2.積累問題領(lǐng)域的知識和經(jīng)驗(yàn)。
然而,再扎實(shí)的“基礎(chǔ)”也需要一定的實(shí)際問題加以驗(yàn)證和實(shí)踐。如果學(xué)會了絕世武功,只知道直著打,不知道“變化”,那么學(xué)就不如不學(xué),然而如何學(xué)?學(xué)的就是“經(jīng)驗(yàn)”,在實(shí)踐中,巧練本領(lǐng),“紙上得來終覺淺,覺知此事需躬行”。
3.對通用的軟件設(shè)計思想和軟件工程思想的理解。
什么樣的知識才是屬于自己的?“師傅領(lǐng)進(jìn)門,修行在個人”,就像葉問的拳法就和陳華順先生(詠春拳大師)的手法一模一樣?領(lǐng)悟、變化,從而出奇制勝。
4.提升職業(yè)技能(區(qū)別于技術(shù)技能)
其包括:自我管理能力,表達(dá)和交流能力,合作能力,保質(zhì)保量完成任務(wù)執(zhí)行力
5.實(shí)際成果
公開的實(shí)際項目是否的道理現(xiàn)實(shí)的成效?
第二招,針對開發(fā)工作量和質(zhì)量
1.項目/任務(wù)的大小 一般通過行數(shù)以及功能點(diǎn)數(shù)進(jìn)行標(biāo)記
2.花費(fèi)時間 對于目標(biāo)項目的花費(fèi)的時間
3.質(zhì)量如何,兩種途徑
1)交付測試人員
2)交付客戶
其中,re-work只表明開發(fā)過程中所花費(fèi)的時間,re-work的多寡并不和最終質(zhì)量成正比。
4.是否按時交付
按時交貨是針對于答應(yīng)客戶的承諾來說的,“君子當(dāng)擇言而說,以信立言”,這樣客戶才更愿意與開發(fā)者團(tuán)隊形成較為長期的合作關(guān)系。
四、低級玩家的起跑線
團(tuán)隊的軟件流程(TSP)對于成員的要求有【2】:
1.交流
2.說到做到
人類需要為自己的言行負(fù)責(zé),這樣才有人愿意與某個人形成一種相互信賴的關(guān)系。
3.接受團(tuán)隊賦予角色并且按角色要求工作
就像馬克思所說,只有人類接受并且按照“社會分工”進(jìn)行全力以赴的工作,社會才能向前發(fā)展。
4.全力投入團(tuán)隊活動
5.按照團(tuán)隊的流程工作
6.準(zhǔn)備
7.理性的工作
“沖動是魔鬼,可樂是禍水”,凡是試圖將所有問題“一次性”完美解決的人或者行為都是不可靠的。
五、你以為你以為的就是你以為的嗎
軟件的模塊之間,存在各種復(fù)雜的依賴關(guān)系。不可見性以及易變性導(dǎo)致軟件很難清楚定義,使得軟件不易維護(hù)和修復(fù)。
主要問題包括【2】:
1.分析麻痹
2.不分主次,想解決所有依賴問題
3.過早優(yōu)化
4.過早擴(kuò)大化/泛化
這些問題的來源都在于“不知道自己吃幾碗干飯”,哲學(xué)里,反復(fù)強(qiáng)調(diào)“主要矛盾與次要矛盾”之間的關(guān)系,凡是不分主次,“眉毛胡子一把抓”必然不會長久。
軟件工程的特點(diǎn):模塊化,抽象,總頂向下,逐步求精【1】。想要將軟件開發(fā)“一蹴而就”本身就是不可取的。開發(fā)過程的實(shí)質(zhì)就是將大問題根據(jù)邊界進(jìn)行拆分,劃分成小問題的過程。只有將每個子問題都解決,其問題的集合才能得到真正的解決。
六、意氣用事還是另有所圖
其實(shí),軟件過程的內(nèi)容與其說是一門技術(shù)更像是一門方法論,這種思維應(yīng)該是凌駕于各種知識之上的一種處理問題以及解決實(shí)際問題的能力。人類從“呱呱墜地”開始就是開始學(xué)習(xí)各種技能,而將技能“巧妙”運(yùn)用出來,這就是人類區(qū)別于“低等動物”的關(guān)鍵。
而軟件工程就是這樣一門學(xué)科,他的難度應(yīng)該不低于基礎(chǔ)學(xué)科,然而每年的國內(nèi)開始學(xué)習(xí)這門課程的學(xué)生卻呈現(xiàn)出“逐年上升”的趨勢,他們真正懂得這門課程的重要性嗎?依我看來,非也。
多數(shù)人投身于此并非主動,或者更多是一種迫于形勢的被動(比如服從調(diào)劑、就業(yè)壓力),然而“既來之,則安之”,“行行出狀元”當(dāng)每一個學(xué)子抱著一顆“敬畏”“信仰”的心情,深入學(xué)習(xí),我覺得應(yīng)該是“學(xué)有所用”的,從而達(dá)到“學(xué)以致用”的目的。
以上6點(diǎn),就是本人對于第三章內(nèi)容的大致總結(jié)的讀后感,做一個有心人,學(xué)會總結(jié),才能逐漸成為一個“小強(qiáng)”,小強(qiáng)不光是“技術(shù)”上的而更應(yīng)該做“遇到困難的小強(qiáng)”。
?
參考文獻(xiàn)
【1】張海藩?呂云翔?《軟件工程(第四版)》?2013.08.01?人民郵電出版社
【2】鄒欣?《現(xiàn)代軟件工程-構(gòu)建之法(第三版)》?2017.03?人民郵電出版社
轉(zhuǎn)載于:https://www.cnblogs.com/LiYuxuan1104/p/LeeYuxuan04.html
總結(jié)
以上是生活随笔為你收集整理的小强怎样练成——读《现代软件工程——构建之法》第三章有感的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RabbitMQ 面试题目整理
- 下一篇: matlab里正负号怎么表示,正负号符号