原文:21 ideas for Software Developer
作者:Tim Marinin
翻译:牟云飞
审校:苏宓,欢迎技术投稿、约稿、给文章纠错,请发送邮件至tumin@csdn.net。


本文笔者收集了 21 条有关软件开发的准则和技巧:这些观点可能互相矛盾,但仔细品味也会发现其不同点,可以对软件开发者有一定的启发。记住,它们并不是真理,只是观点而已。

  1. 软件开发者的工作不是“写代码”,而是解决业务问题,“采用的新框架”常常不能解决业务问题。

  2. 我们与人一起工作,只是有时候写代码而已,所以人际关系是这份工作的重要组成部分。

  3. 软件开发人员也是人,他们和所有人一样都会受到认知偏差的影响。可以读读关于认知偏差、FAE(fundamental attribution error,基本归因错误)、特别是Kahneman 的书。

  4. 每一个新框架的出现,是因为前端开发者面临的问题我们没有理想的解决方案。每一个成功的新框架都有其创新之处,所以得想想“这个框架/库如何改变我的工作”这个问题。

  5. 软件开发者不“只是写代码”,而是参与开发过程。所以如果公司在使用敏捷(Agile),你必须对其认真对待,最起码也要对其保有尊重。

  6. 代码评审(Code review)是软件开发过程的重要组成部分。对代码评审有所疏忽就不能成为优秀的软件开发人员。

  7. 作为软件开发者,我们对自己部署的代码要负责。我们也负有道德上的责任,不要做不道德的事。

  8. 用户也是人。我们的产品和我们的失败都可能直接影响他们的生活,对你行为的后果要三思。

  9. 人与人并不相同,人们的思维方式也不同:有时候我们认为困难的东西从商业人士角度看来可能很容易。这是我们必须解决而不是逃避的矛盾。

  10. 对截止时间(deadline)负责。如果在截止时间前完成不了,你必须重新沟通新的截止时间。

  11. 任务有两种复杂性:内部和外部复杂性。内部复杂性不可避免,因为这是任务本身;外部复杂性来自重新架构系统过程中异常决定的后果。要格外注意外部复杂性超过内部复杂性的情况。

  12. 如果开发者在写代码或架构系统时选择容易而不是好的解决办法,他欠下的技术债迟早有一天是要还的。

  13. “别人”写的代码几乎总是无法理解或着写得很差,但并不总是因为代码真的写得不好。有时候这些“别人”就是过去的我们。

  14. 有时候在不改变代码的情况下也能解决问题。

  15. 勇于改变需要改变的,接受那些无法改变的,用智慧来分辨其中差异。

  16. 有时候对开发人员来说不重要的事情却有极高的商业价值。商业是一个好的角度,不要逃避它。

  17. 很少有公司关心你的个人成长。如果公司对你目前的水平不满意,他们一开始就不会聘用你。

  18. 会议或者聚会的价值在于在场的人,其次是交谈内容。

  19. 面试都是双向的,不仅是公司在考察你,也是你考察公司。

  20. 我们选择这份职业是因为我们对其很感兴趣,但付我们薪水是因为我们创造了价值。了解一下公司的成本和利润,看看自己属于哪一个。

  21. 作为自由职业者,花钱请你是因为客户不具备这些技能:客户不会告诉你你代码哪里不好、也不会指出其中错误,客户用自己的方式提出这些意见。

想要成为软件开发中的王者,需要明白的 21 条准则相关推荐

  1. 软件开发中的王者荣耀理论

    最近在玩王者荣耀,而且再向荣耀王者的段位发起冲击,打完游戏,回顾的时候,发现万物都有其相关性,王者荣耀晋级理论,同样也适用于软件开发当中,所以写一篇博文来记录这些共同点. 一.每个位置都不能少 王者荣 ...

  2. 彼之蜜糖,吾之砒霜——聊聊软件开发中的最佳实践

    作者:sherrywasp https://www.cnblogs.com/sherrywasp/p/9436623.html "描述一个事物,唯有一个名词定义它的概念,唯有一个动词揭露它的 ...

  3. 统治软件开发中的著名定律

    文| https://www.timsommer.be/famous-laws-of-software-development/ 翻译| 码农翻身 和其他领域一样,在软件开发的世界中也有一些有趣而著名 ...

  4. 阿里研究员:缩短软件开发中的反馈弧

    简介:开发者写好了某个功能的代码,想知道这个功能是不是实现了,代码还需不需要再改,这就是一种反馈.在软件开发中,尤其是联调时,缩短反馈弧有助于及时发现问题.采取对策,提高开发效率.那么什么样的反馈弧才 ...

  5. 测试自动化金字塔在软件开发中是如何使用的?

    测试自动化金字塔,是一个指南,指导您进行什么类型的测试以及每种测试的数量.测试自动化金字塔有助于创建更高效的测试,并导致向客户发布更可靠的软件. 测试自动化金字塔的好处 测试自动化的大部分好处显而易见 ...

  6. 想做C++软件开发工程师,我该如何去学习?

    想做C++软件开发工程师,我该如何去学习? 因为C++是一个兼具性能和抽象模型结合体,除了能够保证性能之外,还能用当今最流行的面向对象编程模型,而且生态系统由于这些年的积累,建设的也非常完善,所以在高 ...

  7. 大型软件开发中的流程与规范

    对于长生命周期的大型软件,流程和规范十分必要.IT行业作为一个快节奏的行业,不光技术革新快,人员的更替也是很快的,没有严格的规范和流程,几个大版本迭代下来,可能产品的代码就维护不下去了. 估计很多大厂 ...

  8. No Silver Bullet: Essence and Accidents of Software | 没有银弹:软件开发中的主要问题和次要问题

    本文系软件工程中著名的一篇论文:No Silver Bullet: Essence and Accidents of Software 1 @Author:Frederick P. Brooks, J ...

  9. 【软件测试】稳定性和可靠性测试在软件开发中的重要性

    软件测试的某些方面经常会在那些刚接触流程的人中造成混淆--例如在稳定性和可靠性测试之间划清界限.两者通常可以互换使用,并且有一个共同的目标,即确保系统可以在选定的时间范围内稳定运行. 在这篇文章中,我 ...

最新文章

  1. 怎么通过打工,在一线城市购买10套房?Snapchat程序员亲身分享经历!
  2. 2020届 AAAI Fellow名单新鲜出炉!!!深度学习三巨头终于齐聚
  3. 硬盘发生不同的故障要采用不同的方案恢复数据
  4. 我的Thinkpad T410最近老是出Fan error
  5. 如何关闭eslint检测代码格式报错
  6. C#编程中的66个好习惯,你有多少个?(转)
  7. linux进程socket通信,linux进程间通信--socket套接字 实例代码
  8. css 涟漪,CSS3水波涟漪动画定位样式如何制作
  9. win固定ip无效,自动配成169.254.xx.xx
  10. efi 炫龙dd3plus_散热真的“秀”,炫龙DD3 Plus细节感受魅力
  11. 为什么Python中万物皆对象
  12. Java 实现图片上面添加文字
  13. GitHub——修改DNS提高git clone速度
  14. percona xtrabackup 之一 setup
  15. 饭后七个好习惯吃饱吃好不发胖
  16. 在线工具:电脑怎么提取图片中的文字?图片如何转化为文字?
  17. 牛顿法和高斯牛顿法对比
  18. python 如何使用正则表达式
  19. 51信用卡2018校园招聘编程题学习
  20. ChatGPT版必应被华人小哥攻破,一句话「催眠」问出所有Prompt

热门文章

  1. 获取串口设备名称 获取设备管理器里的硬件名称 转
  2. hdu 4602 Partition
  3. Laravel 错误处理
  4. Android 高效的`InjectView – ButterKnife`
  5. HDU-5900 QSC and Master
  6. php设置错误,错误记录
  7. Struts的MVC和Spring的MVC的区别
  8. iOS音频的后台播放 锁屏
  9. 考试系统(未完成的小程序)
  10. 高效地加载图片(一) 高效地加载大图