本文来自知乎提问:程序员的核心竞争力是什么?正如标题所说,我是野鸡学校的应届毕业生,不是正统的计算机专业。既然进入了程序员这个领域,那么什么样的技能才是程序员的核心竞争力呢?也就是说,在我工作的前几年,我需要积累什么样的技能,才能更好的向老板要工资,提出要求。图片来自yestone姚东,招聘音视频相关算法工程师学习能力,尤其是自学能力,你什么时候看到那些大名鼎鼎的程序员在论坛上问“学习XX应该看什么书,如何快速学习XXX,怎么学XXX推荐什么代码”等问题,想学的可以自己快速找到相关资料。这个行业发展太快了,技术淘汰的也很快。如果不学习新的东西3年,你可能就落后了,动手能力全靠看书看资料,当别人还在纠结看什么书,书里的字是什么意思的时候,有的人已经可以跑几百上千了行代码。耐心和毅力,做程序员很重要。写自己喜欢的代码还是挺享受的,但是程序中还是有很多枯燥无趣的发展。你必须能够坚持并完成这些事情。表达能力就是能够在广大听众面前清晰流利地表达自己的思想,使人听得懂。技术呢?技术并不重要。有了以上能力,你就可以快速掌握市场需要哪些技术。***再来说说薪水,记住两句话:薪水不是老板对你过去的贡献的奖励,而是对你未来贡献的期望。现在的老板不可能给你一份让你满意的薪水,下一任老板会给。曹政,数据控/历史控/考证控姚东回答的很好,我继续说几句。我们都知道学习能力很重要,那么学习能力从何而来呢?除了看书、上课,如何在实际工作中学习成长?之前在微博上提过一个笼统的概念,什么是能力?对待问题的态度,以及处理问题的思路和方法。先说说你的态度吧。您的服务器偶尔会出现501错误。可能占比不高(知乎也出现过多次)。很多程序员,是的,有很多,假装没看见,不关心,或者归咎于人品问题。这是态度问题。后来负载高或者其他原因突然频繁出现501错误。他们不去深究原因,而是找各种借口,比如IDC服务商不好,服务器品牌不好,操作系统不好,数据库不好等等。不行,CDN不行,网络不行,web服务器不好,还直接跟老板说我们被DDOS了!(我遇到过,替他的Boss请教了多位安全专家,最后发现根本不是DDOS,而是程序员太差劲了。)这就是态度,令人震惊。如果你能对问题保持敏感,你就能知道任何一个小问题,对小问题有足够的敏锐度,你就有了快速成长的基础。对问题的敏感度非常重要。很多性能上或者程序逻辑上的非致命bug,在你不够敏感的情况下是无法发现的,但是一旦进入到一个特殊的场景中,它们就会突然爆发。如果你有更多的敏感性,你将降低这场危机的风险。第二种态度是解决问题的态度。有些人对自己的解决方案充满信心,认为万无一失,但有些人会多留一条后路;就像你说我的服务器要不要加强,我一定要加强。不是的,一定要尽可能的严谨和全面,但是保存数据库的时候需要加密密码吗?而你需要一个随机盐,不就是为了防止数据库还有漏洞怎么办吗。程序是一样的。以前写的一些服务器守护进程有错误,会莫名其妙地终止。当然这个bug是需要定位和修复的,但是同时写一个cron来检查daemon的状态。一旦遇到终止,它会自动恢复。这是二手准备,就算你不想让他进行,你也要做这个准备。两只手甚至三只手准备问题也是优秀程序员和架构师的关键素质。第三种态度是基于沟通和理解的态度。产品或操作提出了不可靠的需求。当然,打回一句话很酷很威风,但是你仔细沟通分析过吗?这个需求是基于什么样的实际需求?有没有更合理的方式来实现实际需求,说“这个做不到,这个实现成本太高”,不是正确的沟通态度,最好的产品往往实现了人们认为可以实现的东西无法实现。需要。只有这样的态度,才有不断进步的基础。下面是思路和方法。优秀的程序员和平庸的程序员,如果只看敲代码的速度,我想他们是分不出来的。也许每个人一天可以写很多行代码,但是遇到问题的时候,平庸的程序员解决问题的效率,和优秀的程序员相比,会有天壤之别。所谓解决效率无非就是对bug的分析、定位、思考。最基础的,看执行日志,看各种日志,web服务器日志,数据库日志,慢查询日志,binlog日志,php错误日志等等,看的人很多。有很多人看日志不仔细,不完整。仔细研究日志,你已经超越了很多人。第二,模块测试和断点分析,程序员的一个坏习惯就是写了很多代码然后执行。他们不知道如何编写测试模块。如果执行有问题,他们不知道如何设置断点。缩小范围,逐层分析。断点分析非常简单。在整个代码中插入几个中间输出,观察哪个环节出现问题,或者观察每个环节的系统开销。这对于调试和性能优化非常重要。专家们可能认为这是ABC,但我看到的大多数程序员都没有这个习惯。三是错误信息的理解和查找。搜索引擎上有各种技术资料和技术问答。大家遇到的错误信息和错误提示,一般都可以在网上搜索到。当然,搜索之后,一定要结合自己的场景,仔细思考,了解透彻,而不是猫猫虎虎的应对,不然运气好的话,这次可能就错了,自己都不知道下次运气不好怎么办。第四条:不断总结归纳一个问题、一类问题、不同类型的问题。善于总结和整理自己的问题。有很多优化点,思路不正确,不合理。如果你认为自己的代码一直很牛逼,没有任何缺陷,那你一定是原地踏步,没有进步。关于总结,我说一个案例。我们曾经有一个请求量非常大,负载非常高的系统。我们有一个很好的技术经理来处理它。他列出了几个升级方案,非常靠谱。我们实施了,效果很好。很好,然后我们跟进报道的时候,他说他做了好几处升级,整体效果怎么样,然后我就批评他了。我批评了什么?他一起升级,然后一起观察效果,??所以这几个方案中,每个方案的实际效果,对提升的帮助有多大,他都没有数据。因此,他对每一个具体的升级方案的价值和重要性都没有概念。你正确地解决了问题,但没有认真总结,收获有限。不能说一起做升级是不对的,但是效果评估需要分开做,这个数据很有价值。知识的积累不一定是你处理了之后才积累的,而是整理出来的。大概重述一下这些***什么是能力?遇到问题的态度处理问题的思路和方法这就是能力原文链接:http://www.zhihu.com/question/27180582
