<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                商用工程的程序員,在接到用戶需求的時候,最忌諱的就是馬上從編程的角度 開始思考,這個功能如何實現,那個模塊如何編寫。那只會把事情越弄越糟,最后導致不 可收拾。筆者一般秉持的習慣是,系統分析期間不涉及細節,先相信所有的細節都是可以實現的!(如果程序員問:那成本呢?成本是你預期的投入乘以10到100倍,先讓大家都開心一下,程序員安心一下……這是我的“宇宙流”風格咯,當然不是誰都學的來……!)以后再考慮風險點細節。 提示:軟件工程界、程序員+和“軟件哲學大師們”(這里真、偽大師先不定義)很多年以前就在爭論,一個程序,自上而下編寫(即先搭框架,逐步細 化),和自下而上(先解決所有技術難點,做出底層模塊,再來拼接),哪個好的問題。 在商用工程中,筆者的經驗 是: 程序員們的“自底向上”就是一個笑話…… 一定是自上而下,試想,連用什么平臺和語言開發都沒有確定 ,如何自下而上? 接到需求,程序員做到的第一件事情,應該是理解需求。大家不要以為筆者在說笑話 ,在實際工作中,筆者就遇到程序員把需求完全理解反了的例子,還有的程序員干脆挑著看 ,對于自己熟悉的需求實現得很好,但不熟悉的干脆啥也沒做。 因此,那么自己接到的是一個小小的模塊,也要認真對待,在理解需求的時候,建議首先仔細看產品相關文檔,如需求分析報告,系統設計書之類的文檔,然后和自己的上級 ,可能是組長,可能是部門經理,也可能是項目經理,也可能是產品經理?還有可能是甲方的產品經理或者項目經理,做一次面對面的直接溝通,討論一下自己的模塊,在未來產品中,究竟處于什么地位,它的優化方向,是空間優先,還是時間優先,有沒有特定的算法需求。 這時:甲方可能會有意見! 你們隨便一個小程序員,就來了解我們公司的業務?我們公司的(軟件)需求……是不是成本太高了?太耽誤我的時間和經驗了?! 這時的軟件就像甲方媳婦(乙方)懷胎的胚胎……你總不希望將來出生的嬰兒有畸形不是? 所以,該做的需求交流還得做……!尤其是雙方合作的“第一胎”……真生個畸形兒,雙方再(互相)推卸責任……還有什么意思? 提示:現在企業都是團隊合作,溝通必不可少,程序員有時候缺乏這方面的主動性,這需要調整。溝通的技巧,要主動陳述自己對模塊的理解,言之有物,如“這個模塊我的理解是… …”,請求上級予以點評,最終確保自己能完全理解,不至于做錯事。 另外,溝通時要謙虛,筆者工作十幾年,但在上級溝通時,沒有聽懂,就老老實實說“沒聽懂”,因為不懂裝懂,最后吃虧的是自己。上級一般也不會因此而生氣,往往是重復再說一遍,確保溝通成功。 “上家”控制“下家”的游戲: 理解需求,還特別需要理解,自己的上家是誰,下家是誰,即自己的模塊從誰手里獲 得數據,自己產生的數據,下一步遞交給誰。 商用程序模塊,原則上“寬進嚴出”,實現過濾器的效果,即不對上家提出要求,上家 給出任何數據,都統統吃下,內部對于自己能處理的數據做嚴格的校驗,不符合的,做出 一定的 log 日志之后,予以拋棄,避免錯誤數據被逐次傳遞放大,最終形成大問題。 反過來,商用程序模塊,在傳遞給下家數據時,卻十分小心,任何一點不對,都可能 導致該筆數據被拋棄,道理也是同上。根據經驗,秉承這種原則設計的模塊,一般都沒有 較大問題。 在很多時候,我們在項目設計的最后,即將開始 coding 的時候,還玩過“角色扮演” 的游戲。即大家一起開會,每個程序員都站到前面來扮演自己所負責的模塊,按照每筆業 務流程,大家依次口述模塊的功能和作用。 比如:從用戶輸入開始,UI 的程序員說明,我收到用戶某筆輸入,這代表什么意思, 我將其打成什么樣的數據結構,并通過什么借口,傳遞給下面哪個模塊處理。對應模塊的 程序員,立即接上,我收到什么數據,我需要做哪些處理,用途是什么,最終構建什么樣 的報文,交給哪個模塊… … 項目經理和系統分析師(連帶架構師傅們)都請記住了: “程序是(用來)給人類閱讀和執行的(東東),只是剛巧計算機也能跑起來而已“ 換句話說:你的程序在電腦上能不能運行可以當作“錦上添花”……可是,人類--包括其他系統分析師、架構師、高級程序員甚至普通程序員、(還有三年以后的你自己)能不能理解,卻是關系到整個(軟件)項目的生死存亡的大事! 這就是 軟件 工程的 第二個手筋: 先顧“生死攸關”(架構健壯、清晰、輕量、容易理解),別忙“錦上添花”! 如果,你只是個軟件工程師; 你并不是個船舶設計師,于是我讓你去學習泰坦尼克號輪船的設計架構致命缺陷,當然是強你所難…… 但是,你至少玩一玩“紙船過江”的游戲…… 試著用報紙、紙箱等造一艘小船……。 如果,不能保證它的架構穩定,你敢帶著你的家人(比如你的孩子)駕著這艘小船去過江嗎? “在攻擊為筋,在防守為形。現在我們一般把他們通稱為手筋。 手筋往往僅表現在某一局部的最有效著手,常表現為能夠取得局部最佳結果的行棋方式。 之所以說刻意追求手筋不好,是因為他的出現是在特定情形下出現的,而不是說手筋多了不好。行棋的時候,正著和本手,其實也是形的一種,也就是基本手筋的一種。再一個原因是,圍棋更加注重全局的配合,局部的利益要服從全局。實戰中不乏局部獲利卻失掉全局的例子。”
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看