金领航三版网站程序总是出问题,如何做个好的程序猿?

王明富是金领航网的CEO,他最近花费大量时间雇佣、评估很多不同的程序员,并和他们一起协作。在这个过程中他发现并总结了十种程序员无法意识到自己潜力的原因,意在让更多程序员发掘出自己的潜力,从而成为强大的程序员。 王明富提到,他的公司中所使用的技术非常复杂,某些大型企业都很难掌握,所以对于想要加入团队的程序员来说,入门门槛非常高。因此,尽管他们非常仔细地雇佣新人,但还是很难找到足够天才的程序员。于是,他总结出十种阻碍程序员职业生涯发展的行为,并据此来帮助想要提升自身的平凡的程序员们。
  1. 太害怕学不会新的工具、语言和框架 一般的程序员会墨守他们最喜欢的工具,而不希望学习新的,因为他们认为,离开了那些语言和工具,多年的经验就会付诸东流。而强大的程序员会拥抱那些挑战和机会,积极地学习新的工作方式。
  2. 直到特性“完成”的时候才会提交。(但永远都不会完成!) 他在MarkedUp公司中把这种行为叫做“囤积提交(commit hoarding)”。有些程序员没有足够的信心来承受团队中其他成员的批评和审查,因此会把自己的工作藏起来,直到“完成”状态才提交。这种开发者会损害团队中其他人员的生产力,因为团队看不到他每天的成果,而且他也不会在正常开发的过程中寻求帮助,这样就会造成很多“最后一分钟”的缺陷,从而让交付延迟。而强大的程序员会知道,代码并不是他们自己,因此会把代码经常自信地呈现在其他团队成员的眼前,获得批评和建议。 3. 只是“知其然”会很危险 在这里Aaron举了微软最近在C# 5.0中引入的async和await关键字为例,这两个关键字会让创建和管理异步调用变得很容易,但是也会造成上下文切换、对共享资源进行多线程访问的成本,仅仅对此有基本了解的程序员会盲目地使用这些特性,把所有I/O调用都封装成C#中的Task对象,这会创建出危险的、不可预测的而且非常难以测试的代码。好的开发者不仅“知其然”,而且会了解为什么这么做以及应该在什么样的条件下使用。
  4. 分析瘫痪(Analysis paralysis) 分析瘫痪是指在程序开发初期进行系统分析,常因为太过执着于控制所有可能的变化和意外,而造成大量时间的浪费,裹足不前。这是一种很经典的问题,会影响很多一般的程序员。它通常是由过度分析造成的,但是Aaron认为其根本原因在于不敢做出坏的决定。一般的程序员会担心犯错,只想一次成功。而强大的程序员不会害怕,他们会编写很烂的代码,对其进行单元测试,如果认为无法达到目的,就会在45分钟之内把它抛弃。强大的程序员会积极地限制用来研究的时间,因为他们知道那是个陷阱——看起来是有效的,但经常都无效。
  5. 没有对工具和开发过程投入 如果你想要成为天才程序员,那么就需要投入时间提升技能和知识,而将你和普通的代码工人区分开来的是快速编写出生产级别代码的能力。你可以同时拥有好的代码和速度,但是你需要先对你用于构建的过程投入。一般的程序员不会对工具、过程和环境投入,只会使用大量的时间学习新的语言特性和API如何工作,但那并不会改变什么。通常,你作为程序员所能够做出的最大改进并不是专注于你所编写的代码,而是优化你编写代码的过程。
  6. 羞于请求帮助 一般的程序员羞于或者不想让人知道自己不懂,所以他们装作什么都知道,但这样就有可能提交某种非常可怕的代码到库中。说“我不知道怎么做。”没什么错,强大的程序员知道这一点,所以当被问题难住的时候就会请求帮助。
  7. 不知道如何让其他程序员更容易使用你的代码 在所有技术团队中,工作很重要的一部分就是人员的并行(human parallelism),也就是多个人能够同时对同一代码库工作的能力。但是对于团队来说,能够异步工作也很重要,当你不在的时候我可以修改你的代码,反之亦然。一般的开发者并不这么认为,他们会开始对一项任务编写代码,认为他们会永远拥有这段代码。而强大的开发者会知道技术债务的说法,从而试图通过设计代码来对其限制,让它尽可能可维护和自解释。(推荐阅读:《用鸡讲解技术债务的形成过程》、《技术债务真正的代价》) 编写可读的代码需要程序员改变他们的看法——你的代码要比你在组织中存在的时间长。
  8. 不知道如何阅读其他人的代码(或者不想读) 当一位一般程序员看到用他所不熟悉的语言或框架编写的代码库时,就想立刻重写,而不考虑业务价值或者推向市场的时间。而强大的程序员会接受这样的观点,重写所导致的业务成本通常是不可接受的,所以应该避免这种行为。他们会试图坐在计算机前,理解、学习然后修改现有的代码。 阅读代码要比编写代码还难,但是强大的程序员会投入时间来学习如何超越。
  9. 不能从最终用户的角度编码(你考虑的范围太狭窄) 有句话说得好:作为程序员,你的工作不是解决技术问题,你之所以解决技术问题,是为了解决业务问题。一般的程序员只会陷在技术问题之中,而不知道最初是为什么要解决这个问题。更严重的是,一般程序员无法从头开始创建出具有业务价值的东西。当被要求基于简单的用户设计新特性的时候,他们会死板地、照着字面对故事或者说明书做出解释,这样交付的产品用户根本无法使用。因为他们不会考虑相关的用例;不会考虑最终用户的体验;并且在做面向用户的内容时,设计都会很笨重。这导致他们无法编写业务应用,只能做产品。好的程序员会从最终用户的角度来看他们的代码。我怎样才能让它更轻松地解决用户的问题呢?故事的文字内容之外有哪些方面会让这个特性给用户带来更多收益呢?
  10. 无法判断任何编程任务的业务价值 这个问题和上一个是相关的,很多技术上很强的程序员之所以无法意识到自己的潜力,是因为他们不会停下来,从业务或者组织本身的角度去看一下他们的工作。强大的程序员能够自我管理,对选择如何投入时间做出很好的业务决定,他们会问这样的问题:这是我现在应该做的最有价值的事情吗?我应该为之投入多少时间?离交付日期有两个星期,我现在能做什么,从而更容易满足那个日期呢?一般的程序员不会,他们只会拿着说明书,然后盲目地实现,直到结束,不关心他们的工作和公司的业务目标有什么关系,以及对其他团队和业务组会产生什么样的影响。这样,他们就会在业务价值很低的技术任务上浪费大量开发时间。 Aaron在最后做出总结:如果你想要成为更好的程序员,那么就要从改变你看待代码以及编码的方式开始。你需要理解所编写的每行代码背后的业务成本;你需要从客户或者最终用户的角度来看待工作;你需要接受代码会比你在组织中存在的时间更长,所以要以其他开发者能够继承的方式来设计;最重要的,永远都不要害怕新的挑战,也不要害怕请求帮助,你无法独居一隅来提升工作效果,软件开发也是社会化的工作。

金领航三版网站程序总是出问题,如何做个好的程序猿?相关推荐

  1. 构建之法 第三版 第3章 部分草稿 (剪牦牛毛、老程序员去金融公司的故事)...

    /* * 这是 <构建之法> 第三版的草稿 */ 3.2 软件工程中的几种思维误区 正如我们在第一章讲的那样,软件有很多特性,软件开发有它自己独特的规律,如果不了解这些特性,软件工程师就会 ...

  2. Java 技术篇-利用exe4j工具生成exe文件实例演示,IntelliJ IDEA将项目转化为jar包方法,运行生成后的程序弹出exe4j提示处理,生成的程序显示控制台设置方法

    Java 项目转化为 exe 可执行文件 第一章:IntelliJ IDEA 将项目转化为 jar 包 ① 设置 Artifacts ② 设置是否集成外部 jar 包 ③ 将 java 项目转化为 j ...

  3. 医院微信预约挂号小程序开发_分享医院做预约挂号小程序的可以实现什么功能

    小程序有 60+入口,在微信生态链中无处不在,只要客户是微信用户,他们可以根据搜索.二维码朋友圈找到你的小程序.哪怕是医药行业,也可以做个医院小程序来提高预约和经营运转的效率,解放人力. 1.医院微信 ...

  4. 小程序管理还能这样做,让小程序管理更高效

    说起小程序,作为开发者或者企业用户不得不面临一个问题就是,需要小程序承载的业务越来越多的时候,小程序的数量也呈现增长,随之而来的就是小程序开发.维护等一系列管理中会出现的问题. 包括到小程序的代码包管 ...

  5. 微信小程序弹出用户授权弹窗,微信小程序引导用户授权,获取位置经纬度

    我们在开发小程序时,有些操作必须让用户授权.比如我们获取用户位置,需要用户授权位置信息.授权操作我们需要给用户弹窗提示,在用户禁用某些权限时,又要引导用户去设置页开启相应权限.我们这里就以获取经纬度为 ...

  6. 微信小程序弹出框竖向滚动_微信小程序 解决自定义弹出层滑动时下层页面滚动问题...

    WXML 将整个底层页面使用 scroll-view 包裹起来,设置 scroll-y 当显示弹出层的时候为 true, 闭关弹出层的时候为 false WXSS Page 设置为绝对定位,宽高各百分 ...

  7. 保持初心,继续前行 -- 做一名程序员容易,但做一名好程序员难

    大纲 1.学习传统的算法与数据结构 2.为什么计算机基础如此重要? 3.作为一个后端工程师,如何规划自己? 4.在每天的工作之中保持一颗学习的心态 5.真正的热爱,才能保持初心 6.写给培训班出来的一 ...

  8. 笨办法学python pdf 第三版_笨办法学python第三版

    笨办法学python第三版pdf电子书是一本Python学习参考书,是美国程序员Zed A.Shaw编著,通过简单通俗的方法,结合内部的集体,让程序员学懂python,适用于初级学习python编程的 ...

  9. c语言程序设计罗朝盛第三版,c语言程序设计罗朝盛总复习.ppt

    c语言程序设计罗朝盛总复习 总复习 考试题型 一.选择题20分: 二.填空题20分: 三.判断题10分: 四.程序阅读题(读程序写出结果)20分: 五.程序填空题10分(告知程序的功能,完成填空): ...

最新文章

  1. 如何设计一个支撑数亿用户的系统
  2. 【Win32汇编】数组累加
  3. UVA 12108 Extraordinarily Tired Students
  4. 基于 Python 自建分布式高并发 RPC 服务
  5. 使用mysql索引的规则
  6. 利用jquery.validate异步验证用户名是否存在
  7. 数字转换成字母帮助类
  8. qt自定义控件_Qt编写自定义控件60-声音波形图
  9. 全国DEM下载教程 90米、30米、12.5米和5米等各种精度DEM数据
  10. 实现一个投票小程序全流程
  11. Xcode 8 size class
  12. Hadoop 3.1 2.x新特性之har归档
  13. 2019 ICPC 上海站网络赛 K.Peekaboo (圆上整点)
  14. gstreamer学习笔记:将音视频合成MPEG2-TS流并打包通过rtp传输
  15. 计算机阵列的定义,磁盘阵列是什么有什么好处?怎么组成磁盘阵列呢?
  16. jQuery制作手风琴
  17. 30天自制操作系统Day6
  18. 读《春秋》有感之十四:吴王寿梦
  19. SAP寄售业务会计凭证的分配码原理分析
  20. 牛客小白月赛8 vector的使用

热门文章

  1. 零基础HTML入门教程(17)——表单的单选框和复选框
  2. 单片机动态从00到99C语言,用51单片机控制 2位数码管动态显示 00 ~ 99
  3. matlab 学习记录
  4. 互联网+ 与智能xxx、智慧xxx
  5. 计算机组成原理_扩展操作码
  6. 消防应急疏散照明在体育馆的应用
  7. QT笔记--QT内类的层次关系,以及控件从属关系
  8. linux禁ping禁什么端口,linux系统禁ping及改ssh端口
  9. 全国省市县四级坐标地址库
  10. 日本公路管理的基本模式