程序员应该铭记的知识点

程序员应该时刻铭记的话

资料来源

开发层面上看

  1. 程序不仅仅是用来执行的,它还是一种向团队其他人描述解决问题的方法。可读性强的程序不是雪中送炭,而是一份完美的代码应该的表现。包括代码逻辑清晰,变量名规范以及必要的注释等。
  2. 不要过于关注你为你的晋升做了多大的贡献,更多的是要为你的团队和客户考虑,你这次为他们做了多少贡献。尽量避免过于显眼的表现。在你没有完全弄懂产品的目的之前不要开始写代码。
  3. 保持对代码简洁性的追求,让自己的代码保持简洁,易于旁人理解。
  4. 敢于说不,并不是所有的需求都需要上,每个需求都会超过第一次设计时的预算开支。维护代码的开支,文档和用户对新功能的熟悉,都是一笔不小的开支。所以,敢于说不,通常大部分情况下,这些需求都是不重要的。
  5. 对用户的请求,不要总是不计后果的接收。每个用户都有自己的爱好,程序只能满足大部分人的需求,而不是所有人。对于某些请求而言,加入后续的迭代,在开发过程中来全盘考虑是否合适更好。
  6. 对你的项目做好持续集成,并且保持完整的单元测试覆盖率。确保你在一个安全的环境中修改代码,如果你觉得这不是一个大问题,那么请把注意力放在搭建正确的开发环境中。
  7. 没有提前做好准备不是什么大问题,尝试开发过程中来看结果也是可以接受的,但尽早回到正确的道路上。确保你有一个和生产环境一模一样的测试环境。
  8. 好的程序都是减少繁琐的事情,问题看起来复杂,不代表解决问题就很困难。不要过于为你程序加上时髦(新颖)的技术,这样并不会带给你的程序多大的优势,解决问题的方法尽可能简单。
  9. 将重复的代码模块化,这样既能提高效率,团队中其他人也能有效利用这部份代码。尽量将重复的事情自动化。
  10. 在开始设计的时候,你就需要考虑到这个产品希望带给用户什么,能获得多少的利润,是否会有用户不希望的点,后续怎么在保持原有功能的基础上来修改这些。

接口设计方面

  1. 不管你是不是有经验的开发者,在设计你的接口的时候,都需要考虑到,这部份接口不仅仅你要知道使用,更需要让其他人能清晰明了的知道。
  2. 能自动化的尽量自动化,尽量减少面对用户的方法和给用户的选择。保持简单的设计,让人一看到就明白该怎么使用就行了。
  3. 简单的事情就简单化处理,不要给用户一种需要花大把时间来考虑你为什么这样设计。
  4. 如果你的代码足够简洁,那么别人甚至不需要阅读文档就能清楚的知道你这部份代码做了什么。
  5. 设计的接口能简单明了的让人知道这部份代码是干什么的。大部分阅读你的代码,都是通过看小一部分代码例子或者单元测试,来分析你这部份代码是怎么运行的。
  6. 接口的目的就是为了解决问题,而不是为了提现底层是怎么运行的。
  7. 一个好的接口设计应该是层次分明的,利于理解和富有效率。
  8. 接口实际上是你底层数据结构的一个封装,为了构造一个好的接口,你需要根据你手上具体的项目来设计你的数据结构。
  9. 设计接口最重要的原则在于,你设计的这个接口是为了切实满足解决一个具体的问题,呃不是一个有可能用户会使用的原因。
  10. 为你的接口做好抛出错误信息的准备,这样一旦出问题,你能很快的定位并修复
  11. 接口中命名规则要保持一直,不要在上一个接口的变量命名,到了另外一个方法中就是截然不同的意义,容易为别人理解代码造成误解(甚至包括你自己)
  12. 一个好的文档带给你的,远超过你设计更多接口的花销
  13. 接口文档是用来描述你这个接口应该如何调用,里面最核心的功能是什么,以及使用范例

职业规划方面

  1. 职业晋升在于,如果没有你,工作就不能继续进展(或者处于核心位置)。并不是你手下管理了多少人。
  2. 软件开发是一个集体活动,你需要在这个团队中时刻和周围其他人保持密切的关系,这和你技术能力一样重要
  3. 始终谨慎而明确地表达您希望您的选择支持的价值观,将您的价值观融入您的创作中,不要以为你的作品有问题在于使用的人,你构建它的方式决定了它的使用。
  4. 寻找拓宽你眼界的职业机会,这会让你更清楚的认知到当前社会更需要哪种人才
  5. 从周围人的经验中获取到有利于自己发展的因素。
  6. 不要贪图眼前的利益而忽略长期的发展。
  7. 找一家拥有共同价值观和理念的公司对自身而言会更好
  8. 高效率的生产力不仅仅代表了编码的速度,更在于质量。这一方面需要长期编码带来的经验,另一方面在于谨慎的态度。错误决策的成本往往比延迟编码的成本更高。
  9. 更快地做出决策意味着你可以在职业生涯中做出更多决策,这将使您对可用选项的正确性有更强的直觉。 经验是提高生产力的关键,更高的生产力将为您提供更多的经验
  10. 在缺乏第一手资料的时候,选择需要基于你的原则。(自身价值观等)