程序员的修炼之道:从小工到专家(一)

  阅读进度:

  第一章  注重实效的哲学(1~6)

  第二章  注重实效的途径(7~8)

 

  第一次阅读这本书,说句老实话,由于水平有限,编 0程的经验又不足,觉得读起来有点晦涩,不太习惯这种文章的描述风格,没有读多少,下面就把阅读之后有所感的的部分摘录下来...

  序:

  注重实效的程序员的特征

  <1>早期的采纳者/快速的改编者;

  <2>好奇;

  <3>批判的思考者;

  <4>有现实感;

  <5>多才多艺;

  <6>关心你的技艺;

  <7>思考你的工作;

  <8>跃出直接的问题去思考,总是设法把问题放在更大的语境中,总是设法注意更大的图景;

 

  第一章  注重实效的哲学

  (1)我的源码让猫给吃了

    <1.1>负责。提供各种选择,不要找蹩脚的借口;

  (2)软件的熵

    <2.1>不要容忍破玻璃。杜绝软件中的无序增长("软件腐烂");

  (3)石头汤与煮青蛙

     <3.1>做变化的催化剂;

        人们发现,参与正在发生的成功要更容易。让他们瞥见未来,你就能让他们聚集在你的周围

    <3.2>记住大图景;

        不要像青蛙一样,要留意大图景,要持续不断的观察周围发生的事情,而不只是你自己在做的事情

  (4)足够好的软件

    <4.1>欲求更好,常把好事变糟;

        现实世界不会让我们制作出十分完美的产品,特别是不会有无错的软件。时间、技术和急躁都在合谋反对我们

    <4.2>让你的用户参与权衡;

    <4.3>使质量成为需求问题;

          你所制作的系统的范围和质量应该作为系统需求的一部分规定下来

    <4.4>知道何时止步;

  (5)你的知识资产

    <5.1>知识上的投资总能得到最好的回报;

    <5.2>经营你的资产:

      <5.2.1>定期投资

           你必须定期为你的知识资产投资,即使投资量很小,习惯自身也和总量一样重要

      <5.2.2>多元化

          作为底线,你需要知道 你目前所用的特定技术的各种特性。你掌握的技术越多,你就越能更好的进行调整,赶上变化

      <5.2.3>管理风险

          高风险,可能高回报,低风险,低回报;不要把你所有的技术鸡蛋放在一个篮子里;

      <5.2.4>低买高卖

           在新兴技术流行之前学习它,可能就和找到被低估的股票一样困难,但所得到的就和那样的股票带来的受益一样

      <5.2.5>重新评估和平衡

           这是一个非常动荡的行业,你一个月之前所用的知识可能迅速过时,你好久之前研究过的东东,可能需要被重新启用,需要灵活学习与温故

    <5.3>定期为你的知识资产投资

        每年至少学习一门新语言、每季度阅读一本技术书籍、也要阅读非技术书籍、上课、参加本地用户组织、试验不同的环境、跟上潮流、上网

    <5.4>学习机会

        各种学习资源,包括请教大神

    <5.5>批判的思考

          批判地思考你读到的和听到的,你需要确保你的资产中的知识是准确的,并且没有受到供应商或媒体炒作的影响

  (6)交流

    <6.1>知道你要说什么

        规划你想要说的东西,写出大纲。然后问你自己:"这是否讲清了我要说的所有内容?",提炼它,直到确实如此为止

    <6.2>了解你的听众

         只有当你是在传达信息时,你才是在交流。为此,你需要了解你的听众的需要、兴趣、能力

    <6.3>选择时机

    <6.4>选择风格

           调整你的交流风格,让其适应你的听众

    <6.5>让文档美观

    <6.6>让听众参与

        如果可能,让你的读者参与文档的早期草稿制作,获取他们的反馈,并汲取他们的智慧,你将建立良好的工作关系,很可能制作出更好的文档

    <6.7>做倾听者

    <6.8>回复他人

        你说什么和你怎么说同样重要

 

  第二章  注重实效的途径     

  (7)重复的危害

    <7.1>DRY:Don't Repeat Youself!

       我们觉得,可靠地开发软件,并让我们的开发更易于理解和维护的唯一途径,是遵循我们称之为DRY的原则:

       系统中的每一项知识都必须具有单一、无歧义、权威的表示

    <7.2>重复是怎样发生的?

        强加的重复、无意的重复、无耐性的重复、开发者之间的重复

  (8)正交性

    <8.1>什么是正交性?

         在计算机技术中,该技术用于表示某种不依赖性或是解耦性。

    <8.2>正交的好处

        我们想要设计自足(self-contained)的组件:独立,具有单一、良好定义的目的(可称之为"内聚")。如果组件相互隔离,你就知道你能够改变其中之一,而不用担心其余组件。只要你不改变组件的外部接口,你就可以放心,你不会造成波及整个系统的问题。

       <8.2.1>提高生产率

          <8.2.1.1>改动得以局部化,较少开发和测试时间;

          <8.2.1.2>正交的途径还能够促进复用,如果组件具有明确而具体、良好定义的责任,就可以用其最初的实现者未曾想象过的方式,把它们与新组件组合在一起;

          <8.2.1.3>如果你对正交的组件进行组合,生产率会有微妙的提高,假定某组件做M件事情,而另一组件做N件事情,如果它们正交,把它们组合在一起,结果就能做M*N件事情;

       <8.2.2>降低风险

          <8.2.2.1>有问题的代码区域被隔离开来

          <8.2.2.2>所得系统更加健壮

          <8.2.2.3>可能得到更好的测试

          <8.2.2.4>不会与特定的供应商、产品或是平台紧绑在一起

    <8.3>从编码的角度看正交(书中还从其他的方面解读了"正交",目前本人只要求自己从编码角度去理解)

        <8.3.1>让你的代码保持解耦

        <8.3.2>避免使用全局数据

        <8.3.3>避免编写相似的函数

原文地址:https://www.cnblogs.com/BlueGeek/p/2879045.html