第十六章 代码猴子——培养正确的编程态度和方法

  • 面对同一件事情,不同的程序员会以不同的方式工作,他们会各有各的解决方法,总是会有“不止一种方法来做这件事情”的想法,不同程序员的态度也会导致他们作出截然不同的决策。
  • 软件工厂中居住着许多奇怪的不能适应社会的人,我们把他们叫做代码猴子,任何重要软件系统都是由这些人来构建的,他们具有不同的技术水平和态度,并且都为同一个目标而努力。
  • 我们在一起工作的方式以及我们所编写的代码的类型,将不可避免的受到我们工作态度的影响,就像收我们的技术能力影响一样。

    我们可以将程序员分为以下种类:

  • 卖力工作的程序员。他会一边编码一边思考,常常会因为时髦而试着使用新的功能或语言习惯,这种尝试新技术的渴望,意味着他甚至在不恰当的情况下使用技术。这类程序员非常多产,喜欢学习新东西,而且对编程抱有特别的热情。这类程序员的缺点是比较急躁,在进行仔细思考之前就开始编码。
  • 代码猴子。编写的代码很可靠,但是没有创意。这类程序员性格恬静,他们把自己定位为维护程序员,在具有开拓精神的人去开发替代产品的时候,他们却在维护这旧代码库的运行。教代码猴子学习新东西是件很困难的事。
  • 权威。通常很安静和谦虚,他编写的代码很出色,但是却无法与凡人很好的沟通。他一般会独自做最基础的工作:框架、体系结构和内核等,他是万能的,无所不知无所不晓。但是能够良好的沟通的权威是很少的,某个权威的沟通能力越差,他就越有可能是个糟糕的导师,权威很难理解为什么其他人懂得不如他多,或者思考问题没有他们快。
  • 半权威。这类人可能是代码猴子中最危险的一种,他们自认为是天才,但是不是。他们通常比真正的权威更加张扬,并且非常自以为是,他委任自己做权威人士。
  • 傲慢的天才。这是各种权威中数量很少但是非常重要的一支,他们速度快,效率高,并且编写高质量的代码,虽然不完全算是权威,但是很受关注。他们非常爱与人争辩,因为他们通常是正确的,并且总是需要让自己正确的观点压倒其他人错误的意见。
  • 牛仔。这是一类糟糕的程序员,他们故意逃避艰苦的工作,一头扎到代码中,做最小量的工作来解决直接的问题,到处寻找捷径。他们急于完成每个任务,并转到下一个,如果他多少对过程有些了解,他就会把这叫做敏捷开发。
  • 规划者。他们会对要做的事情做太多的思考,以至于在他开始编写任何代码之前,项目早就过期了。这主要是“过度设计”的原因,他们的开发更集中于方法和建模,而不是原型设计和解决方案的创建。
  • 老前辈。这是老派的资深程序员,他们要么对从事最喜爱的工作而感到非常幸福,要么对错过了无数次升职机会而十分痛苦。他们一般不会乐于遭受愚弄。
  • 狂热者。他们盲目的认为所有大公司制作的东西都是最优秀的,他们追随大公司的产品,排斥任何其他的方法,并且很少知道其他的可选产品。他们既不实际,也不客观,这样会错过很多更好的非大公司的设计。
  • 单线条程序员。这类人以技术为生,呼吸的都是技术,这就是他的全部生命。他们具有明显的单向思维,专心致志,他将确保项目能够正常运行,否则他会拼命的努力。他的最大问题是会忽略一些事情,因为他总是和问题距离太近了。
  • 拖沓者。这是一种不愿意工作的懒散的人,这种人很难发现,因为他已经学会如何让自己看起来很忙碌。还有一种情况,他只会做自己想做的事,或者做一点他认为应该做的事,而不是他必须做的事情,所以虽然他总是在不停的工作,但是他从来也做不完。
  • 勉强的团队领导。这是很典型的情况:一位开发人员被提拔为团队领导,原因只是对他而言在技术上已经没有再升职的余地。这类人是程序员,他们愿意编程,不是团队的组织者和管理者,并且沟通能力很差。如果团队领导试图编写代码,事情就会变得很糟糕。我们要有同情心,尽一切可能去帮助团队领导。

    传说中理想的程序员应该具有以下品质:

  • 政治家。必须很老练,去应付那些怪异代码猴子的小过失,能够协调人员。
  • 亲切。可以愉快的和别人合作。
  • 艺术感。可以设计出优雅的解决方案。
  • 技术天才。编写的代码可靠耐用。
  • 我们要了解自己是哪种类型的程序员,确定如何利用你的有点,如何弥补你的缺点。

    作为一名优秀的程序员,你必须学会:

  • 团队精神。
  • 诚实和谦虚。
  • 不断的提高。
  • 体贴。
  • 热情。
  • 优秀的程序员:具备了优秀程序员的所有气质。
  • 糟糕的程序员:1. 对于编写优秀的代码不感兴趣;2. 在团队中与别人无法很好的合作;3. 总想让自己看起来比实际情况要好;4. 停滞不前——他们不努力提高自己。

《编程匠艺》读书笔记之十四相关推荐

  1. 《深入浅出DPDK》读书笔记(十四):DPDK应用篇(DPDK与网络功能虚拟化:NFV、VNF、IVSHMEM、Virtual BRAS“商业案例”)

    Table of Contents DPDK应用篇 DPDK与网络功能虚拟化 157.网络功能虚拟化 13.1.1起源 158.发展 159.OPNFV与DPDK NFV的部署 160.NFV的部署 ...

  2. 读书笔记(十四)-- 管理十诫

    读书笔记--第14篇--<管理十诫>   1. 对我而言,尽管一辈子都在商海沉浮,我还是没办法把成功的真谛用条条框框的几句话来说清楚,更何况我们所讨论的话题还是瞬息万变的商场.我所能做的, ...

  3. 《百面机器学习》读书笔记(十四)-人工智能的热门应用

    全部笔记的汇总贴:<百面机器学习>-读书笔记汇总 这一章较之前的十三章略微有些区别,这一章直接将知识点进行罗列出来,而不再是以问题的方式来导出,可能也是应为这一章的内容比较浅显易懂吧. 一 ...

  4. 《Linux内核设计与实现》读书笔记(十四)- 块I/O层

    最近太忙,居然过了2个月才更新第十四章.... 主要内容: 块设备简介 内核访问块设备的方法 内核I/O调度程序 1. 块设备简介 I/O设备主要有2类: 字符设备:只能顺序读写设备中的内容,比如 串 ...

  5. 《Android源码设计模式解析与实战》读书笔记(十四)

    第十四章.迭代器模式 迭代器模式,又叫做游标模式,是行为型设计模式之一.我们知道对容器对象的访问必然会涉及遍历算法,我们可以将遍历的方法封装在容器中,或者不提供遍历方法,让使用容器的人自己去实现去吧. ...

  6. 《Android源代码设计模式解析与实战》读书笔记(十四)

    第十四章.迭代器模式 迭代器模式,又叫做游标模式.是行为型设计模式之中的一个.我们知道对容器对象的訪问必定会涉及遍历算法.我们能够将遍历的方法封装在容器中,或者不提供遍历方法,让使用容器的人自己去实现 ...

  7. 《C#高级编程》读书笔记(十四):代码协定

    一,代码协定 代码协定通常称作契约式编程,包括如下三个部分: 前置条件(precondiction):为了调用函数,必须为真的条件,在其违反时,函数决不调用,传递好数据是调用者的责任. 后置条件(po ...

  8. 《Java编程思想》第四版读书笔记 第十四章 类型信息

    2019独角兽企业重金招聘Python工程师标准>>> 14.2 RTTI运行时类型识别. Class对象包含了与类有关的信息,Java使用Class对象来执行其RTTI.每个类都有 ...

  9. 《linux程序设计》--读书笔记--第十四章信号量、共享内存和消息队列

    信号量:用于管理对资源的访问: 共享内存:用于在程序之间高效的共享数据: 消息队列:在程序之间传递数据的一种简单方法: 一.信号量 临界代码:需要确保只有一个进程或者一个执行线程可以进入这个临界代码并 ...

最新文章

  1. 修改类的命名空间引发的发布问题
  2. 扩展SpringMVC WebMvcConfigurerAdapter ||全面接管SpringMVC @EnableWebMvc
  3. 春节档社交与音视频大战背后,底层技术近况如何?
  4. leetcode 141. 环形链表(快慢指针解法)
  5. sublime快捷操作emmet语法
  6. 百度贴吧10亿量级LAMP架构分享
  7. Html前端基础(select下拉选标签、table表格标签)
  8. 官宣!阿里进军 5G,成立 XG 实验室发力新基建
  9. 三分钟带你看懂prototype原型——ES6进阶
  10. 手机通达信正在连接服务器,通达信服务器全部连接超时
  11. 【apiPost】-工具
  12. win10edge启用html5,edge浏览器如何启用flash?win10 Edge浏览器禁用flash方法
  13. aload、aload_1、iload都是什么意思
  14. Hive面试题系列-连续登录问题1
  15. 前端监控:回放录制库 rrweb
  16. 撸完这篇线程池,我快咳血了!
  17. AWS免费账号取消步骤
  18. 蒙特卡罗树搜索法c语言,蒙特卡罗方法的计算方法
  19. Arduino+sim900发送短信例程代码
  20. 创业起步的十大准备步骤

热门文章

  1. PropertyGrid自定义控件
  2. HTML5 手机端动态适配
  3. TurboMail邮件服务器围绕用户需求 建自主创新型企业
  4. 经典语录【摘自网路】
  5. Windows Phone 7新开发工具发布
  6. ArcGIS API for JavaScript4.x 之加载2D、3D地图
  7. 【TP3.2】模板 select选项采坑
  8. Android开源项目发布jCenter
  9. Linux 性能监测工具总结
  10. 1.Spring Boot --hello world