[ 收藏 ] [ 简体中文 ]  
臺灣貨到付款、ATM、超商、信用卡PAYPAL付款,4-7個工作日送達,999元臺幣免運費   在線留言 商品價格為新臺幣 
首頁 電影 連續劇 音樂 圖書 女裝 男裝 童裝 內衣 百貨家居 包包 女鞋 男鞋 童鞋 計算機周邊

商品搜索

 类 别:
 关键字:
    

商品分类

  •  管理

     一般管理学
     市场/营销
     会计
     金融/投资
     经管音像
     电子商务
     创业企业与企业家
     生产与运作管理
     商务沟通
     战略管理
     商业史传
     MBA
     管理信息系统
     工具书
     外文原版/影印版
     管理类职称考试
     WTO
     英文原版书-管理
  •  投资理财

     证券/股票
     投资指南
     理财技巧
     女性理财
     期货
     基金
     黄金投资
     外汇
     彩票
     保险
     购房置业
     纳税
     英文原版书-投资理财
  •  经济

     经济学理论
     经济通俗读物
     中国经济
     国际经济
     各部门经济
     经济史
     财政税收
     区域经济
     统计 审计
     贸易政策
     保险
     经济数学
     各流派经济学说
     经济法
     工具书
     通货膨胀
     财税外贸保险类考试
     英文原版书-经济
  •  社会科学

     语言文字
     社会学
     文化人类学/人口学
     新闻传播出版
     社会科学总论
     图书馆学/档案学
     经典名家作品集
     教育
     英文原版书-社会科学
  •  哲学

     哲学知识读物
     中国古代哲学
     世界哲学
     哲学与人生
     周易
     哲学理论
     伦理学
     哲学史
     美学
     中国近现代哲学
     逻辑学
     儒家
     道家
     思维科学
     马克思主义哲学
     经典作品及研究
     科学哲学
     教育哲学
     语言哲学
     比较哲学
  •  宗教

  •  心理学

  •  古籍

  •  文化

  •  历史

     历史普及读物
     中国史
     世界史
     文物考古
     史家名著
     历史地理
     史料典籍
     历史随笔
     逸闻野史
     地方史志
     史学理论
     民族史
     专业史
     英文原版书-历史
     口述史
  •  传记

  •  文学

  •  艺术

     摄影
     绘画
     小人书/连环画
     书法/篆刻
     艺术设计
     影视/媒体艺术
     音乐
     艺术理论
     收藏/鉴赏
     建筑艺术
     工艺美术
     世界各国艺术概况
     民间艺术
     雕塑
     戏剧艺术/舞台艺术
     艺术舞蹈
     艺术类考试
     人体艺术
     英文原版书-艺术
  •  青春文学

  •  文学

     中国现当代随笔
     文集
     中国古诗词
     外国随笔
     文学理论
     纪实文学
     文学评论与鉴赏
     中国现当代诗歌
     外国诗歌
     名家作品
     民间文学
     戏剧
     中国古代随笔
     文学类考试
     英文原版书-文学
  •  法律

     小说
     世界名著
     作品集
     中国古典小说
     四大名著
     中国当代小说
     外国小说
     科幻小说
     侦探/悬疑/推理
     情感
     魔幻小说
     社会
     武侠
     惊悚/恐怖
     历史
     影视小说
     官场小说
     职场小说
     中国近现代小说
     财经
     军事
  •  童书

  •  成功/励志

  •  政治

  •  军事

  •  科普读物

  •  计算机/网络

     程序设计
     移动开发
     人工智能
     办公软件
     数据库
     操作系统/系统开发
     网络与数据通信
     CAD CAM CAE
     计算机理论
     行业软件及应用
     项目管理 IT人文
     计算机考试认证
     图形处理 图形图像多媒体
     信息安全
     硬件
     项目管理IT人文
     网络与数据通信
     软件工程
     家庭与办公室用书
  •  建筑

  •  医学

     中医
     内科学
     其他临床医学
     外科学
     药学
     医技学
     妇产科学
     临床医学理论
     护理学
     基础医学
     预防医学/卫生学
     儿科学
     医学/药学考试
     医院管理
     其他医学读物
     医学工具书
  •  自然科学

     数学
     生物科学
     物理学
     天文学
     地球科学
     力学
     科技史
     化学
     总论
     自然科学类考试
     英文原版书-自然科学
  •  工业技术

     环境科学
     电子通信
     机械/仪表工业
     汽车与交通运输
     电工技术
     轻工业/手工业
     化学工业
     能源与动力工程
     航空/航天
     水利工程
     金属学与金属工艺
     一般工业技术
     原子能技术
     安全科学
     冶金工业
     矿业工程
     工具书/标准
     石油/天然气工业
     原版书
     武器工业
     英文原版书-工业技
  •  农业/林业

  •  外语

  •  考试

  •  教材

  •  工具书

  •  中小学用书

  •  中小学教科书

  •  动漫/幽默

  •  烹饪/美食

  •  时尚/美妆

  •  旅游/地图

  •  家庭/家居

  •  亲子/家教

  •  两性关系

  •  育儿/早教

     保健/养生
     体育/运动
     手工/DIY
     休闲/爱好
     英文原版书
     港台图书
     研究生
     工学
     公共课
     经济管理
     理学
     农学
     文法类
     医学
  • 代碼的藝術:用工程思維驅動軟件開發(經典簡裝本)
    該商品所屬分類:計算機/網絡 -> 軟件工程
    【市場價】
    838-1216
    【優惠價】
    524-760
    【作者】 章淼 
    【所屬類別】 圖書  計算機/網絡  軟件工程/開發項目管理 
    【出版社】電子工業出版社 
    【ISBN】9787121444852
    【折扣說明】一次購物滿999元台幣免運費+贈品
    一次購物滿2000元台幣95折+免運費+贈品
    一次購物滿3000元台幣92折+免運費+贈品
    一次購物滿4000元台幣88折+免運費+贈品
    【本期贈品】①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
    版本正版全新電子版PDF檔
    您已选择: 正版全新
    溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。
    *. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。
    *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。
    *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。
    內容介紹



    開本:32開
    紙張:膠版紙
    包裝:平裝-膠訂

    是否套裝:否
    國際標準書號ISBN:9787121444852
    作者:章淼

    出版社:電子工業出版社
    出版時間:2023年01月 

        
        
    "

    產品特色

    編輯推薦

    ●本版本為【簡裝便攜版】小冊,輕巧好帶!!地鐵、公交、圖書館、教室、辦公室,一本適合多場景閱讀。


    ●百度學院精品課“代碼的藝術”核心內容首次成書,百度技術培訓中心官方指定用書。


    ● 清華大學、IT名企開設“代碼的藝術”課程及講座,課程獲廣泛贊譽。


    ● 成為優秀軟件工程師三條路徑:(1)學習-思考-實踐;(2)知識-方法-精神;(3)基礎乃治學之根本。


    ● 具備正確的意識比掌握具體的知識更重要。


    ● 讀者對像:軟件工程師和管理者;計算機和軟件方向的在校學生。


    ● 隨書附贈配套視頻,作者在線一對一答疑等增值服務。

     
    內容簡介

    ● 本書是作者圍繞軟件工程能力所做的繫列培訓的內容彙編。這些內容來源於作者20 多年以來對軟件工程的學習體會和項目實踐,以及對中國工業界軟件工程師的觀察和教育實踐。


     


    ● 全書共8章,第1 章說明了什麼是軟件工程能力,闡述了軟件工程能力中的素質要求。第2~8章分別從代碼、文檔、項目管理這三個方面講解了提升軟件工程能力素質的實踐方法。 對於代碼,第2章"代碼的藝術”對其進行了總體說明,第3 章重點說明了代碼評審,第4章以Mini-spider 為例說明了方法如何運用。 對於文檔,第5章說明了如何寫好項目文檔,第6章說明了做研究的基本方法。對於項目管理,第7章簡要說明了如何做好項目管理,第8章重點說明了如何做好項目溝通。

    作者簡介

    章淼,博士,百度智能雲資深研發工程師,BFE開源項目發起人。


    1997年至2006年在清華大學從事互聯網協議和網絡體繫結構的研究。


    2012年加入百度,一直從事網絡基礎架構的研發工作。同時積極推動百度的代碼質量和工程能力的提升,百度技術培訓中心“金牌講師”,曾任百度代碼規範委員會主席。

    目錄
    第1 章
    軟件工程能力
    1.1 為什麼要重視工程能力 / 3
    1.2 什麼是工程能力 / 5
    1.2.1 工程能力的誤區 / 5
    1.2.2 工程能力的定義 / 6
    1.3 怎樣提升工程能力 / 11
    第2 章
    代碼的藝術
    2.1 背景和初衷 / 17
    2.2 代碼和藝術 / 18
    2.2.1 代碼也能成為藝術作品 / 18
    2.2.2 軟件工程師和“碼農” / 22
    2.2.3 來自藝術的啟發 / 24

    第1 章


    軟件工程能力


    1.1 為什麼要重視工程能力 / 3


    1.2 什麼是工程能力 / 5


    1.2.1 工程能力的誤區 / 5


    1.2.2 工程能力的定義 / 6


    1.3 怎樣提升工程能力 / 11


    第2 章


    代碼的藝術


    2.1 背景和初衷 / 17


    2.2 代碼和藝術 / 18


    2.2.1 代碼也能成為藝術作品 / 18


    2.2.2 軟件工程師和“碼農” / 22


    2.2.3 來自藝術的啟發 / 24


    2.2.4 寫代碼並非易事 / 26


    2.3 好代碼和壞代碼 / 28


    2.3.1 好代碼的特性 / 28


    2.3.2 壞代碼的例子 / 33


    2.4 好代碼從哪裡來 / 35


    2.4.1 好代碼不止於編碼 / 35


    2.4.2 需求分析和繫統設計 / 36


    2.5 如何做好需求分析 / 41


    2.5.1 如何描述需求 / 41


    2.5.2 對需求分析的誤解 / 43


    2.5.3 需求分析的重要性 / 47


    2.6 如何做好繫統設計 / 47


    2.6.1 什麼是繫統設計 / 48


    2.6.2 設計文檔的分類 / 49


    2.6.3 什麼是繫統架構 / 50


    2.6.4 繫統設計的原則和方法 / 52


    2.6.5 重視對外接口 / 56


    2.7 如何寫出好代碼 / 59


    2.7.1 代碼的溝通價值 / 59


    2.7.2 模塊的設計方法 / 64


    2.7.3 劃分模塊的方法 / 71


    2.7.4 函數的設計方法 / 75


    2.7.5 代碼塊的編寫注意事項 / 85


    2.7.6 軟件開發中的命名 / 89


    2.8 如何支持繫統運營 / 90


    2.8.1 可監測性的重要性 / 91


    2.8.2 以BFE 開源項目為例 / 92


    2.9 成為優秀軟件工程師的三條路徑 / 93


    2.9.1 路徑一:學習—思考—實踐 / 93


    2.9.2 路徑二:知識—方法—精神 / 96


    2.9.3 路徑三:基礎乃治學之根本 / 98


    第3 章


    代碼評審


    3.1 代碼評審的常見誤區 / 103


    3.2 為什麼要做好代碼評審 / 104


    3.2.1 代碼評審的重要意義 / 104


    3.2.2 沒有做好代碼評審的後果 / 106


    3.2.3 為什麼要提升代碼質量 / 106


    3.2.4 為什麼要提升編碼能力 / 108


    3.3 如何做好代碼評審 / 108


    3.3.1 代碼評審的常見問題 / 109


    3.3.2 代碼評審的正確態度 / 109


    3.3.3 代碼評審的推薦步驟 / 111


    3.3.4 對壞代碼的簡單判斷 / 112


    3.3.5 代碼評審的注意事項 / 113


    3.4 如何成為好的代碼評審人 / 116


    第4 章


    “代碼的藝術”應用


    4.1 需求的分析 / 121


    4.1.1 題目說明 / 121


    4.1.2 功能分析 / 122


    4.2 軟件的架構 / 123


    4.2.1 模塊切分 / 123


    4.2.2 繫統架構 / 128


    4.2.3 軟件組裝 / 130


    4.2.4 crawler 間的數據共用 / 132


    4.2.5 數據封裝 / 133


    4.2.6 crawler 的執行邏輯 / 134


    4.3 多線程機制 / 135


    4.3.1 數據互斥訪問 / 136


    4.3.2 臨界區注意事項 / 138


    4.3.3 任務的分發 / 141


    4.3.4 程序的優雅退出 / 143


    4.4 其他實現細節 / 146


    4.4.1 配置的讀取 / 146


    4.4.2 種子信息的讀取 / 147


    4.4.3 import 的使用 / 150


    4.4.4 異常處理 / 151


    4.4.5 構造函數的使用 / 153


    4.4.6 正則表達式的使用 / 154


    4.5 延伸思考 / 156


    4.5.1 實現對各網站的限速 / 156


    4.5.2 從單機擴展到分布式 / 157


    第5 章


    項目文檔


    5.1 正確認識項目文檔 / 161


    5.1.1 項目文檔的重要作用 / 161


    5.1.2 項目文檔的常見誤區 / 162


    5.1.3 項目文檔的常見問題 / 164


    5.1.4 什麼時候需要寫項目文檔 / 165


    5.1.5 項目文檔是寫給誰的 / 167


    5.1.6 項目文檔的基本規範 / 169


    5.2 項目文檔的編寫 / 170


    5.2.1 編寫順序 / 170


    5.2.2 文檔標題 / 171


    5.2.3 段落編寫 / 173


    5.2.4 問題劃分 / 176


    5.2.5 表述模式 / 177


    5.3 項目文檔中的圖片 / 179


    5.4 文檔的評審 / 185


    5.4.1 文檔評審常見問題 / 185


    5.4.2 文檔評審的方法 / 186


    5.5 文檔的存放 / 187


    5.5.1 文檔存放常見錯誤 / 187


    5.5.2 文檔存放的建議 / 188


    5.5.3 文檔索引的例子 / 189


    5.5.4 存放工具的選擇 / 192


    5.6 文檔編寫工具 / 194


    5.7 如何提高文檔編寫能力 / 195


    第6 章


    做研究


    6.1 什麼是研究 / 199


    6.2 如何做好研究 / 201


    6.2.1 發現問題 / 201


    6.2.2 分析問題 / 203


    6.2.3 解決問題 / 205


    6.3 做好研究的素質 / 206


    6.3.1 關於做人 / 206


    6.3.2 關於做事 / 208


    6.3.3 關於做學問 / 209


    第7 章


    項目管理


    7.1 重視項目管理 / 213


    7.2 相關基本概念 / 215


    7.3 項目管理的過程和步驟 / 218


    7.3.1 項目啟動和規劃 / 219


    7.3.2 項目執行和監控 / 224


    7.3.3 項目總結與回顧 / 227


    第8 章


    項目溝通


    8.1 項目溝通的重要性 / 233


    8.2 項目溝通方式及對比 / 235


    8.3 面對面溝通 / 238


    8.4 電話溝通 / 239


    8.5 會議溝通 / 240


    8.6 IM 工具溝通 / 245


    8.7 Email 溝通 / 247


    附錄A


    延伸閱讀圖書推薦


    軟件工程和編程思想類 / 251


    項目管理類 / 252


    項目文檔編寫和閱讀類 / 252


    產品設計類 / 253


     

    前言
    本書是筆者圍繞軟件工程能力所做的繫列培訓的內容彙編。這些內容來源於筆者20 多年以來對軟件工程的學習體會和項目實踐,以及對中國工業界軟件工程師的觀察和教育實踐。
    關於軟件開發的書已經有很多,軟件工程師閱讀多的書或許是對某種編程語言的深入解讀,或許是對某種架構方法的闡述。或許由於意識上的偏差,很多軟件從業者即使已工作多年,但由於對軟件工程理論相關圖書閱讀較少,因此對軟件研發的基本理念和原則還是了解得不多。
    編寫本書的目的是提升軟件工程師的基本意識。對於一名軟件工程師來說,具備正確的意識比掌握具體的知識更重要。如果具備正確的意識,即使在工作中不記得具體的知識點,也可以在需要的時候進行查閱,而反過來就不是這樣了。
    本書對一名軟件工程師應具備的基本意識和所需掌握的基本方法進行了全貌性介紹,同時內容又不會過於理論化和艱深。由於篇幅限制,本書對很多內容隻做了入門性介紹,並向希望繼續深入學習的讀者提供了相關圖書參考建議。
    真誠希望讀者能夠從本書開始,更多地去閱讀軟件工程方面的專業圖書,因為軟件工程師對軟件研發的學習和深入理解是永無止境的。

    本書是筆者圍繞軟件工程能力所做的繫列培訓的內容彙編。這些內容來源於筆者20 多年以來對軟件工程的學習體會和項目實踐,以及對中國工業界軟件工程師的觀察和教育實踐。


    關於軟件開發的書已經有很多,軟件工程師閱讀多的書或許是對某種編程語言的深入解讀,或許是對某種架構方法的闡述。或許由於意識上的偏差,很多軟件從業者即使已工作多年,但由於對軟件工程理論相關圖書閱讀較少,因此對軟件研發的基本理念和原則還是了解得不多。


    編寫本書的目的是提升軟件工程師的基本意識。對於一名軟件工程師來說,具備正確的意識比掌握具體的知識更重要。如果具備正確的意識,即使在工作中不記得具體的知識點,也可以在需要的時候進行查閱,而反過來就不是這樣了。


    本書對一名軟件工程師應具備的基本意識和所需掌握的基本方法進行了全貌性介紹,同時內容又不會過於理論化和艱深。由於篇幅限制,本書對很多內容隻做了入門性介紹,並向希望繼續深入學習的讀者提供了相關圖書參考建議。


    真誠希望讀者能夠從本書開始,更多地去閱讀軟件工程方面的專業圖書,因為軟件工程師對軟件研發的學習和深入理解是永無止境的。


    本書的目標讀者包括:


    (1)軟件工程師和管理者。本書中的多個章節已經是百度內部軟件工程師的必修課內容。筆者也曾多次以“代碼的藝術”為題在多家知名互聯網企業做過分享,不僅僅是剛參加工作的軟件工程師給出了較好的反饋,很多資深軟件工程師也反饋良好。


    (2)計算機和軟件方向的在校學生。本書介紹的很多方法是筆者在大學時就開始使用的。很多本科生和研究生其實在學校就已經開始參加較復雜的軟件研發項目了,他們可以將本書介紹的方法立刻應用在這些項目實踐中。更早地具備正確的軟件研發意識,將為一個人後續的職業發展打下良好的基礎。


    本書的內容來源於培訓課程材料或演講材料,在章節編排和內容組織上仍然保持了培訓課程和演講的原貌。每一章都有明確的主題,可以獨立閱讀,而全書的內容又形成了一個完整體繫。


    第1 章首先說明了什麼是軟件工程能力,闡述了軟件工程能力中的素質要求。


    第2~8 章分別從代碼、文檔和項目管理這三個方面講解了實踐方法。對於代碼,第2 章“代碼的藝術”對其進行了總體說明。


    第3 章重點說明了代碼評審,第4 章以Mini-spider 為例說明了方法如何運用。對於文檔,第5 章說明了如何寫好項目文檔,第6 章說明了做研究的基本方法。對於項目管理,第7 章簡要說明了如何做好項目管理,第8章重點說明了如何做好項目溝通。


     

    媒體評論
    作為一位在軟件工程領域工作多年的專業人士,我做過研發中心總經理,也一直擔任軟件企業技術培訓機構的負責人,還領導過工程效能部門,甚至組建並親自帶領過軟件技術文檔團隊。一直以來,我看到不少軟件工程師和軟件開發管理者,對軟件研發普遍存在一些錯誤的認識。
    他們認為,隻要掌握好編程技能就好,把常用的編程語言和軟件工具掌握得越熟練就越有競爭力,他們將大量的精力花在鑽研編程技能上,這也和很多用人單位的價值取向有密切關繫。在面試和考查軟件工程師時,很多用人單位多半考查的是和編程能力相關的內容,一般不考查工程素養。這強化了軟件工程師的錯誤認知,他們更加錯誤地認為隻要會編程就能找到工作。他們還認為,在工程意識或工程素養上的不足,是可以迅速補齊的短板,這些根本不是難事兒,隨時都可以改變和提升。
    業界還普遍存在一種錯誤認知,即對於開發某領域的軟件,領域知識和編程技能比軟件開發的工程意識更為重要,軟件如何構建、開發任務如何組織等涉及工程意識的因素,沒有得到足夠重視,很多人甚至認為這些降低了軟件開發的效率,或者干脆對此嗤之以鼻的也大有人在。
    我親身經歷了很多項目的失敗,究其原因就是軟件工程師的工程意識和相關能力偏弱,他們忽視了很多比編程能力更為重要的工程化思維和作為軟件工程師的行為約束。他們沒有意識到,能力、意識和素養是需要長時間養成的,就像一個人的氣質不能在幾天之內速成一樣。

    作為一位在軟件工程領域工作多年的專業人士,我做過研發中心總經理,也一直擔任軟件企業技術培訓機構的負責人,還領導過工程效能部門,甚至組建並親自帶領過軟件技術文檔團隊。一直以來,我看到不少軟件工程師和軟件開發管理者,對軟件研發普遍存在一些錯誤的認識。


    他們認為,隻要掌握好編程技能就好,把常用的編程語言和軟件工具掌握得越熟練就越有競爭力,他們將大量的精力花在鑽研編程技能上,這也和很多用人單位的價值取向有密切關繫。在面試和考查軟件工程師時,很多用人單位多半考查的是和編程能力相關的內容,一般不考查工程素養。這強化了軟件工程師的錯誤認知,他們更加錯誤地認為隻要會編程就能找到工作。他們還認為,在工程意識或工程素養上的不足,是可以迅速補齊的短板,這些根本不是難事兒,隨時都可以改變和提升。


    業界還普遍存在一種錯誤認知,即對於開發某領域的軟件,領域知識和編程技能比軟件開發的工程意識更為重要,軟件如何構建、開發任務如何組織等涉及工程意識的因素,沒有得到足夠重視,很多人甚至認為這些降低了軟件開發的效率,或者干脆對此嗤之以鼻的也大有人在。


    我親身經歷了很多項目的失敗,究其原因就是軟件工程師的工程意識和相關能力偏弱,他們忽視了很多比編程能力更為重要的工程化思維和作為軟件工程師的行為約束。他們沒有意識到,能力、意識和素養是需要長時間養成的,就像一個人的氣質不能在幾天之內速成一樣。


    互聯網企業的大多數工程師一畢業就進入公司工作,他們很聰明,技術功底很扎實,但缺乏對實際項目的工程化錘煉,就職公司更需要培養他們的工程意識和素養;也有很多工作多年的軟件工程師,因為常年趕任務,也常常忽視工程化能力的培養。


    章淼老師在研發一線工作,他在百度技術培訓中心開設的“代碼的藝術”課程,專門講授如何提升軟件工程師的工程思維、工程素養和工程意識。《代碼的藝術》這本書中的很多內容來自章老師的培訓課程和演講材料,也有部分內容來自他以“代碼的藝術”為題在多家大型互聯網企業分享的內容。在代碼、文檔和項目管理等多個方面,這本書既介紹了方法,又有他親身經歷的實際案例解剖。無論是剛參加工作的從業者,還是有多年經驗的軟件工程師,都反映良好,“代碼的藝術”課程也因此在百度大受工程師歡迎,他本人也連續多年被百度技術培訓中心評為“金牌講師”。


    本書通俗易懂,可以幫助讀者迅速掌握軟件研發中的關鍵要領,並將書中的方法運用到實際項目實踐中,能夠幫助讀者掌握正確的軟件研發意識,為未來的職業發展打下良好基礎。


    ——陳尚義 百度技術委員會理事長


     


     


    應章淼博士之邀為他的新書《代碼的藝術》寫推薦序,我感到不勝榮幸。


    這本書由章博士在百度內部為上萬名工程師進行代碼培訓的課件結集而成。章博士還基於該課件給等互聯網公司的工程師做過培訓,並得到了大家的廣泛贊譽。因此,這本書實用性極強。三年前,章博士帶著基於該課件總結和凝練出的部分內容,來到清華大學“軟件工程”課堂上,給計算機繫本科生做了《代碼的藝術》技術分享,非常受同學們的歡迎,由此看來這本書的內容也比較適合初學者。


    章博士既有高校任教經歷,又有多年在創業公司、互聯網大廠做軟件開發的豐富經驗,同時還擔任過百度代碼規範委員會主席。因此一方面,他深知軟件工程師面臨的挑戰和不足,另一方面又了解如何能夠讓工程師逐步提升軟件開發的能力,以及如何具備正確的軟件開發意識,並終形成代碼編寫的完整體繫。這本書就是章博士經千錘百煉總結出的關於代碼開發的精華。


    因此,我強烈向各位軟件工程師推薦這本書!


    ——裴丹 清華大學計算機繫長聘副教授,博士生導師;清華大學計算機繫本科生必修課“軟件工程”任課教師


     


    眾所周知,Knuth大師寫了《計算機程序設計藝術》一書,他認為編程是一種藝術活動,理由是我們還無法自動編程,同時編程本身蘊含了優雅、美麗、美學(Elegance、Beauty、Aesthetics)。福樓拜曾說過:“科學和藝術總在山頂重逢。”本書一以貫之,鼓勵軟件工程師培養代碼品位、追求“代碼藝術家”(Code Artist)的境界。以“碼農”自嘲的程序員,其實是這個時代很fashion的人。


    不要被“藝術”這個字眼嚇到,本書講的是實戰。作者基於多年在產品項目實踐和公司內外培訓中對各種誤區、問題的觀察,並在軟件工程師需具備的10點素質能力中抽出了其中3點形成本書。讀者若能對其中的建議踐行不輟,必可習慣成自然,在軟件開發的路上留下堅實的腳印。


    我的主要工作聚焦於測試和研發效能,書中關於代碼、文檔、項目管理三件事的思考和總結,我深以為然。代碼質量不是測出來的,而是內建的,從業者理應加大在缺陷預防方面的投入(包括但不限於代碼評測試等);文檔是產品長期可維護的關鍵,但現實情況是,它總跟不上代碼的步伐,有個段子說,程序員討厭的四件事是“寫注釋、寫文檔、別人不寫注釋、別人不寫文檔”;項目管理者們(包括RD)面對DDD(Deadline Driven Development,戲稱為“上弔繩驅動的開發”)疲於奔命。


    互聯網繫統越來越龐大,當快速迭代證明了業務可行性並實現了業務增長以後,巨大的代碼資產庫變得復雜,還有個段子說,“世界上遙遠的距離不是生與死,而是你親手制造的BUG就在你眼前,你卻怎麼都找不到它。”面對軟件開發的根本性困難(復雜性、非一致性、易變性和不可見性),我們需要Back to basics(回到根本),那些基本守則永遠不會過時。實際上,很多公司仍在為了落地這些簡單的規則而努力。


    《代碼的藝術》這本書風格樸實無華、內容深入淺出,書中有方法有案例,相信軟件工程領域不同背景的讀者都能從中受益。非常期待作者在工程能力方面的更多作品問世。


    ——李中傑 高德研發效能中心負責人


     


     


    Frederick P. Brooks教授在40年前提出一個論斷:復雜度和可變性是軟件研發中的根本困難,概念結構在說明、設計和測試上的復雜度,在短期內沒法通過更好的編程語言和更好的工具來消除。雖然軟件行業在這40年裡蓬勃發展,但從業者依然在消除復雜度上缺乏卓有成效的建樹,這也導致軟件行業在工業化的進程中依然極度依賴程序員的工程能力,然而優秀的程序員和平庸的程序員之間的效率差異巨大。


    《代碼的藝術》是一本關於如何提升工程能力的書,然而它又不同於《代碼整潔之道》《代碼大全》等偏重討論編程技能的書。本書在強調“更高效率為客戶持續交付價值”的前提下,討論如何通過提升工程能力來提升交付價值的能力,包括識別價值、質量、持續交付,以及持續提升研發效率等,這是一本值得每個有志於提升自身能力的程序員閱讀的書。在新技術層出不窮的當下,通過持續學習提升工程能力,對每個程序員都非常重要——通過提升工程能力來提高效率,並形成良性循環,從而避免陷入繁重混亂工程的“焦油坑”。


    ——何 波 中泰證券股份有限公司金融科技委員會主任


     


     


    首先非常榮幸可以在時間閱讀到本書的手稿,也更榮幸被章博士邀請為本書寫推薦序。


    其實在收到書稿時,多少還是被書名所驚訝到。把“擼碼”升華到藝術層面的思考,真是一個大膽且有想法的角度。當完整閱讀完書稿後,作為一個從業十多年的程序員,回首自己的經歷,真有一種“閱讀恨晚”的感覺。雖說自己也是科班出身,有過在外企和大廠工作的經歷,卻很少真正繫統化地思考和總結過自己的工作,所以真心希望此書能被更多對編碼工作有更高追求的讀者所閱讀,相信讀完此書,大家會對目前的工作產生非常大的認知蛻變。


    說起代碼,大家都知道它是承接人與計算機的溝通載體,所以應該具備兩面性:對人友好,並能讓計算機高效執行。但在很多場景下,我們往往容易忽略前者,特別是身處當前快節奏的IT時代,大家更多地把編碼當作一份工作工具,而非職業。這兩者的區別是,視為工具則是目標驅使,視為職業則是成長驅使。而隻有真正地把編碼視為職業,我們纔會在編碼前、中、後三個階段來體繫化地思考與探索如何把每一步做到好。


    回到本書的內容,讀者會現發作者花了很多心思,力求教會大家一些正確的意識,而非簡單“復制”一些技巧,所以全篇並沒有很多編碼技巧這一類的陳述,而是從軟件工程的意義、對代碼工作的認識、項目文檔的價值以及項目管理方法等多個方面整體性地講解各自的意義與價值,從根本上幫助大家正確了解當前的工作與目標,同時又結合一些實際案例,終能夠提升大家對編碼工作的認識。


    後由衷地預祝獲得本書的讀友,能夠開啟一段全新的旅程!


    ——謝馬林 百度架構師,JProtobuf github開源項目作者


     


     


    看到這本書的名字,可能很多讀者會聯想到這本書主要講解如何寫好代碼,幫助大家順利拿到offer。對於企業裡的軟件工程師來說,代碼研發不代表全部工作,事實上寫代碼可能僅僅占20%的時間。完整的軟件研發過程涉及需求分析、產品設計、技術預研、軟件開發、調試測試和運行維護等多個環節,同時需要多人緊密協作纔能完成。


    這讓我想到了大學時代那門枯燥的軟件工程課程。軟件工程一直以來都是本科計算機專業的必修課程之一,但是我相信大部分讀者可能和我一樣,在上學的時候對於這門課程的印像,可能僅僅是記住了一個所謂的基於“瀑布模型”的軟件開發流程的概念,至於其他內容我相信早已還給老師了。而且在學校大家也很少能得到專業的軟件工程訓練。大部分人在參加工作參與了生產級軟件的研發後,纔逐步體會到軟件工程的重要性。軟件研發是一個群體性活動,需要多工種、多團隊緊密協同,而軟件工程正是讓軟件研發得以順利協同而總結出來的科學的軟件研發方法論,是保證大型軟件保質保量、按期交付的基礎學科。


    軟件工程和其他計算機課程有著很大的不同,我認為軟件工程是介於工科和理科之間的綜合性學科,它沒有編程語言那樣非常具體的技術體繫,是基於長時間實踐總結出來的實踐,是技術和團隊組織能力的綜合體現。軟件工程作為一門源於實踐的學科,必須在實踐中不斷體會和鍛煉纔能逐步取得進步。


    和其他介紹軟件工程體繫的圖書不同,本書沒有一味地深入到偏學術性的講解過程中,而是完全源於作者日常工作的實踐積累。章淼老師近幾年來一直參與提升公司軟件工程能力的培訓工作,本書的很多內容都來自公司軟件工程的相關培訓素材,並且融合了數萬名工程師的培訓反饋和心得體會。很多來自一線工程師的反饋也深深地體現了廣大工程師對軟件工程知識的匱乏,以及對掌握軟件工程方法的渴望,我想這也正是促使章淼老師寫作本書的原動力之一。


    章淼老師具有20多年關於企業級大型軟件的研發經驗,在公司主導了大量的軟件工程課程的制作和講解,在軟件工程領域擁有扎實的理論體繫和實踐經驗。作為和章淼老師共同參與公司工程能力建設的同事,非常榮幸能為這樣一本源於實踐的書寫一點文字。希望本書能夠為廣大致力於軟件研發的工作者提供一點幫助,讓更多的軟件工程師能夠按照科學和高效的方法從事軟件研發工作,早日擺脫“996”的窘境,為中國的軟件行業正常化發展貢獻微薄的力量。


    ——鄭 然 百度基礎架構部,傑出研發架構師


     


     


    我和章老師相識已有二十多年,我們也早過了軟件行業“35歲危機”的年齡。人到中年,會不時聽到朋友們聊起“年齡危機”這個話題。然而,也有一些朋友不僅沒有“年齡危機”的感覺,反而路還越走越寬。為什麼他們沒有普遍存在的焦慮感呢?我嘗試從“技藝人”的角度來說說我的理解。


    漢娜阿倫特在《人的境況》中將人類的活動分為勞動(Labour)、工作(Work)和行動(Action)。姑且不論這種分類是否合理,單就軟件開發活動而言,勞動和工作的這種區別就很具有討論的意義。他認為,“勞動”的目的是維持生命,其成果是消耗品,因此“勞動”必須是周而復始的;而“工作”的目的是建立世界,其成果是可存續的,因此“工作”是一勞永逸的。從事“工作”的人,阿倫特稱之為“技藝人”。


    日復一日的編碼、改BUG、開會、反復修改方案……沒有明確的開端,也沒有明確的結束—這些畫面就像卓別林的電影《摩登時代》裡描繪的那樣,勞動被異化,勞動者成為了實施手段和生產工具。這種不可控的狀態,讓人失去了自由。這種活動,就是阿倫特所定義的“勞動”。


    “技藝人”做事則完全不同:“技藝人”的目標是做成一件完整的作品,他清楚地知道成果是什麼樣的,知道在使用正確方法的前提下,能在確定的時間得到確定的成果;“技藝人”在工作過程中有著清晰的階段性目標和明確的反饋,能感受到過程賦予的自信與快樂。換言之,“技藝人”的工作能獲得確定性的成功。經過數百萬年的進化,人類已經具備了將事情“做成”的本能,因此“技藝人”的工作能帶來成功的喜悅,獲得心靈的自由。


    能將軟件“做成”的工程師,就是軟件行業的“技藝人”。他們采用繫統化和科學化的方法,不斷提升研發效率,通過高效、持續的交付高質量軟件來向用戶提供價值。“技藝人”不存在軟件行業裡所謂的“35歲危機”。


    在本書中,章老師將軟件工程能力作為“技藝人”的核心能力,在代碼、文檔和項目管理三個方面進行了細致全面的闡述。本書書名中雖含有“藝術”兩個字,但章老師將“藝術”變成了可以習得的能力。軟件工程師的“意識”比“知識”更重要,但“意識”總有些說不清、道不明的感覺(這也是人們認為編程是一門藝術的原因之一)。我過去認為“意識”很難培養,“道可道,非常道”是理所當然。但當我讀完本書初稿,看到“藝術”竟然能被一步步習得,不禁對章老師在軟件工程和教學方面的功力心悅誠服。


    讀完本書,我作為從業“老手”,很是汗顏。按照本書描述的工程能力,對於我過去的工作,絕大多數都要算是“失敗”的項目或產品。像我這種喫過苦、踩過“坑”的人,很容易和章老師產生共鳴,看到本書會如獲至寶。對於技術團隊管理者來說,我認為本書可以用於團隊能力評估、培訓,也能用於總結SOP、實踐。對於“老手”“老團隊”而言,他們好將本書放在手邊,隨時翻閱,以做“吾日三省吾身”之用。


    對於踩“坑”不多的“新手”而言,在讀本書的過程中,他們也許很難有“老手”那種“悔不當初”的深刻感受,但恰恰由於“新手”還沒有養成壞習慣,或者壞習慣還不夠根深蒂固,所以用心理解、認真實踐,相信很快就能通過學習本書提升軟件工程能力。一般而言,我們是按照知、行、信的順序學習知識和技能的。但在閱讀本書時,我建議將順序稍作調整,先“信”,然後“知”和“行”。正如前面所說,從某種程度上說,開發軟件是一門“藝術”,以“意識”為先。當你還沒有足夠的歷練時,不妨敞開心扉,先“信”,之後就能夠更積極地去知、去行。


    讀完本書,我對章老師說:“我所在的這家公司團隊要是早十年看了這本書,並去實踐,至少能多掙一個億。”雖然像是一句玩笑話,但我認為本書確有這樣的價值。


    “種一棵樹好的時間是十年前,其次是現在。”閱讀本書,也是如此。


    ——戚文敏 北京海華鑫安生物技術有限責任公司產品總監


     


     


    在這個技術創新的時代,以物聯網、雲計算、大數據為代表素影響著我們的商業活動與生活,所有人開始關注技術力量,並希望通過技術驅動業務乃至改變世界,從國家政策的“互聯網 ”到各領域數字化轉型,這一切離不開技術賦能,開發者(工程師)迎來高光時刻!


    如何更好地承接和實現開發目標,這給開發者提出了更高要求。從代碼構建、軟件工程到項目管控和溝通等,提升開發者的綜合應戰能力成為組織的必修課,百度技術培訓中心金牌課程“代碼的藝術”正是這樣一門課程,章淼老師歷經十餘個班的授課,終歸納總結成《代碼的藝術》一書,期待給開發者們帶來良策、指引,並實現目標。


    —— 劉付強 msup創始人兼CEO


     


    中國整個社會以及互聯網行業都轉向高質量發展階段,原來靠各種紅利就能有不錯結果的日子已經一去不復返。無論對企業、團隊,還是個人而言,認真探索並遵循客觀規律,苦練基本功和專業所需核心能力(對程序員而言就是本書的主題——工程能力),已越來越重要。本書公開了國內一線大廠的實踐總結,是難能可貴的學習資料,出版恰逢其時。


    —— 劉 江 北京智源人工智能研究院副院長,前CSDN和《程序員》雜志總編


     


    多年前在百度和章博士一起共事,我們共同推動了百度代碼規範和Code Master體繫的建立。看到章博士持之以恆,致力於工程能力和意識的培訓與倡導,並將我們的工作發揚光大,由衷欽佩。參與創業多年,我愈發感到工程能力是zui容易被忽視但又是非常重要的成功因素。高質量的軟件,來自卓越的工程師和團隊,而不是靠“堆人頭”實現的。


    這本書名為《代碼的藝術》,但它並不僅僅講編碼,更像是一本軟件工程師的自我修煉手冊。章博士是知名開源軟件BFE的作者,又是工程能力的布道者,始終堅持在“學習—思考—實踐”中提升。這本書是集章博士多年經驗之大成,既有來自一線、非常落地的實踐,又有實踐背後的深入思考。相信對追求卓越的工程師和希望打造高效研發團隊的管理者都有非常好的指導和啟發意義,強烈推薦!


    —— 蔣錦鵬 醫渡雲首席架構師,百度代碼規範委員會首任主席


     


    0和1是軟件工程師的指尖藝術,每一位工程師都需要將專業方法和體繫化思考作為工作上的指導,以此全面提升軟件工程能力。《代碼的藝術》一書的作者基於大量實踐總結出實踐方法論,從意識形態層面傳遞多維度的軟件工程能力,讓讀者更體繫化、有針對性地建立自身的能力圖譜。


    —— 單致豪 騰訊開源聯盟主席


     


    在我們接觸的眾多軟件開發人員中,我們發現軟件工程能力是關乎一個人能走多遠、能發揮多大作用的重要的能力之一。而在高校軟件開發類人纔培養體繫中,關於軟件工程能力方面的培養是非常欠缺的。本書基於作者在大廠的長期從業經歷,以及在與公司技術開發人員的研討和培訓過程中積累的大量實踐,因此對於培養開發者的軟件工程意識具有極強的引導作用。本書語言平實,實用性強,是軟件工程方面非常好的參考書目。


    —— 王 浩 開課吧聯席總裁


     


    很榮幸聽過章淼老師的一次現場演講,當時就被他對軟件工程的深刻理解所震撼。當拿到《代碼的藝術》這本書並快速翻閱後,我就知道這本書已經脫離過往很多圖書專注於一招一式的層面上。和章淼老師一樣,我一直認為語言隻是工具,關於代碼的組織、審閱和文檔編寫,甚至當啟動一個新項目時的調研工作和項目進度管理,以及橫向溝通能力都是一個項目成功的關鍵。這方方面面,我們總結為工程的方法論,或者叫“代碼的藝術”。我之前看過《架構整潔之道》和《實現領域驅動設計》,相信這本書也可以給你帶來一樣的感受,再次強烈推薦!


    —— 毛 劍 bilibili基礎架構部負責人


     


    記得在一次 Gopher China 晚宴上,章博士給我們分享了軟件工程師能力知識圖譜。那一次讓我對軟件工程師有了全新認識,軟件工程師應該具備編碼、文檔和管理三種層次的能力,而現在大多數軟件工程師都將精力放在編碼上。章博士這本書全方位、深層次地給大家分享了軟件工程師應該具備的能力。強烈推薦有志於提升自我能力的工程師都深讀一下。


    —— 謝孟軍 Gopher China社區創始人,積夢智能CEO

    在線試讀
    1.1 為什麼要重視工程能力
    由於行業內競爭加劇、成本上漲和產業升級等形勢的變化,工程能力受到越來越高的重視。
    1. 形勢變化與挑戰
    近幾年,軟件研發企業尤其是互聯網企業正面臨以下形勢的變化和挑戰。
    (1)行業競爭的加劇。中國互聯網經過20多年的發展,早已不是荒蠻之地,競爭的需要逼迫各企業在軟件研發的質量和效率上不斷提高。
    (2)成本的上漲。中國在研發成本尤其是人力成本方面上漲非常快。中國軟件工程師的人力成本已超過歐洲,和美國的差距也沒有那麼大了。在這種情況下,業內對於人均產出提出了更高要求。
    (3)產業的升級。中國的互聯網企業普遍從toC轉向toB,而toB對軟件研發的質量提出了更高要求。
    2. 如何應對挑戰
    面對以上挑戰,一些企業的應對方法是延長工作時間、增加工作強度。部分公司出現了“996”(早9點上班,晚9點下班,每周工作6天)的工作制度。應該說,這些方法給從業者的身體健康和正常生活帶來了嚴重的負面影響,它們也隻能是短期行為,不可能被長期執行。
    從現實情況來看,其實國內很多軟件工程師的工作效率是比較低的,並有巨大的提升空間。根據筆者多年的訪談反饋,很多軟件工程師已經工作了8~10年,但他們的工作方法其實是錯誤的。在以前人工成本較低、管理方法比較粗放的情況下,這些問題並沒有得到足夠重視。現在中國很多傳統行業在進行轉型升級,因此中國的很多軟件工程師也需要升級了!
    提升工程能力,是應對以上變化和挑戰的重要解決之道。
    3. 工程能力是制勝之本
    在提升工程能力的路上,我們可能會聽到一些不同的聲音。有些人說,手頭的業務很忙,所以沒有時間提升工程能力;有些人說,現在的項目進度已經很緊湊了,按照正規的方法來工作會拖慢進度,所以不能對工程能力有嚴格要求。

    1.1 為什麼要重視工程能力


    由於行業內競爭加劇、成本上漲和產業升級等形勢的變化,工程能力受到越來越高的重視。


    1. 形勢變化與挑戰


    近幾年,軟件研發企業尤其是互聯網企業正面臨以下形勢的變化和挑戰。


    (1)行業競爭的加劇。中國互聯網經過20多年的發展,早已不是荒蠻之地,競爭的需要逼迫各企業在軟件研發的質量和效率上不斷提高。


    (2)成本的上漲。中國在研發成本尤其是人力成本方面上漲非常快。中國軟件工程師的人力成本已超過歐洲,和美國的差距也沒有那麼大了。在這種情況下,業內對於人均產出提出了更高要求。


    (3)產業的升級。中國的互聯網企業普遍從toC轉向toB,而toB對軟件研發的質量提出了更高要求。


    2. 如何應對挑戰


    面對以上挑戰,一些企業的應對方法是延長工作時間、增加工作強度。部分公司出現了“996”(早9點上班,晚9點下班,每周工作6天)的工作制度。應該說,這些方法給從業者的身體健康和正常生活帶來了嚴重的負面影響,它們也隻能是短期行為,不可能被長期執行。


    從現實情況來看,其實國內很多軟件工程師的工作效率是比較低的,並有巨大的提升空間。根據筆者多年的訪談反饋,很多軟件工程師已經工作了8~10年,但他們的工作方法其實是錯誤的。在以前人工成本較低、管理方法比較粗放的情況下,這些問題並沒有得到足夠重視。現在中國很多傳統行業在進行轉型升級,因此中國的很多軟件工程師也需要升級了!


    提升工程能力,是應對以上變化和挑戰的重要解決之道。


    3. 工程能力是制勝之本


    在提升工程能力的路上,我們可能會聽到一些不同的聲音。有些人說,手頭的業務很忙,所以沒有時間提升工程能力;有些人說,現在的項目進度已經很緊湊了,按照正規的方法來工作會拖慢進度,所以不能對工程能力有嚴格要求。


    從使用不正規的方法到使用正規的方法,一定會有一些學習上的成本投入。更重要的是,工程能力不是錦上添花、可有可無,而是一種生存能力。很多項目的失敗,其實是輸在從業者工程能力的不足上了!


    工程能力首先會影響“打的準不準”。如果從業者不能做好需求識別和分析,缺乏產品方面的意識,那麼研發出的軟件就沒有市場和用戶。


    工程能力還會影響“是否能打贏”。工程能力會影響軟件研發的效率、質量和成本,一個低效率、低質量和成本高的軟件項目是沒有市場競爭力的。


     


    1.2 什麼是工程能力


    在了解了工程能力的重要性後,本節說明什麼是工程能力。


     


    1.2.1 工程能力的誤區


    很多人可能會將“提升工程能力”等同於“寫好代碼”。


    代碼確實是軟件研發的重要產出,但是工程能力的涉及範圍絕不僅僅限於編寫代碼。


    軟件研發是一個需要多人共同參與完成的工作,提升工程能力也不限於“一個人”能力的提升。


    工程能力反映的是團隊的綜合素質。要提高工程能力,不僅要看單兵素質,也要看團隊能力;不僅要提升寫代碼的能力,也要提升其他方面的能力(見1.3節中的說明)。


    工程,不僅僅應用於自然科學,也應用於人文社會科學。隻用自然科學的思路和方法來做工程,一定做不好。


    在軟件研發過程中,很多從業者的大量時間其實並沒有用在琢磨技術上,而是用在了其他方面(比如溝通、項目協調、錯誤設計導致的返工),這些方面的時間消耗往往也沒有得到大家的關注。很多項目的失敗並不是因為技術,而是因為那些非技術的因素。


     


    1.2.2 工程能力的定義


    前面介紹了工程能力的重要性,但是我在這裡認真地問一句“工程能力到底是什麼?”恐怕沒有幾個人能回答出來,而如果不解答這個問題,我們是無法在實踐中真正提升工程能力的。


    在百度內部材料《百度軟件工程能力定義》中,將工程能力定義為:使用繫統化的方法,在保證質量的前提下,更高效率地為客戶/用戶持續交付有價值的軟件或服務的能力。


     



     
    網友評論  我們期待著您對此商品發表評論
     
    相關商品
    在線留言 商品價格為新臺幣
    關於我們 送貨時間 安全付款 會員登入 加入會員 我的帳戶 網站聯盟
    DVD 連續劇 Copyright © 2024, Digital 了得網 Co., Ltd.
    返回頂部