2015第18周三程序员能力

首先要记住两句话:

工资不是老板对你过去贡献的回报而是对你未来贡献的预期。
现任老板不可能给出让你满意的工资,下一任老板才会。既然如此,我们要注意培养自己的能力:

什么是能力? 对待问题的态度,以及处理问题的思路和方法。

先说态度

你服务器偶尔出501错误,也许比例不高(知乎也出现过很多次),很多程序员,没错,是很多,假装看不见,不在乎,或者归咎于人品问题。 这就是态度问题。
再往后,负载高了或者其他什么原因,突然频繁出现501错误,不去追寻深入的原因,而是找各种借口, 什么IDC服务商不好,服务器品牌不好,操作系统不好,数据库不好,CDN不好,网络状况不好,web server不好,甚至,直接对Boss说我们被DDOS啦!(遇到过,帮他Boss找过多个安全专家会诊,最后发现根本不是DDOS,是程序员太烂。)

这就是态度,触目惊心,如果能对问题有敏感性,能知道对任何小的,轻微的问题有足够的敏锐度,你就有了一个快速成长的基础。对问题的敏锐度是非常重要的。很多性能或程序逻辑上非致命的bug,在不够敏锐的时候是发现不了的,但是一旦进入特殊场景就会骤然爆发,你多一点敏锐度,就会减少这种危机的风险。

第二个态度是解决问题的态度,有人对自己的解决方案信心满满,认为万无一失,但有的人就会多留一条后路;就好比你说我服务器要不要做安全加固,肯定要做对不对,要做到尽可能严谨和周全,但是你数据库保存密码的时候是不是还要加密?而且要随机salt,不就是防止万一依然有漏洞被人拿库怎么办么。程序也一样,以前写的一些服务端守护进程,有bug,会莫名其妙的终止,这个bug当然要定位,要修复,但是同时,写一个cron检查这个守护进程状态,一旦遇到终止给予自动恢复,这就是第二手准备,即便你多么不希望他执行,这个准备还是要做的。对问题 做两手甚至三手准备,也是优秀程序员,架构师的关键素质。

第三个态度是基于沟通与理解的态度,产品或运营提了一个不靠谱需求,一句话打回去当然很爽很威风,但是有没有仔细沟通分析过,这个需求基于怎样的实际诉求,这个实际诉求有没有更合理的实现途径,一句话“这个没法做,这个实现成本太高”,不是正确的沟通态度,而且,最优秀的产品,往往是实现了那些原本人们认为无法实现的诉求。

这样的态度,才有了一个持续进步的基础,下面说思路和方法。

优秀 的程序员和平庸的程序员,如果只看敲打代码的速度,我觉得是分不出来的,也许每人都可以一天写很多行代码,但是遇到问题后,平庸的程序员的解决效率,和优秀程序员相比就会有天壤之别。 所谓解决效率,不外乎对bug的分析、定位,以及 思考。

最基本的一条,看执行日志,看各种日志,web server的日志,数据库 的日志,慢查询日志,binlog日志,php的错误日志,等等等等,线上出问题瞎猜连日志都不看的大有人在。看日志不仔细不完整的也大有人在,你能去认真研究日志已经超越很多人了。

第二条,模块测试和断点分析,程序员一个坏习惯就是上来就写很大一坨代码然后再执行,不知道一个模块一个模块来写来测试,执行出了问题不知道设置断点,缩小范围逐步分析。断点分析非常简单,将整个代码中插几个中间输出,观察哪个环节出了问题,或者观察每个环节的系统开销,对调错和性能优化都非常重要,高手们大概认为这是ABC的东西,但是就这玩意我看到的大部分程序员都没有这个习惯。

第三条,错误信息 的理解和搜索,搜索引擎上有各种丰富的技术资料和技术问答,你所遇到的错误信息和错误提示,通常都能在网上搜索到,当然,搜索到后要结合你的场景认真思考,并理解透彻,而不是照猫画虎的去处理,否则可能这次运气好就蒙对了,下次运气不好又不知道怎么回事了。

第四条,不断总结归纳,对一个问题,一类问题,以及不同类型的问题,善于归纳整理,不断反思自己的问题,即便是不出bug的代码,你经过一段时间去回头看,也有很多思考不正确不合理的地方,有很多优化点,如果你觉得自己的代码一向牛逼,毫无破绽,那你一定是原地踏步,毫无进展。

时间: 2024-10-15 10:22:58

2015第18周三程序员能力的相关文章

程序员能力矩阵Programmer Competency Matrix

注意:每个层次的知识都是渐增的,位于层次n,也蕴涵了你需了解所有低于层次n的知识. 计算机科学 Computer Science 软件工程 Software Engineering     程序设计 Programming         经验 Experience 学识 Knowledge 软件界一个无可争议的事实是,不同程序员的效率有差别,而且差别很大.许多专家将优秀程序员和一般程序员区分地很清楚. 大多数研究得出结论认为,一般程序员跟优秀程序员之间在工作效率和质量上存在10:1的关系:优秀

[译文]程序员能力矩阵 Programmer Competency Matrix

注意:每个层次的知识都是渐增的,位于层次n,也蕴涵了你需了解所有低于层次n的知识. 计算机科学 Computer Science   2n (Level 0) n2 (Level 1) n (Level 2) log(n) (Level 3) Comments 数据结构 不知道数组和链表的差异 能够解释和使用数组,链表,字典等,并且能够用于实际的编程任务. 了解基本数据结构时间和空间的折中,比如数组vs 链表,能够解释如何实现哈希表和处理冲突,了解优先队列及其实现. 高等的数据结构的知识,比如B

程序员能力矩阵 Programmer Competency Matrix

原文:http://sijinjoseph.com/programmer-competency-matrix/ 注意:每个层次的知识都是渐增的,位于层次n,也蕴涵了你需了解所有低于层次n的知识. 计算机科学 Computer Science   2n (Level 0) n2 (Level 1) n (Level 2) log(n) (Level 3)   数据结构 不知道数组和链表的差异 能够解释和使用数组,链表,字典等,并且能够用于实际的编程任务. 了解基本数据结构时间和空间的折中,比如数组

奔跑吧2015:推荐给程序员的技术书

时光飞逝,不知不觉,走过了 2014,在 2015 年加倍努力,与大家一起分享好书. 2015 年,首月,好多技术书的付印计划摆在面前十几本,筛选一再斟酌,最后敲定以下技术书给大家.如果喜欢这一期的技术书,就分享给更多的小伙伴们吧! 特别推荐 1.第一本 Docker 书 Docker 公司前服务与支持副总裁力作 全球第一本 Docker 技术图书 学习 Docker 必备的第一本书 <第一本 Docker 书>由 Docker 公司前服务与支持副总裁 James Turnbull 编写,是权

18个程序员才看得懂的段子

1. 一程序员去面试,面试官问:"你毕业才两年,这三年工作经验是怎么来的?!"程序员答:"加班." 2. 某程序员对书法十分感兴趣,退休后决定在这方面有所建树.于是花重金购买了上等的文房四宝.一日,饭后突生雅兴,一番磨墨拟纸,并点上了上好的檀香,颇有王羲之风范,又具颜真卿气势,定神片刻,泼墨挥毫,郑重地写下一行字:hello world. 3. 问:程序员最讨厌康熙的哪个儿子.答:胤禩.因为他是八阿哥(bug) 4. 程序猿要了3个孩子,分别取名叫Ctrl.Alt

程序员能力足够,学历不行,是否可以伪造科班出身?

2020年,又一波求职热季来临,各方大神摩拳擦掌,用人单位纷纷热闹起来.从网上面试到线下面试,各种形式应有尽有.有人说,为了让自己的条件看起来更加完美点,程序员可以简历造假么?是不是我只要表现出足够的能力,就算简历上的学习经历造点假也没事么? 事实是如何?让我们接着往下看. 部分学员学历都在本科以下,通过在六星教育学习提升技能,已经拥有了足够的能力可以参与工作.但是有的人会觉得自己并非科班出身,比不过科班出身的"正统军".所以有的时候,在面试中,往往显得底气不足而败兴而归. 这样的情况

从微服务划分,微服务之间通信到程序员能力提高的一些思考

这个问题是由工作中的一次需求的变动引起的. 1:为什么会有这个思考 我们当前做的是一个视频门户系统,这个系统分为四个子系统:cms(内容系统),bms(订购系统),tms(终端管理系统),ims(用户系统).这四个系统对应同名的四个数据库,分别记录相关的数据. 问题出现在一次需求变动后,我们要用各地的CDN播放地址替换源播放地址,所以我们要对业务做一下小小的改动.但是在改动的过程中发现,ims的一些业务功能也用到了播放地址,所以不仅cms要改动,ims也要改动.这样的话改动的地方就比较多,比较大

重建程序员能力(3)-asp.net MVC框架增加Controller

    MVC在微软中提供的框架目前只是发现是asp.net用.另 8年前,我做了个MVC的Windows APP框架如果有兴趣我日后会介绍给大家,欢迎大家关注.MVC的概念网站上有很多,大家去查阅一定能看到,这里不重复讲述了.这里只是介绍怎么加. 1. 找到asp.net项目,然后好到Controller文件夹,右键展开菜单 [添加] 展开下一层菜单,然后选择[控制器]. 2.在对话框中有3个选项,这次为表述方便先用空的MVC5控制器 3.填写一下控制器的名称按添加即可. 需要注意的是Cont

一个平庸程序员自白:我不牛逼但那又怎样?

转自:http://www.managershare.com/post/189966 不是谁都能飚高音,但他们也有自己的声音. Jacob Kaplan-Moss是著名 Python 框架 Django 的 Co-Creater 和核心开发者,在 Heroku 担任安全部门的 Director, 他常年参加 Python 社区的年度聚会 PyCon ,并经常上台演讲.在这次 PyCon 2015 上,他声称自己顶多只是一个平庸的程序员,幻灯片上也写着: “Hi, I’m Jacob, and I