軟體開發中最大的難題不是編寫程式,寫**只是按照邏輯去實現功能,這相對於開發者需要做的其他事情來說簡單直接多了。如果你還是乙個不算資深的業餘程式設計師,那你一定要在真正的走向職業道路前確保可以解決下面這些障礙。
軟體開發中最大的難題不是編寫程式,寫**只是按照邏輯去實現功能,這相對於開發者需要做的其他事情來說簡單直接多了。如果你還是乙個不算資深的業餘程式設計師,那你一定要在真正的走向職業道路前確保可以解決下面這些障礙。
向外行解釋軟體開發的過程是極其困難的。雖然很多人知道程式設計,但他們終究是不會寫程式的人,在他們看來,程式設計師的生活就是整天在一間小黑屋裡趴在鍵盤前,消耗著很多咖啡。你會從你的朋友,親人,同事嘴中聽到這些話,他們認為這不是乙個恰當的職業。
你會經常接到一些簡潔的,但通常表意不明的需求。比如現在有乙個商業方面問題的需求,你就要根據它來設計資料結構,程式架構,演算法,介面和一些其他 技術層面的東西來構造這個問題的解決方案。關鍵的是,你要用大家都可以理解的語言,並在有限的時間內把解決方案講給客戶,但事實是很多開發者都做不好這件事情。
這恐怕是很多程式設計師的痛苦之源。對於程式設計師來說,去評估一項從未做過的專案所需要花費的時間是極其困難的。你可能寫過相似的**,但現在的環境,問 題和限制條件都發生了變化。雖然經驗會有一些幫助,但大多數程式設計師還是低估了問題的難度,通常因為程式設計師只考慮了程式設計方面的問題,而忽略了其他相關的事 情。
有很多種方法可以得出解決方案,但是借鑑他人的**,在這個基礎上程式設計需要花很多精力和時間,因為你要去思考他們是如何構思的。而且,如果這些半成品的程式還沒有留下注釋和文件記錄,你就會更困難了。
雖然敏捷開發在一定程度上允許了需求的漸變,但並不意味著需求變化是一件好事,如果再加上一些客戶由於一時衝動提出的奇怪需求,你就更苦惱了。你知道這樣做一定會失敗,你的團隊也知道,但這是客戶的要求,而且錯誤的發生也是你的責任,因為你沒有站在他們的角度看問題。
複雜的軟體永遠做不到絕對的完美,因為總有更優的方法去完善它。你可以無限制的不斷優化你的**,這也就是為什麼專案不會提前完成。而另一方面,你 有時也會有「這樣就行了,我以後再去優化它」的想法。這樣的程式目前可以正常執行,但明天可能就會出現錯誤。當然了,你也可以不用管它,等著下乙個用它的 程式設計師去優化。
你也許自己進行了單元測試,也把軟體交付給了測試組,但bug
依然存在。原因如下:
軟體通常是複雜的,包含了成千上萬行**,其中有數不清的互動介面和路徑,把這些全都測試到是很困難的;
類似的,你的軟體會在不同的環境下和不同的軟體互動,所以也不可能測試到每一種可能性;
寫好乙個完善的單元測試是一項枯燥且困難的工作,理想情況下,測試程式的編寫應該在軟體開發前就進行,但是你要向你的客戶解釋清楚為什麼乙個月過去了卻還是沒有可用的軟體;
單元測試不會發現所有的問題。理想條件下,乙個專案應該有乙個單獨的測試團隊,他們可以積極主動的,盡可能的去找程式中的問題,但這對大多數專案來說是一件需要很大花銷並耗時的事情,所以就讓開發人員同時負責測試的任務。但是,這樣的測試是考慮不到很多邊界和極端情況的;
程式設計師通常是在用理性的邏輯處理問題,但是客戶通常不這樣,他們會發現很多你意料之外的問題。
給專案寫文件記錄是一件費力耗時的工作,
幾乎沒有開發者喜歡或擅長它,不願意花時間閱讀它們。
你每天都和技術打交道,你也許是乙個html
或php
程式設計師,但你可能還要解決一些其他問題,比如硬碟損壞,驅動衝突或軟體報錯。這些雖然都不是你 的主要工作,但如果你不去解決這些問題,你就不能繼續你的開發任務。不幸的是,在那些非
it領域的人的眼裡,你什麼都知道。當他們遇到
it方面的問題時, 他們不會花時間自己解決,而是去尋求你的幫助,而且不管什麼問題,因為你是搞計算機的,比如如何將工資單匯入
sage
,如何配置
oracle
,或者為什麼 他們的藍莓手機傳送郵件失敗。也許,這些干擾不會影響到你的日常工作,但真的不會嗎?
這些問題都可以歸結為「與人打交道」的問題。沒有外行人會指導飛行員如何開飛機,或給電工如何佈線提建議,但是他們很願意給軟體開發「勇敢」地提出建議。現在可能還沒有辦法避免這樣的事情發生,你只能接受這樣的事實:世界上有一半人的智力是低於平均水平的!
軟體開發十大模型
一 線性順序過程模型 它有時也稱為傳統生存週期模型或瀑布模型。它提出了軟體開發的系統化的 順序的方法。其流程從系統開始,隨後是需求分析 設計 編碼 測試 支援。這種模型是最早也是應用最廣泛的軟體過程模型 雖然這種模型會引起 堵賽狀態 缺點 1 實際的專案大部分情況難以按照該模型給出的順序進行,而且這...
軟體開發中常見的十大系統瓶頸
有一天,aurelien broszniowski給我發了乙份電子郵件,把這些瓶頸用列表的方式展示出來。在接下來的交談過程中,我又把該列表抄送給了russell,russell對此列表進行了整理。russell說 我真希望在年輕時看到這樣的乙份列表 伴隨著經驗的增長 專案的增多 解決各種不同型別的問...
軟體開發中常見的十大系統瓶頸
作者張紅月 架構軟體開發 摘要 在平時開發工作中,你可能在開發的各方面遭遇瓶頸,比如效能 系統等。你有對它們進行過歸納嗎?不妨來看看本文對這些系統瓶頸的歸類吧!sullivan提出了乙個非常有趣的總結 軟體開發常見的20個傳統的系統瓶頸,這聽起來像是說有20個故事情節,並且依賴於你如何策劃這些故事,...