程序猿怎樣才能修鍊到負責一個真正意義上的項目?

本人自學JavaWeb開發,也練習過一些小項目,問題是每當想自己設計一個網站時總是很茫然無從下手。比如,雖然會html,css,js卻不知道怎麼設計網頁;會用資料庫,但是要給新項目建立模型時不知如何設計。求大牛解答!


謝邀!

所謂程序猿負責一個真正意義上的項目,也就是擔任這個項目的架構師(Architect)。作為架構師,像一般的碼農那樣只掌握一些編程語言的語法、技巧,開發平台和框架的 API 如何使用等等顯然是不夠的,你還需要掌握從用戶需求分析到系統架構設計,再到代碼實現的一套比較完整、成熟的方法論。從業餘碼農、普通碼農到職業的軟體架構師,掌握開發方法論是必然要邁過去的一道坎。

1990 年代軟體工程界曾經出現過方法論之戰,湧現了許多相互競爭的流派,進入 21 世紀後這套方法論已經基本成熟了,其中一個重要的代表和集大成者是統一過程(Unified Process)。

問題是每當想自己設計一個網站時總是很茫然無從下手。比如,雖然會html,css,js卻不知道怎麼設計網頁

你缺少的是網站架構設計的方法論,包括設計流程和模式。一般是從 user goals(用戶目標)、use cases(用例)分析入手,然後進行架構設計,由外而內、由高到低、由大到小、由粗到細,採用 n-tier、MVC 等架構模式,然後才是單個網頁(view)的設計。。。

會用資料庫,但是要給新項目建立模型時不知如何設計

找一本資料庫設計的經典教材學習,這套方法論也很成熟了。過去通常是從畫 ER 圖開始,但現在更好的做法是基於 OOA(面向對象分析)的方法,先根據 use cases 或業務流程(business processes)找出問題域的概念類,畫出 UML 類圖,然後再轉成資料庫的表圖(table diagrams),最後利用 DDL 工具自動生成資料庫的定義。

UP 的內容非常多。初學者建議精讀 Craig Larman 的 Applying UML and Patterns,這本經典書基於 UP 和敏捷開發,對從用戶需求分析到軟體架構設計的基本流程和技術講解得非常清晰、透徹。下面鏈接有詳細介紹:

如何用面向對象設計一個程序? - 張恂老師的回答


所謂負責一個項目你需要的僅僅是被趕鴨子上架的機會而已。

就算是個什麼都不會的人,被逼著去負責一個真正意義上的項目,也是可以的。

沒見過豬跑,難道沒吃過豬肉嗎!抄別人的方案照葫蘆畫瓢就是了。


大家都說的這麼好,看來我只會說:題主加油~~~


問題和補充沒啥關係。這就是設計程序,不叫負責項目。

雖然會html,css,js卻不知道怎麼設計網頁;

多做,丑哭幾次慢慢就會好一點。當然要做好還是要多讀經典設計理論和分析案例。

會用資料庫,但是要給新項目建立模型時不知如何設計。

去讀資料庫設計和 OOAD 相關的書,然後反覆做找感覺。


初學者都是這樣。跟完一個完整的項目就好了。

初始自信的建立很重要。

建議你第一份工作找一家管理正規的公司,或跟一個靠譜的師傅,帶你走完一個項目完整的流程。


【創業】

【不一定會成功】

【但能體會到獨立負責項目的狀態】

【贏了,你就成功了】

【輸了,你也收穫的經歷和沒日沒夜激發出來的潛力】


都是被逼的,我實習時還讓我負責一個站點的重構呢,,,那段日子暗無天日


之前我也疑問過相同問題,後來有前輩說,設計多了,會設計的越來越好

萬事還是開頭難,另外還有做第二個項目的時候特別難,其他的輕車熟路了就


你這要的不是coding而是design,所以去學如何design吧


給自己一個不能後退的環境


去小公司,一個人負責幾個小項目。趕鴨子上架,不會也得會,學會與第三方溝通協調。


推薦閱讀:

學好編程可以幹什麼?
C 語言中 int main() 和 void main() 有何區別?
能否寫出一個程序,按照需求,自動生成實現的代碼?
Brian W. Kernighan和Dennis M. Ritchie當年用什麼軟體寫出了《The C Programming Language》?
任何遞歸程序都能轉換為一個等價的非遞歸程序嗎?

TAG:程序員 | 編程 | 軟體工程 | 軟體設計 | 軟體架構師 |