中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
程序員的“紀(jì)律性”

程序員的“紀(jì)律性”

摘要:在所謂的紀(jì)律性團隊里,程序員往往學(xué)不到什么東西。因為麻木地堆代碼永遠(yuǎn)不是軟件行業(yè)的核心競爭力,設(shè)計能力才是,多問幾個為什么、一定要這樣和為什么不那樣,對年輕人,尤其對一個有技術(shù)追求的年輕人永遠(yuǎn)有好處。


國慶節(jié)長假前后,我和很多業(yè)內(nèi)外的朋友們展開了關(guān)于“碼農(nóng)”的大討論,作為這些討論的延伸,一篇叫做《從“碼農(nóng)”說起》的文章從腦海中輸出,最終展現(xiàn)在CSDN官網(wǎng)上。在文章中,我主張年輕的技術(shù)人們不應(yīng)該接受社會輿論強加的“碼農(nóng)”屬性,自己做有創(chuàng)造力的事情,要相信付出和智慧一定有回報。此文一出,得到了很多朋友的批評指正,令我頗為欣喜,因為有互動才會有頭腦風(fēng)暴,進(jìn)而產(chǎn)生更多的新想法。

回顧當(dāng)時那場大討論,其中很多觀點其實值得深入探討,比如在討論中,一位名為“@不動如山_”的朋友是這么說的:

對于軟件是不是勞動密集性產(chǎn)業(yè),你認(rèn)為怎樣合理是一回事,現(xiàn)實如何是另一回事。作為老程序員,老se,我參加過上千人的團隊協(xié)作,數(shù)年的開發(fā)周期。所有創(chuàng)造性的工作在預(yù)研階段就必須結(jié)束。一旦進(jìn)入開發(fā),就只有紀(jì)律,沒有創(chuàng)新。當(dāng)然,個別高科技產(chǎn)品的原型軟件例外。

這席話給我很大觸動,因為它觸及了我進(jìn)入IT行業(yè)之初時青澀經(jīng)歷的回憶。

多年前我剛剛加入的團隊正在開發(fā)某個通信設(shè)備。有過開發(fā)通信設(shè)備的朋友們應(yīng)該知道,其實嵌入式軟件開發(fā)的技術(shù)核心是事件調(diào)度,因為通信設(shè)備總是處在繁忙的交換和命令事件處置的狀態(tài)中,一個良好的事件調(diào)度機制是系統(tǒng)性能的靈魂,如果每次一個事件的到來都以新開一個線程的方式來應(yīng)付,系統(tǒng)資源瞬間就會枯竭,設(shè)備也就崩潰了。

當(dāng)時我們采用的是一種叫做zebra的架構(gòu),這是一個面向交換的開源項目,甚至有點像一個用戶空間運行著的內(nèi)核程序。

當(dāng)時管理這個項目團隊的項目經(jīng)理正好是一個完全沒有做過軟件開發(fā)的職業(yè)文案寫手,所以當(dāng)主力開發(fā)人員把事件調(diào)度機制的框架整理完成之后,項目經(jīng)理小眼滴溜溜一轉(zhuǎn),說道:“現(xiàn)在架構(gòu)已經(jīng)完成,下面就是大家分工,把各自的功能框架填充好了,我看了一下,一共有19個模塊,大家分一下,一個模塊每人一周時間……

這時一個資深的程序員打斷了他,資深程序員讓大家每個人把手頭做的東西做一下單元測試,聲稱下一周他會給我們一個好東西。

果然這位資深程序員拿出一周時間用腳本寫成的工具,把所有原來的功能模塊直接處理填充到zebra架構(gòu)內(nèi)。

每當(dāng)我回憶這件事情的時候,想起外行項目經(jīng)理的尷尬表情都會忍俊不禁。彼時的那位項目經(jīng)理,其實也是一個年輕有為的人,但是對于軟件開發(fā)的特點的確缺乏了解,想當(dāng)然地以為自己抓抓紀(jì)律性就行,大家按部就班、出工出力就好??墒且廊绻娴陌凑账挠媱?,功能填充過程可能需要2-3個月,況且數(shù)百萬行規(guī)模的代碼中隱藏的Bug又需要一個測試周期來捉蟲。

我把這個故事講給朋友們,有的朋友就問當(dāng)時假如沒有這個用腳本寫成的工具又當(dāng)如何?我就會反問,那么假如我們沒有找到zebra架構(gòu)又當(dāng)如何?難不成要我們幾個菜鳥來寫調(diào)度機嗎?軟件編程,是一個能走捷徑就一定要走捷徑的工作——有現(xiàn)成的可重用或者可借鑒的東西一定要重用和借鑒的,這樣工作水準(zhǔn)和工作效率才可能有保證。有現(xiàn)成的東西不用,一定是萬不得已;推倒重來,則一定是出現(xiàn)了重大問題;動不動喜歡從頭再來的程序員,肯定是涉世未深、不得要領(lǐng)的門外漢。

我曾經(jīng)將軟件工作比喻成人類這個物種的又一次進(jìn)化過程,每次開發(fā)工作的成果都順理成章地成為以后階段項目的工具。既然學(xué)習(xí)制造和使用工具正是人和動物的區(qū)別,那么在軟件工作領(lǐng)域,對走捷徑持懷疑態(tài)度,對借鑒現(xiàn)成成果持抗拒心理,反對寧可停下進(jìn)度也要先創(chuàng)造工具的開發(fā)者或管理者,就如同軟件世界里的大猩猩。

迷信“紀(jì)律性”的管理者,通常都以“戰(zhàn)斗力”為口頭禪,可惜開發(fā)產(chǎn)品畢竟不是戰(zhàn)爭,軟件編程也不是你死我活的肉搏,軟件工作其實就是一次又一次把自己的好想法,好創(chuàng)意凝結(jié)在編程語言上的過程,好的代碼精辟如詩歌一般,其簡練高效令人讀起來拍案叫絕;好的軟件架構(gòu)巧奪天工,資源節(jié)約,魯棒性強,這些都是經(jīng)過反復(fù)思索和反復(fù)斟酌的結(jié)果,這樣的工作狀態(tài)和“紀(jì)律性”、“團結(jié)就是力量”的狀態(tài)其實完全是南轅北轍。

軟件的靈魂是數(shù)學(xué)和邏輯,開發(fā)過程本身就是一種創(chuàng)造,一種與數(shù)學(xué)邏輯的對話。紀(jì)律性的靈魂是服從,是聽話,是個人意志服從集體意志,集體意志服從長官意志。這兩件事情的聯(lián)姻肯定不是自由戀愛,而是指腹為婚。

我覺得在團隊合作中,編程規(guī)范是極為必要的,用約定的編程規(guī)矩來撰寫程序是開發(fā)者應(yīng)該共同維護(hù)的良好開發(fā)氛圍。但這就是所謂紀(jì)律的邊界了,紀(jì)律的覆蓋范圍,不應(yīng)該逾越這個邊界。

這些年敏捷開發(fā)、結(jié)對編程等新興軟件開發(fā)模式的興起,從一個側(cè)面強化了我的這種認(rèn)識,那就是:軟件工作的重要方式,就是創(chuàng)造一個可以醞釀好點子的環(huán)境,讓好想法源源不斷的產(chǎn)生出來,形成代碼。軟件活動應(yīng)該回歸本源,就是激發(fā)有創(chuàng)造力的人性。

按照這個思路,我常常建議一些嵌入式軟件工程師能夠在工作之余學(xué)習(xí)一下Java,學(xué)習(xí)一下腳本語言,Awk也行,TK也行,Perl也可以。很多人會很詫異,覺得自己面向硬件,甚至面向驅(qū)動,為什么要學(xué)習(xí)那么多表示層的東西?

我認(rèn)為嵌入式系統(tǒng)軟件開發(fā)常常因為設(shè)備處理能力以及開發(fā)環(huán)境限制只能使用面向過程的C,但是在軟件工具已經(jīng)逐漸豐富起來的現(xiàn)在,底層代碼是完全可以通過腳本語言幫忙處理的,大量繁重的比對工作和代碼遷移工作完全可以用腳本來執(zhí)行,高效而且準(zhǔn)確。

單純從項目開發(fā)的效率來講,團隊里面有這樣的軟件多面手,有能夠提出這樣想法的人,比一個外行領(lǐng)導(dǎo)者對于開發(fā)者紀(jì)律性的要求要有意義,也有效的多。

這又要說到我曾經(jīng)參與的另一個項目,也是某一種通信產(chǎn)品的開發(fā)工作。這一次是給設(shè)備開發(fā)北向接口。所謂北向接口,實際上就是開放給管理系統(tǒng)的管理監(jiān)督接口。我們當(dāng)時采用的是MIB方案,以SNMPv2為接口規(guī)范。同樣的問題再次光臨:一個帶有龐大從屬終端數(shù)量的局端設(shè)備,其MIB是非常復(fù)雜的,由于管理數(shù)據(jù)的節(jié)點已經(jīng)細(xì)致到每個終端下面的每個網(wǎng)口的出入口速率和VLAN之類的細(xì)節(jié)內(nèi)容,所以數(shù)據(jù)管理異常繁瑣。

有了之前的經(jīng)驗,這一次我們也都把眼光投向腳本工具,果不其然,我們直接找到了一個開源項目,專門針對MIB開發(fā)了一套基于Perl腳本的處理工具集,把這個工具集稍加調(diào)整,就能快速生成滿足MIB訪問要求的底層數(shù)據(jù)形態(tài),并且生成的代碼有良好的可維護(hù)性,冗余度也在可接受的范圍內(nèi)。

我印象非常深的是,在做完這個項目的慶功宴上,項目組的技術(shù)大牛,也就是之前說到的那位資深程序員曾有這么一句感慨:“真正做可靠的嵌入式軟件開發(fā),以后就應(yīng)該是架構(gòu)設(shè)計配合代碼生成工具,資淺程序員的工作就是一邊做點小修小補,一邊學(xué)習(xí)架構(gòu),這樣利于成長,也對項目進(jìn)展最有利?!贝搜月犅勔延袑⒔?年,言猶在耳。

前面“@不動如山_”的那段話雖然出自一人之口,但是這樣的觀點,在國內(nèi)卻絕不是少數(shù),沒有編程背景的管理人員更是對這樣的觀點敞開懷抱,如獲至寶。很多國內(nèi)的公司在軟件部門里面都依然秉承著“人月”狀態(tài),就是把員工人數(shù)和工作時間的乘積作為公司的生產(chǎn)力,然后把具體的工作按照“人月”或者“人日”乃至“人時”進(jìn)行度量,進(jìn)而把一項任務(wù)切分出去??吹竭@里,讀過《人月神話》的朋友們應(yīng)該都會會心一笑。

寫這篇文章,也主要是想對初入這個行業(yè)或者懷有志向即將進(jìn)入這個行業(yè)的年輕技術(shù)者們說點我的心里話:堆代碼永遠(yuǎn)不是軟件行業(yè)的核心競爭力,設(shè)計能力才是,盡管很多公司還以代碼行數(shù)作為績效來考評;做一個聽話的孩子在這個行業(yè)里也很難快速提升自我,因為創(chuàng)造力是要靠自己勉勵自己才能不斷展現(xiàn)的;安排很多人做重復(fù)體力活的規(guī)劃,其實是因為沒有人去嘗試創(chuàng)造便捷的工具,這樣的所謂的“紀(jì)律性”的團隊里你肯定也學(xué)不到什么東西。多問幾個為什么、一定要這樣和為什么不那樣,對一個年輕人,尤其對一個有技術(shù)追求的年輕人永遠(yuǎn)有好處。

相關(guān)閱讀:

本文系《程序員》雜志十一月刊資訊版塊程序員天下事欄目文章

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
敏捷整潔之道-回歸本源
工具篇:程序員必讀之軟件架構(gòu)
專家視角看IT與架構(gòu)
軟件開發(fā)中需要注意的細(xì)節(jié)
程序員的桌面
編碼的善業(yè)與惡業(yè)
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服