發表文章

目前顯示的是有「軟體工程」標籤的文章

軟體開發人天成本的計算方法

圖片
之前有幫人規畫過形象網站,他們的目的是要有一個屬於自己的網站來做產品行銷,因為官網代表著公司的形象,也是進行網路行銷的入門磚,但是當我告訴他一個有些許客製化的形象網站可能會落在三到五萬,對方的反應是,怎麼這麼高,我問他的預算在哪,他也講不出來,我猜他可能覺得一個網站大概只要三到五千吧,這篇文章主要是想讓大家知道軟體開發的人力成本是如何計算的,但這並不是唯一個算法,只是一種大家比較常用來計算的方法。 人天評估的問題另有專文說明,這邊想要解釋的是為什麼一個人天經常會被估成8,000台幣,這有兩個參考理論,第一個是以月薪為假設,我們假設一個還不錯的開發工程師一個月月薪是45,000,那一個月上班22天,他每一天的成本大約會是2,000,如果把公司的開銷都放進去的話,經常會乘以2,也就是4,000元的成本,假設公司獲利20%,大概就是5,000元左右,那3,000的差距為何會存在,因為他是用來配合幾個可能成本 被殺價 需求被一改再改 客戶不配合驗收 因此8,000是一個比較好的起點,但有很多地方已經把價格殺到5,000-6,000,其實根本沒空間了。 另外一個參考資料是採用比較有公信力的一些建立,尤其是資策會公布的『資訊委外服務人員計價參考要點』,可以到以下連結下載 http://admin.must.edu.tw/upfiles/ADUpload/c23_downmul1330722846.pdf 或者政府提供的『資訊服務委外經費估算原則』,連結如下 https://www.dgbas.gov.tw/public/Data/88712263090V1BWDI.pdf 這兩個規範都是將軟體系統分成第一類、第二類與第三類,他的區分主要是系統的規模以及需要的人月,而一般的系統會是第一類和第二類為主,所以他的建議是一個開發工程師的月成本大約是15萬台幣,除以22天,大約是7,000元,基於上面說到的殺價需求,一般大概也會加到8,000元整,因此,這是一個比較有理論基礎的算法。 如果你發現有人跟你說,我一天只要2,000,這時候你就要考慮一下是否要採用這個廠商,因為根據上面的算法,一個月薪45,000的工程師,一天的成本大概就要4,000,而且公司完全不賺錢,假設今天公司用22,000找了一個工程師來寫程式,公司都不賺錢也要2,00

建置形象網站考量因素與成本分析

圖片
常有人問我有沒有幫人製作網頁,其實這問題並不好回答,可以說有,也可以說沒有,而且要做的其實是網站,網頁只是網站的其中一頁,而且網站有太多要考慮的需求元素。 就我的經驗,很多人想要的都是個人部落格,但他會想要多一點功能,所以會往返於各種網站型態,但最後都是因為價格考量而回到個人部落格,而且是放在免費平台,那麼這篇文章就這麼結束了嗎? 當然不是,以下分析一下各種網站的考量元素,第一個元素是目的,目的大致有幾種 個人使用:我只是想要有個網站,甚麼網站不重要 個人行銷:我想行銷自己的一些產品或者一些理念,個人部落格或臉書粉絲頁都屬於這一種,部落格常看到的就是痞客幫或者我在用的Blogger(我使用Blogger是因為他是Google的產品線,跟Google整合是最方便的) 商業行銷:我要幫公司建置一個網站做行銷,這時候有多種選擇,部落格可能不適合,但臉書粉絲頁是很多人都會選擇的方式,不然就是找人幫忙建置一個形象網站,這邊的形象網站是指你可以自己定義幾個頁面,但沒辦法很方便地將你的相關文章或商品上下架 CMS:CMS=Content Management System,主流工具有Joomla、Wordpress以及Drupal,這三種CMS的差異有機會再專文說明,這類工具有很多免費外掛可以用,所以可以用來管理各種資訊的上下架,但缺點是,功能是由別人寫出來的,無法百分之百合用 客製化的CMS:另一種就是在幾個主流CMS框架上架構出一套客製化的平台,在這個框架上為客戶開發各種特殊功能,未來也可以找別人根據CMS的規範開發各種外掛 全客製化平台:最後一種就是上面的幾種我都不喜歡,我喜歡獨特而且完全為了我客製化的網站,這樣的平台應該最符你想要的,但費用也最高,幾乎都是百萬起跳,而且很難找別人接手 因此網頁的目的可能要考量的有 個人或商業目的 是否需要靈活上下架的功能 是否需要建構在通用平台 是否要完全個人客製化 第二個元素是功能,常見的幾個功能如下 我不要任何功能,你幫我做好一個網站,我也不用維護他了,這種價格比較便宜,但因為網頁沒有變化,所以應該很快就被淘汰了 我要有基本的文章上架架功能,一般的CMS和部落格都會有這功能 商品上下架:這方面筆文章複雜一點,可能需要有價格,單一產品多張圖片,各種解說與客製化欄

軟體工程與專案管理的不歸路

圖片
前一陣子有機會整理一下自己對於軟體工程的認知與了解,讓非程式設計師對於軟體工程有更多的了解,這邊將相關資訊更詳細地整理分享給更多的人了解,首先,何謂軟體工程? 軟體開發是運用既有的程式語言與相關技術基礎開發出想要的功能呈現,但他的結果不一定是好的,例如最終功能不符合最初期待、開發時程遠超過當初的預期、開發成本暴增造成團隊無法負荷、客戶提出的最原始需求並非客戶真正要的需求等等問題,因此軟體業界提出了各種理論來控制上述的問題,這就是軟體工程,大家可以Google軟體工程就可以找到很多軟體工程理論與方法,但這些方法不斷地被驗證與修改,至於哪一個方法是最好的方式可能跟你的團隊能力、成員多寡、團隊主要開發領域有關,沒有一個最好的方法,以下我提到的方法也不會是最好的方法,但可以給大家參考軟體工程師究竟在想甚麼。 首先,最標準的軟體工程定義了甚麼?他的內含主要是針對軟體專案管理需要做甚麼事情做出建議,例如ISO 9001與CMM-I等方法論,他們定義的內含很多,甚至不只是定義給軟體開發產業,ISO 9001是給所有產業的建議,這其中最重要的一環就是『專案管理』,沒有專案管理,團隊只是一盤散沙,但要當好一個專案經理可不是一朝一夕可及,他要懂得所有專案開發階段的相關細節,並且根據實際狀況調整這些流程的應對策略,那軟體開發階段包括哪些步驟,以下是我整理的簡易說明 上圖示一個軟體開發過程中主要會經歷到的階段,其中還有很多細節,例如CMM-I還定義到可行性評估以及風險管理等等(ISO 9001:2015也把風險管理納進流程),但主要還是以上幾個步驟,而軟體開發過程中,越前面的流程失控都會導致後續流程的更大失控,所以專案經理就要在這些流程中隨時反覆地將步調拉回主軸,而除了將一切拉回主軸外,專案經理也要意識到這整個專案的成敗是由專案經理一人所繫,沒有任何藉口。 專案管理的失控原因有哪些,下圖是我整理的大致原因 主要的問題就在於大家輕忽了軟體工程的複雜度,很多人會以以下的觀念 軟體開發不是很成熟的理論嗎?你的失敗一定是因為你沒有照著做 我都給你這麼多資源了,為何還無法如期如質如預算地完成 資訊相關科系畢業的人不是都應該懂這些嗎?為何我還要找你進到公司重新學習? 軟體開發不是軟體工程師的責任嗎?為何經常需要其他部門員工支援? ..... 上面提