天天看点

软件开发的小小心得(箴言、原则,etc)

  • 你说自己是码农,那你就是码农。任何一个职业,只要你用心去做,都能不断的提高水平,何况这个职业虽然比不了金融行业(华尔街大把的物理 数学博士,想想他们的智商)、猿类等,但只要你用心做,拿到工薪阶层中等偏上的收入还不算困难
  • 精通一个编辑器,练好指法,把你的编辑效率最大化(多用键盘少用鼠标),一边思考程序一边思考键位或者时不时的要去移动一下鼠标,对你的思路影响很大,对编辑器的精通程度可以反映一个人对效率的追求
  • 养成良好的配置管理习惯,不至于出现代码丢失的情况,相信我,把代码藏着掖着或是把它写的很难懂,并不能提升你的价值或是保住你的饭碗,开源基本已经到了communix的地步了
  • 不要使用临时HACK,任何一个更改方案都要经过认真思考,必要的时候要评审,临时HACK的时候很快很暴力,后面维护的时候就悲催了,不要跟自己说会回来重构,没有多少人会(有时间/有耐心)认真回顾自己写过的代码
  • 如果你觉得一个地方会出问题,那早晚有一天就会出问题,因此早点对这个点进行单元测试、功能测试、集成测试,审查代码,将问题消灭在萌芽中
  • 在讽刺谩骂他人代码之前,请认真阅读,并确保已经真正理解了其中的逻辑,如果急于动手,重新造轮子,下一次被讽刺谩骂和丢弃的,就是你的代码。真正理解之后,运用《重构》中的手法,改进代码和设计质量,当你能够改造一个轮子的时候才有可能造一个更好的
  • 不要试图区分开发工作和维护工作,一个不能认真维护自己/他人代码的人,不会有任何的经验积累,因为总是简单的重复而已。不要以为自己总结的问题,在下次设计的时候就能避免,没有维护过自己的代码,怎么能知道有多好/多烂?
  • 不要梦想需求不变,那是童话。无论是签字画押甚至严刑拷打,需求人员都会义无反顾的承诺这是最后一次,当然很快就会收到下一次的变更,与其反抗,不如享受(拥抱),要知道,正是不断变更的需求才提供了我们的就业机会。如果你装过房子,想想,最后结果和你最初的想法(如果有)已经变化了多少? 做出合理的计划变更,扩展设计,才是解决问题的王道
  • 不要弹性极强的设计,适应性最强的设计就是砖块和水泥,但是我们要造的是教堂,良好设计的标准应该是,能够满足现有的需求,能够满足原有需求变更同维度的变更,这才是OCP,而不是堆砌模式、极度抗拒耦合(很多基础库的作者会这样)、设计也是迭代的,不要指望项目之初就能做出一个完美的设计(已经有相近项目经验且丰富者例外)
  • 使用闭源的第三方库时,一定要慎重 慎重 再慎重,因为出问题的时候,所谓的支持会让你觉得很崩溃。有代码在手上,起码分析起来容易很多,甚至可以改(遵守协议的情况下)。这一点对核心模块尤为重要
  • 在项目需要发布的时候、需要展示的时候,BUG总是会变多,而且总会有很棘手的BUG出现。在deadline之前预留缓冲也没用,因为大家很快就能自己估算出缓冲是多少。团队里面有几个分析解决问题的高手才能应付自如
  • 代码审查是保证质量的重要手段,软件是思考的作品,单元测试只能解决接口的逻辑,集成后的核心业务逻辑,一定要审查 审查 再审查,审查也有助于知识共享
  •  不要过于依赖测试团队,测试是验证质量而不是保证质量的团队,我觉得他们应该改叫QQ(Quality Qualify),而不是QA,保证质量需要负责的开发工程师,良好的设计,以及必要的过程手段
  • 不要觉得deadline不合理,多给一倍的时间,质量未必能改善多少,而公司可能早已因为失去商机而倒闭

 当你坐在办公室里时

  • 不要过度度量,转做管理层的最开始,会非常不适应,因为你不再能对项目的细节了如指掌,这往往会引起恐慌,进而要求团队成员早请示晚汇报,度量可以告诉你离目标还有多远,却无法带你到终点,过度的度量只会引发团队成员的反感,降低效率
  • 陈述需求时,不要使用结论性的语言,而应该附上自己的思考,并与大家充分讨论,管理者的强大和受人尊重不是在于让自己的意见充分表达,而是充分尊重他人的意见,很多时候,管理者的随口一说,可能就是开发者的噩梦,更可怕的时候,噩梦成真的时候,你又要推翻噩梦,所以这里经常是噩梦^2
  • SOP可以学习,可以考虑如何改进开发过程,但是始终要记住,人是第一位的,不会因为有了流程,就能够降低对人的要求,只能通过好的设计(来自高手),更好的分层,剥离出对系统不那么重要的部分,来降低对人的要求
  • 关注新技术,结合负责业务进行规划,否则你很快就会跟大家失去话题,除非你的位置足够高。讨论技术的时候,一定树立人人平等的观念,否则这个团队会成为你个人的复制品,而且复制的还不那么好,技术的进步将会十分缓慢,而你的绩效基本都来自他们,so,当好教练吧
  • 规划好团队结构,把合适的人放在合适的位置上,多沟通交流,确认他也觉得是合适的,如果他觉得不合适,要提供机会给他尝试,并给予足够的辅导
  • 不要过分相信培养,干这一行的基本都经过了16年的教育,不大可能在1年之内产生质变。身为管理者,你要做的,是发掘潜力股并加以引导,将80%的时间用于20%的人,记得,你是在公司不是学校,你是一个leader而不是老师