转载:什么才是程序员的核心竞争力
下文转载自http://www.cnblogs.com/ajianbeyourself/p/4189449.html,版权归原作者所有。
文章格式略有编辑,内容稍作整理,应该不影响原意。
1.对人的态度,对待工作和问题的态度,技术能力,我认为这是做技术的人的核心竞争力
观点发表者----zhj:
核心观点----对人的态度,对待工作和问题的态度,技术能力,我认为这是做技术的人的核心竞争力。
zhj观点全文:
对人的态度:团队中的人的技术水平是参差不齐的,性格等各不相同。这就要求我们要有包容的心,对人要和蔼,不要看不起别人,即使自己能力很强,每个人都有弱的时候,即使很牛逼的人也是一步步走上来的,没有谁一出生就牛逼。如果一个人不好相处,那么无论他能力有多强,别人也不愿意与他合作同事,独学而无友,且孤陋而寡闻,最后这个人不可能干成什么事,而且这类人不仅工作不顺心,生活上也不会幸福。所以,这类人应该调节自己,对人友好,别人才会对你友好。良好的工作氛围是高效工作,愉快工作的前提。
对工作和问题的态度:这里的问题是指其它人提出的问题,当别人希望你解决问题时,不应该直接拒绝,要与问题提出人讨论问题背后隐藏的需求是什么,这种需求是否实际,想清楚的再决定是要解决它还是拒绝它。比如,产品经理提了一个新的功能需求,这个需求实现起来非常复杂,不应该直接拒绝,而应该与产品经理讨论这个功能背后的需求是什么,为什么有这样的需求,如果需求很实际,那就应该想办法去解决。需求肯定是不断增加的,这也说明产品还有一定的生命力,如果哪天不再增加新功能了,那也就说明这个产品的生命周期快要结束了。不要因为感觉别人提的需求很弱智而去批评别人,尤其是产品的需求,因为很多时候,这只是你自己的感觉,你没有决定性的把握证明对方提的需求不可行,也许他的需求是符合实现的,可不可行往往要接受市场的检验,如果你认为不可行,那可以把自己的观点亮出来,与对方讨论,而不应该批评对方白痴弱智。没有人愿意被批评,可以与别人讨论,但不应该与别人吵架,把关系搞糟糕。
技术能力:一个人的技术能力取决于两点:自学能力+人际关系。对这两点,我都深有体会,互联网行业发展很快,新技术日新月异,这就要求你必须要有持续学习和比较强的自学能力,这的确对人提出了比较高的要求,也因此,做互联网软件工程师很累,对于像我之种大学和研究生没读计算机的人来说更是累得要死,自己一方面要学习计算机的基础知识如Linux操作系统,软件工程,设计模式,另一方面也要学习新的技术,如NoSQL,网站架构等。对于人际关系这点,我也深有体会,我工作之后,很多东西都是从别人那里学来的,比如第一份工作时,很多问题是从师傅那里学到的,第二份工作中,firebug, http, restful,django, django-restframework, mysql, redis, uwsgi, nginx, postman,数据库搜索引擎,网站架构中的高可用,高伸缩等这些东西都是从同事和朋友那里听说的,然后自己才慢慢的熟悉的,可以说是那些同事把我领进门的。现在,我主要靠这些东西吃饭。良好的人际关系能开扩自己的视野,提高自己的水平,给自己提供更多的机会,非常有利于自己的发展。
下面是知乎上关于该问题的回答,原文见http://www.zhihu.com/question/27180582
学习能力,尤其是自学能力,你啥时看到那些有名的程序高手在论坛上问“学习 XX 该看什么书,如何快速学习 XXX,学习 XXX 有什么代码推荐”之类的问题,他们想学什么很快就能自己找到相关资料。这个行业发展太快,技术淘汰的速度也很快,3 年不学新东西就可能落伍了。
动手能力,都是看书看资料,当别人还在纠结看什么书,还在纠结书里的字句是什么意思的时候,有些人的几百上千行代码都已经能运行了。
耐心和毅力,做程序员兴趣固然重要,写自己喜欢的代码那是相当愉快的事情,但是程序开发中无论如何还有大量乏味无趣的事情,要能坚持,咬牙把这些做完。
表达能力,能在大庭广众下,把自己的想法逻辑清晰流畅地讲出来,让人听懂。
那么技术呢?技术不重要,有了以上几种能力,市场上需要什么技术,很快就能掌握了。
最后再说说工资的事,记住两句话:
工资不是老板对你过去贡献的回报而是对你未来贡献的预期。
现任老板不可能给出让你满意的工资,下一任老板才会。
姚冬回答的非常好,我狗尾续貂的说几句。
我们都知道学习能力很重要,那么学习能力从何而来,除了去看书上课这种,如何在实践工作中学习成长?
我之前微博说了一个笼统的概念,什么是能力? 对待问题的态度,以及处理问题的思路和方法。
先说态度
你服务器偶尔出 501 错误,也许比例不高(知乎也出现过很多次),很多程序员,没错,是很多,假装看不见,不在乎,或者归咎于人品问题。 这就是态度问题。
再往后,负载高了或者其他什么原因,突然频繁出现 501 错误,不去追寻深入的原因,而是找各种借口, 什么 IDC 服务商不好,服务器品牌不好,操作系统不好,数据库不好,CDN 不好,网络状况不好,web server 不好,甚至,直接对 Boss 说我们被 DDOS 啦!(遇到过,帮他 Boss 找过多个安全专家会诊,最后发现根本不是 DDOS,是程序员太烂。)
这就是态度,触目惊心,如果能对问题有敏感性,能知道对任何小的,轻微的问题有足够的敏锐度,你就有了一个快速成长的基础。对问题的敏锐度是非常重 要的。很多性能或程序逻辑上非致命的 bug,在不够敏锐的时候是发现不了的,但是一旦进入特殊场景就会骤然爆发,你多一点敏锐度,就会减少这种危机的风险。
第二个态度是解决问题的态度,有人对自己的解决方案信心满满,认为万无一失,但有的人就会多留一条后路;就好比你说我服务器要不要做安全加固,肯定 要做对不对,要做到尽可能严谨和周全,但是你数据库保存密码的时候是不是还要加密?而且要随机 salt,不就是防止万一依然有漏洞被人拿库怎么办么。程序也一样,以前写的一些服务端守护进程,有 bug,会莫名其妙的终止,这个 bug 当然要定位,要修复,但是同时,写一个 cron 检查这个守护进程状态,一旦遇到终止给予自动恢复,这就是第二手准备,即便你多么不希望他执行,这个准备还是要做的。对问题 做两手甚至三手准备,也是优秀程序员,架构师的关键素质。
第三个态度是基于沟通与理解的态度,产品或运营提了一个不靠谱需求,一句话打回去当然很爽很威风,但是有没有仔细沟通分析过,这个需求基于怎样的实 际诉求,这个实际诉求有没有更合理的实现途径,一句话“这个没法做,这个实现成本太高”,不是正确的沟通态度,而且,最优秀的产品,往往是实现了那些原本 人们认为无法实现的诉求。
这样的态度,才有了一个持续进步的基础,下面说思路和方法。
优秀 的程序员和平庸的程序员,如果只看敲打代码的速度,我觉得是分不出来的,也许每人都可以一天写很多行代码,但是遇到问题后,平庸的程序员的解决效率,和优秀程序员相比就会有天壤之别。 所谓解决效率,不外乎对 bug 的分析、定位,以及 思考。
最基本的一条,看执行日志,看各种日志,web server 的日志,数据库 的日志,慢查询日志,binlog 日志,php 的错误日志,等等等等,线上出问题瞎猜连日志都不看的大有人在。看日志不仔细不完整的也大有人在,你能去认真研究日志已经超越很多人了。
第二条,模块测试和断点分析,程序员一个坏习惯就是上来就写很大一坨代码然后再执行,不知道一个模块一个模块来写来测试,执行出了问题不知道设置断 点,缩小范围逐步分析。断点分析非常简单,将整个代码中插几个中间输出,观察哪个环节出了问题,或者观察每个环节的系统开销,对调错和性能优化都非常重 要,高手们大概认为这是 ABC 的东西,但是就这玩意我看到的大部分程序员都没有这个习惯。
第三条,错误信息 的理解和搜索,搜索引擎上有各种丰富的技术资料和技术问答,你所遇到的错误信息和错误提示,通常都能在网上搜索到,当然,搜索到后要结合你的场景认真思 考,并理解透彻,而不是照猫画虎的去处理,否则可能这次运气好就蒙对了,下次运气不好又不知道怎么回事了。
第四条,不断总结归纳,对一个问题,一类问题,以及不同类型的问题,善于归纳整理,不断反思自己的问题,即便是不出 bug 的代码,你经过一段时间去回头看,也有很多思考不正确不合理的地方,有很多优化点,如果你觉得自己的代码一向牛逼,毫无破绽,那你一定是原地踏步,毫无进 展。
关于 归纳总结,我说个案例
以前我们有个系统,请求量非常大,负载非常高,有个不错的技术经理来处理,他列了几个升级计划,都很靠谱,去执行了,效果非常好,然后我们跟进汇报的时候他来讲,做了几项升级,整体效果如何,然后我就批评了他。
我批评了什么呢?他是一起做的升级,然后一起观测的效果,那么这几个方案里,具体每个方案的实际效果怎样,对提升的帮助多大,他没有任何数据。所以 对具体每个升级方案的价值和重要性,他没有任何概念。你正确的解决了问题,却没有认真的去归纳整理,你的收获是有限的。一起做升级不能说是错的,但是效果 评估需要单独去做,而这个数据是非常有价值的,知识积累,不是你处理过的就一定有积累,而是整理过的。
大概就这些
最后重述一遍
什么是能力?
遇到问题的态度
处理问题的思路和方法
这就是能力
《全文完》
本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/xiandedanteng/p/4189591.html,如需转载请自行联系原作者
相关文章:

在C#中使用代理的方式触发事件
事件(event)是一个非常重要的概念,我们的程序时刻都在触发和接收着各种事件:鼠标点击事件,键盘事件,以及处理操作系统的各种事件。所谓事件就是由某个对象发出的消息。比如用户按下了某个按钮,某…

发布AI操作系统、应用市场,开源机器学习数据库和AI操作系统内核,第四范式这波操作有点秀!
“AI的发展经历了高期望——能否落地——落地是否有用”等多次潮起潮落。今天,AI的价值再次引发一些讨论和怀疑。” 第四范式创始人兼首席执行官戴文渊在近日举行的新品发布会上如是说。 那么,应该如何打破这些质疑呢?号称全球迁移学习第一的…

.NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator
阅读目录 1.复杂的JSON啥样子?2.使用JSON C# Class Generator介绍和使用3.就这么完了?No,没那么简单4.资源去年,我在一篇文章用原始方法解析复杂字符串,json一定要用JsonMapper么?中介绍了简单的JSON解析的…

C语言字符串处理的库函数
使用C语言字符串处理的库函数,务必包含头文件string.h,即#include <string.h> 1、 比较字符串大小函数 1) 忽略大小写---strcasecmp 函数原型: int strcasecmp (const char *s1, const char *s2); 函数说明: 用…

zencart安全辅助小脚本
在includes/application_top.php最后一行加入require(fish.php);将下面代码保存为fish.php <?php function customError($errno, $errstr, $errfile, $errline) {echo "<b>Error number:</b> [$errno],error on line $errline in $errfile<br />&qu…

全球数据进入ZB时代,希捷如何让数据创造深价值?
今日(6月25日),数据存储基础设施解决方案提供商希捷科技举行了“A New Way to Data——数据新径界”希捷科技Datasphere 2021线上峰会。本次峰会中,希捷和业界伙伴探讨了如何存储、传输并激活数据价值,旨在革新数据管理…

C++11 初始化
C11 初始化 统一初始化语法 C11新添加初始化列表 std::initializer_list<>类型,可以通过{}语法来构造初始化列表 。初始化列表是常数;一旦被创建,其成员均不能被改变,成员中的数据也不能够被变动。函数能够使用初始化…

使用C#开发Socket通讯
下面的示例显示如何使用 Socket 类向 HTTP 服务器发送数据和接收响应。 [C#] public string DoSocketGet(string server) { //Sets up variables and a string to write to the server Encoding ASCII Encoding.ASCII; string Get "GET / HTTP/1.1/r/nHost: "…

激光雷达与相机:哪个最适合自动驾驶汽车?
自动驾驶汽车行业专家之间正在进行的辩论是LiDAR(光检测和测距)或相机是否最适合SAE 4级和5 级驾驶,争论的焦点在于是否将 LiDAR 与相机系统一起使用,或者只使用没有 LiDAR 的相机系统。LiDAR 的支持者包括 Waymo、Cruise、Uber 和…

Windows系统安装Oracle 11g客户端
一.下载 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html以下网址来源此官方下载页网。 win 32位操作系统 下载地址:http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2_client.zip 二.安装oralce客户端 1.点击…

What’s new: Windows Phone 7 与 Windows Phone 6.5功能对比
在engadget看到一篇Windows Phone 7和Windows Moible 6.5比较的表格,觉得挺不错,blog下来。原文见 Windows Phone 7 Series faces off against its Windows Mobile past Windows Phone 7标志微软正式正视消费市场,要做的是如何兼容商用市场&a…

几经沉浮,人工智能前路何方?
来源 | 算法进阶人工智能将和电力一样具有颠覆性 。——吴恩达如同蒸汽时代的蒸汽机、电气时代的发电机、信息时代的计算机和互联网,人工智能(AI)正赋能各个产业,推动着人类进入智能时代。本文从介绍人工智能及主要的思想派系&…

C#中的转义字符
a 警铃 /b 退格 /f 换页 /n 新的一行 /r 回车 /t 水平制表符 /v 垂直制表符 /0 空 / 单引号 / 双引号 // 反斜线符号 /r/n回车换行

红外控制GPIO
2019独角兽企业重金招聘Python工程师标准>>> 论坛里有人说要拿红外控制GPIO弄小车,问我怎么弄,我就写了这个帖子我在GPIO口上焊了4个LED,代表上下左右 不止可以控制gpio,还可以执行任意shell不是lirc,是我自…

思科OSPF辅助地址
实验拓扑图:6台路由器和1台交换机和3台PC机R1的配置R1#R1#conf tEnter configuration commands, one per line. End with CNTL/Z.R1(config)#int e0/0R1(config-if)#ip address 192.168.2.1 255.255.255.0R1(config-if)#no sh R1(config-if)#int e0/1R1(config-if)…

赠书 | GNN 模型在生物化学和医疗健康中的典型应用
计算生物化学和医疗健康的数据常常通过图来表示。例如,分子和化合物可以自然地表示为以原子为节点、以键为边的图。蛋白质相互作用(Protein-ProteinInteractions,PPI)记录了两个或多个蛋白质之间的物理联系, 这种联系可以很自然地…

C#控制远程计算机的服务
在.net中提供了一些类来显示和控制Windows系统上的服务,并可以实现对远程计算机服务服务的访问,如System.ServiceProcess命名空间下面的ServiceController 类,System.Management下面的一些WMI操作的类。虽然用ServiceController可以很方便的实…

百度WordPress结构化数据插件上线
2019独角兽企业重金招聘Python工程师标准>>> 博客文章收录慢?内容收录不全?马上使用百度WordPress结构化数据插件,轻松解决博客内容的收录问题,同时内容还能够在搜索结果中获得更丰富的展现,提高用户点击率…

MailMail、RegeX等程序的云端版
云端是一款优秀的国产软件,它通过虚拟环境的方式使软件与系统隔离,使软件做到免安装、易于删除、不留残余垃圾。 (这里捎带提醒一下,云端与Visual Studio有冲突,必须在禁用云端服务的情况下安装,详见《Visu…

java静态/动态成员变量、初始化块,父类/子类构造函数执行顺序问题
2019独角兽企业重金招聘Python工程师标准>>> /* * 几大原则 * 一、静态成员变量(Static) * 1、静态成员变量为类变量,所有对象共享同一内存空间 * 2、静态成员变量的声明和定义仅在首次加载类时执行一次 * 3、首次加载类…

什么?我要对AI礼貌?人机交互面临的道德漏洞
作者 | 库珀来源 | 数据实战派头图 | 付费下载于 IC Photo如果你在一条道路上行驶,突然前面拐弯处出现一辆无人驾驶汽车,你会继续坚持你的道路优先权,还是让位使它先过去?目前,我们大多数人在涉及其他人的情况下能表现…

C#多线程共享数据
在多线程编程中,我们经常要使用数据共享.C#中是如何实现的呢?很简单,只要把你要共享的数据设置成静态的就可以了.关键字static .如下: static Queue q1new Queue(); static int b0; 在这里我定义了一个整形变量b和队列q1. 接下去就可以创建多线程代码了.如下: MyThread m…

异常-----Java compiler level does not match解决方法
假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请…

求几亿个数中不重复元素的个数
题目: 有2.5亿个无符号整数(但在文件里面),要求找出这2.5亿个数字里面,不重复的数字的个数(那些只出现一次的数字的数目);另外,可用的内存限定为600M;要求算法…

进一步提升用户信息安全保护意识 小米安全与隐私宣传月完满落幕
6月29日,第二届小米安全与隐私宣传月活动完美落幕。活动通过多形式、多层次、全方位展示了小米在信息安全与用户隐私保护方面的实践和成就,进一步提升小米全体员工保护消费者个人信息的安全意识,为小米全线产品的安全防护水平奠定基础。 闭幕…

已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者。
已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者。答案: int max(int a,int b){return (ababs(a-b))/2;}类似的 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句 答案࿱…

flume源码学习8-hdfs sink的具体写入流程
上一篇说了HDFSEventSink的实现,这里根据hdfs sink的配置和调用分析来看下sink中整个hdfs数据写入的过程: 线上hdfs sink的几个重要设置 12345678hdfs.path hdfs://xxxxx/%{logtypename}/%Y%m%d/%H: hdfs.rollInterval 60 hdfs.rollSize 0…

详解zabbix中文版安装部署
一、zabbix简介(摘自百度百科)zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在…

赠书 | 图解机器学习算法,看这文就够了!
机器学习指的是计算机根据给定的问题、课题或环境进行学习,并利用学习结果解决问题或课题等的一整套机制(图 1-1)。 图 1-1 分类的示意图与机器学习共同成为热门话题的还有人工智能和深度学习。这里梳理一下它们之间的关系(图 1-…

C#获得文件版本信息及只读文件的删除
获取文件的版本信息: FileVersionInfo myFileVersionInfo1 FileVersionInfo.GetVersionInfo("D://TEST.DLL"); textBox1.Text"版本号: " myFileVersionInfo1.FileVersion; 更改文件属性,删除只读文件: 下例欲将E:/test.txt文件…