程序員在編程的時(shí)候難免會(huì)犯錯(cuò)誤,但如果不從錯(cuò)誤中吸取教訓(xùn),那么習(xí)慣成自然,你會(huì)經(jīng)常犯錯(cuò)的。從錯(cuò)誤中不斷的學(xué)習(xí),鍛煉好的行為習(xí)慣有助于事業(yè)上的穩(wěn)定。這就是我們?nèi)绾螌⑿←湉脑憧分袇^(qū)別出來(lái)以及如何避免編程禁忌的絕佳經(jīng)驗(yàn)。此外,最重要的就是可以為客戶(hù)帶來(lái)更好的用戶(hù)體驗(yàn)。
1. 不提升非技術(shù)技能
我們認(rèn)為非技術(shù)技能是項(xiàng)目成功的主要因素。這些非技術(shù)技能也可以稱(chēng)之為“軟技能”,總體上來(lái)說(shuō),它已經(jīng)被公司證明為能夠駕馭企業(yè)和客戶(hù)之間的長(zhǎng)期商業(yè)關(guān)系,因此也能決定公司的成長(zhǎng)發(fā)展路徑。一些關(guān)鍵的軟技能指標(biāo)包括:
a.紀(jì)律——這是最重要的特征之一,缺乏紀(jì)律,最終會(huì)讓這個(gè)開(kāi)發(fā)團(tuán)隊(duì)在開(kāi)發(fā)能力上“缺乏自信”。解決這一問(wèn)題的矯正方法就是每天制定詳細(xì)的to-do清單:兌現(xiàn)你的承諾、完成你開(kāi)始做的事情、避免多重任務(wù),因?yàn)檫@些往往會(huì)讓你的生活產(chǎn)生混亂。
b.顧客的聲音——不把客戶(hù)置于決策的核心地位只會(huì)跟你們業(yè)務(wù)的原始目的相沖突。如果客戶(hù)不高興,即使你擁有世界上一流的專(zhuān)業(yè)知識(shí)和資源也不會(huì)起什么作用。保持符合客戶(hù)期望的解決方案、及時(shí)交付才能體現(xiàn)出項(xiàng)目的真正價(jià)值。
c.溝通——尤其是當(dāng)客戶(hù)和供應(yīng)商并不在同一地點(diǎn)的時(shí)候,明確而及時(shí)的溝通是填補(bǔ)服務(wù)空白的極好措施。主要集中在這三個(gè)方面你就能克服問(wèn)題——進(jìn)行主題討論、清晰表達(dá)、干脆簡(jiǎn)潔。
d.了解需求——在整個(gè)開(kāi)發(fā)生命周期過(guò)程中,決定成功和失敗的之間的一個(gè)至關(guān)重要的區(qū)別將會(huì)給人留下深刻的印象。通過(guò)最初的頭腦風(fēng)暴法了解問(wèn)題狀態(tài),以及后續(xù)的交貨程序,這其中都要和客戶(hù)完美配合。只有這樣,客戶(hù)才會(huì)贊賞你的工作,給你好評(píng)。
2. 對(duì)編碼不理智
古人云:善泅者溺,善騎者墮。但估計(jì)絕大多數(shù)的程序員都認(rèn)為自己的編程技術(shù)絕對(duì)的牛。而同樣真實(shí)的是,每一個(gè)代碼,讓不同的程序員去實(shí)現(xiàn)的話(huà)都會(huì)不可避免地發(fā)現(xiàn)它所存在的缺陷。所以說(shuō),只有通過(guò)在一個(gè)項(xiàng)目上的合作,程序員之間必然有的摩擦才能證明誰(shuí)是最好的。健康的競(jìng)爭(zhēng)是好事,但它不應(yīng)該成為一個(gè)本來(lái)可以成功的項(xiàng)目的負(fù)擔(dān)。
另一個(gè)創(chuàng)意阻礙是無(wú)法將預(yù)定義的模板使用在對(duì)你有利的開(kāi)發(fā)項(xiàng)目里。幾乎所有的編程語(yǔ)言有一個(gè)很好的在線(xiàn)/內(nèi)置的代碼片段存儲(chǔ)庫(kù),可以修補(bǔ)代碼,防止重新編程。然而,如果因?yàn)椴焕斫庑枨蠡蛉狈佑|各種可用庫(kù)/模板的話(huà),這就意味著程序員最終會(huì)無(wú)意間將一開(kāi)始就創(chuàng)建的代碼付之東流。這不僅增加了開(kāi)發(fā)時(shí)間,也提高了總體成本。另外一點(diǎn)就是,發(fā)布了的代碼已經(jīng)經(jīng)過(guò)了質(zhì)量檢測(cè),所以只有將它用作模板才能發(fā)揮它更大的價(jià)值。
3. 不一定什么都要被理解
如果你是剛調(diào)到這個(gè)團(tuán)隊(duì)來(lái)的編程人員,對(duì)于手頭的工作并不是很熟悉,那該怎么辦?肯定是先看一些前任留下來(lái)的工作計(jì)劃,要是他寫(xiě)的詳細(xì)倒也沒(méi)什么,如果寫(xiě)的不詳細(xì),估計(jì)會(huì)讓你更加的撓頭。
因此,推己及人,在需要交代的工作上,最好是把任務(wù)寫(xiě)的盡可能的詳細(xì)。這么做也是非常現(xiàn)實(shí)的原因:能夠把編程問(wèn)題解決掉,最好是保證使用解釋性的語(yǔ)言和英語(yǔ)發(fā)音來(lái)表示變量。一些基本的指針可以讓你的程序更容易被理解,包括:
a. 把所有參數(shù)、引用、方法和變量名稱(chēng)盡可能接近英語(yǔ)表達(dá)。保持文件名簡(jiǎn)短但有助于理解的功能。
b. 使用++包裝文字是一個(gè)好辦法,能讓代碼和注釋更加清晰。
c. 將編寫(xiě)的程序保持在一個(gè)連續(xù)的流程上,尤其是在使用OOP基礎(chǔ)上的語(yǔ)言:C#、C 和 C++。
d. 對(duì)于不同的代碼塊使用不同的描述名稱(chēng)。
4. 不使用經(jīng)過(guò)驗(yàn)證的工具和技術(shù)
程序員的好壞從他使用的編程工具和調(diào)試工具上就能看出。在異常情況的跟蹤上,下面就是程序員經(jīng)常會(huì)出現(xiàn)的常見(jiàn)錯(cuò)誤。
對(duì)一些可能會(huì)對(duì)其它代碼有影響的常見(jiàn)案例進(jìn)行捕捉,處理這些比較常見(jiàn)的異常情況(而不是特殊的異常)意味著無(wú)意中除除掉了會(huì)抑制整個(gè)程序的殘留部分,因此并不會(huì)影響他人的代碼。
也許程序員可能帶有惡意的意圖來(lái)捕捉所有的異常情況,但即使是捕捉到了也不實(shí)施采取措施,這就是常說(shuō)的“虛假安全閥”,這種異常處理手段是對(duì)整個(gè)軟件的穩(wěn)定和安全的一種妥協(xié)方式。
5. 較差的控制版本
在任何涉及多個(gè)團(tuán)隊(duì)的項(xiàng)目里,當(dāng)談到版本控制的時(shí)候不去介紹使用最佳實(shí)踐都是一個(gè)十足的罪過(guò)。版本控制的目的是確保由一個(gè)人執(zhí)行的編輯或修訂不去影響另一個(gè)人的工作。
版本控制不僅有助于將由兩個(gè)或兩個(gè)以上的程序員的編輯工作合并到一起,還有助于跟蹤程序的更改歷史。所以說(shuō),任何開(kāi)發(fā)團(tuán)隊(duì)都應(yīng)該做一些好的改進(jìn)措施以確保強(qiáng)大的版本控制,這其中就包括:
為每個(gè)解決方案創(chuàng)建一個(gè)“邏輯單元”
給解決方案制定描述性的名稱(chēng)
確保你所使用的都是最先進(jìn)的文件
頻繁的向團(tuán)隊(duì)分享你所做的各種改變
6. 擁有最新信息的個(gè)人代表不了團(tuán)隊(duì)
這是相對(duì)有趣的一點(diǎn),所有的商業(yè)產(chǎn)品都想要以自身的敏捷技術(shù)和產(chǎn)品文化來(lái)給客戶(hù)留下深刻的印象,但是現(xiàn)實(shí)中很少有廠商會(huì)花時(shí)間去磨練他們員工在介紹產(chǎn)品特點(diǎn)上的技能。許多公司只是簡(jiǎn)單地提供了一些基本的培訓(xùn),并且抱希望與員工在真實(shí)的日常項(xiàng)目里學(xué)到更多的技能。所以部門(mén)經(jīng)理和項(xiàng)目的直接領(lǐng)導(dǎo)可以通過(guò)以下兩個(gè)辦法來(lái)提高員工的業(yè)績(jī):
一旦有新員工加入,就立刻強(qiáng)制安排他參加專(zhuān)業(yè)培訓(xùn),讓他知道他的角色是用來(lái)干什么的,盡早產(chǎn)生創(chuàng)造力。例如一個(gè)測(cè)試人與加入之后,就應(yīng)該向他介紹編程的理念,之后將培訓(xùn)重點(diǎn)放到測(cè)試實(shí)踐上,而不是繼續(xù)闡述編程的重要性。
現(xiàn)階段的技術(shù)的進(jìn)化程度比以往任何時(shí)候都要快,,所以要記住,定期培訓(xùn)是必不可少的,這是在給團(tuán)隊(duì)創(chuàng)造價(jià)值。例如一個(gè)Web 設(shè)計(jì)師需要知道響應(yīng)式設(shè)計(jì),提供給設(shè)計(jì)師大量的用戶(hù)日常使用的移動(dòng)設(shè)備的不斷擴(kuò)張的樣品,希望他們能獲得靈感。
7. 不恰當(dāng)?shù)臏y(cè)試
測(cè)試作為整個(gè)系統(tǒng)開(kāi)發(fā)生命周期(Systems Development Life Cycle,簡(jiǎn)稱(chēng)SDLC)的重要一個(gè)要素,通常不需要開(kāi)發(fā)團(tuán)隊(duì)給出太驚人的結(jié)果。但是如果在測(cè)試環(huán)節(jié)沒(méi)有付出恰當(dāng)?shù)摹⑾鄳?yīng)的努力的話(huà),這是說(shuō)不過(guò)去的。下面的一些方法或許對(duì)你的測(cè)試團(tuán)隊(duì)有用,至少在你們交付產(chǎn)品的時(shí)候能夠給用戶(hù)一個(gè)好的交代。
單元測(cè)試
實(shí)物模型
綜合測(cè)試
8. 注意安全漏洞
有的時(shí)候在軟件開(kāi)發(fā)過(guò)程中,就會(huì)遇見(jiàn)如下這樣的安全漏洞:
A、不同組件之間意想不到的交互作用:a、輸入不正確的驗(yàn)證信息;b、SQL資料隱碼攻擊;c、跨網(wǎng)站指令碼;d、命令植入攻擊;e、跨站請(qǐng)求偽造(CSRF);
B、難以實(shí)施的資源管理,包括:a、不尊重可用內(nèi)存緩沖區(qū);b、對(duì)外控制;c、使用有潛在危險(xiǎn)的功能;
9. 和客戶(hù)交流
最初的合同簽訂后,開(kāi)發(fā)公司通常會(huì)忘記每天與客戶(hù)進(jìn)行產(chǎn)品上的信息交互,以至于在交貨的時(shí)候還需要進(jìn)行升級(jí)。兩大關(guān)鍵的交流點(diǎn)可以讓你和客戶(hù)保持更好的、更長(zhǎng)的關(guān)系:
在客戶(hù)開(kāi)問(wèn)之前,開(kāi)發(fā)方應(yīng)該和客戶(hù)進(jìn)行交流溝通。
和客戶(hù)保持周期性的交流。
10. 避免標(biāo)準(zhǔn)實(shí)踐面臨的迫在眉睫的最后期限
通常情況下項(xiàng)目都會(huì)遇到進(jìn)度延誤的現(xiàn)象。然而,這不是說(shuō)你有理由去偷工減料或者是在開(kāi)發(fā)或測(cè)試階段耍花招,未經(jīng)測(cè)試的模塊絕對(duì)是一個(gè)隱患,會(huì)讓你的開(kāi)發(fā)團(tuán)隊(duì)名譽(yù)受損的。一個(gè)更好的方法來(lái)管理延遲是提前告知客戶(hù)并且積極執(zhí)行延遲計(jì)劃。只要延期的理由是有效的,客戶(hù)應(yīng)該會(huì)理解,也會(huì)給你額外的時(shí)間來(lái)解決這個(gè)問(wèn)題。
顯然,在項(xiàng)目的最后期限內(nèi),急急忙忙完成編程的質(zhì)量肯定不是特比保險(xiǎn),所以在交付之后開(kāi)發(fā)團(tuán)隊(duì)整體上會(huì)花更多的時(shí)間和努力來(lái)進(jìn)行跟蹤維護(hù),這樣的成本也是很巨大的,最好的辦法就在一開(kāi)始就制定完美的執(zhí)行計(jì)劃。項(xiàng)目再造所耗費(fèi)的資源或許是項(xiàng)目本身的成本的好幾倍,任何一個(gè)公司寧愿花更多的時(shí)間在初始開(kāi)發(fā)上,這樣最終的產(chǎn)品一定會(huì)符合SDLC標(biāo)準(zhǔn),并在缺陷和不良問(wèn)題上有足夠的話(huà)語(yǔ)權(quán)。對(duì)于顧客來(lái)說(shuō),時(shí)效性不能以犧牲質(zhì)量為代價(jià),永遠(yuǎn)都不能。
-
工程師
+關(guān)注
關(guān)注
59文章
1569瀏覽量
68505 -
編程
+關(guān)注
關(guān)注
88文章
3614瀏覽量
93686
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論