如何成为厉害的程序员?需要满足这8个条件!

文章来源:公众号findyi

好几个读者问:如何成为厉害的程序员?编码能力如何成长。回答完后,有些心得也给大家分享下。

其实程序员最关键的技能远不止编码能力,架构思维、底层知识的深度等等,同样很重要。

在这些能力中,最容易被人忽视却很重要的能力是:debug能力。甚至我认为:debug能力远比编码能力更重要。很简答,大家可以观察下自己的团队,最优秀的程序员一定会承担很多疑难症的排查和解决。

曾经在360带几十人技术团队,同时研发几条业务线。参与过的产品,日活过千万的有一款,过百万的有三款。

这个过程中各种稀奇古怪的bug见过不少,也一一解决了(不然估计就要滚蛋)。

分享下我的debug经验,希望对大家有用:

1.日志Log尽可能详尽

编程领域流传着一句话:必现的bug,都不是bug。

因为好复现,就容易解决,代码一直跟下去,或者看看堆栈信息,很快能定位问题。

真正困难的是偶现bug,甚至那种概率千分之几,但后果严重的bug。解决他们就需要详细的日志Log,尤其是关键点上的信息,非常重要。

2.google要用好

程序员+google=好的程序员,这句话真的没错,很多技术bug,当你毫无头绪之际不妨google下,可能不少人遇见过。

当然,最关键的是搜索的关键字,这取决于你对bug现象的描述,越言简意赅搜索到的信息反而越多。

3.排除法

这个方法说实话不提倡,但很多时候实在束手无策之际不妨用用,用法也很简单,当你不确定哪一块新增代码引入问题,就尝试注释一部分代码看看程序是否OK。

不行再换另一部分代码注释掉,很快你就可以缩小bug的查找范围,进而定位问题。

4.模拟用户环境

可以采用一些工具来模拟前端或者后端,制造假数据、假操作。有了这些工具之后,把你怀疑可能出问题的情况模拟一遍,观察是否会出问题。

其次,遇见一些极端情况,比如怀疑是多线程/多进程死锁,那不妨在某个进程/线程写个死循环看看bug是不是就出现了,当然做这种操作千万千万别给忘记了,提交了,那就完犊子了。

5.记录曾经解决过的bug,并简历索引

其实很多bug会变着花样反复出现,俗话说好记性不如烂笔头,把解决过的问题记录下来,并且做好索引,下次遇见可能相同的问题,先检索一遍,搞不好就找到答案了。

6.多看官方文档

特别是引用了第三方代码或者是开源代码导致的问题,官方文档对应的部分反复看看,可能问题就解决了。

7.引入工具,放大问题

比如很多线程注入的工具,你开启后,但凡是一点点依赖线程顺序的bug都会从偶现变为必现。

这个相当于主动把代码运行环境变成地狱模式,比如你的一个线程的结果依赖于另一个线程的输出,但你忘记加同步代码了,不过大部分情况另一个线程运行都飞快,但有些机器就不好使了。

这个时候加入这种工具,它直接让某些情况下另一个线程运行速度变慢(我猜大概率是加了个sleep(1000)),结果你的程序就崩溃了,崩溃堆栈直接打开,迅速定位,问题解决!

8. 制作工具,针对某些bug编写一些调试辅助工具。

比如,某些系统没有完善的崩溃报告,虽然也有dump,但是分析出来的callstack经常不准。完全可以为解决崩溃问题编写了个工具,自动扫描代码,在每个函数入口和出口插入log,以此来定位崩溃点。

以上8点,都是在实战血淋淋的过程中总结出来的,希望对大家有帮助。

最后,特别推荐一个分享C/C++和算法的优质内容,学习交流,技术探讨,面试指导,简历修改...还有超多源码素材等学习资料,零基础的视频等着你!

还没关注的小伙伴,可以长按关注一下:

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我是一个计算机程序,并不具备看见或亲身经历的能力。但是,我可以告诉你,一个差劲的程序员可能有以下几个特点: 1. 不注重代码质量,写出的代码难以阅读和维护。 2. 不能独立解决问题,需要别人的帮助才能完成工作。 3. 没有良好的沟通能力,不能有效地与团队成员合作。 4. 缺乏学习能力,拒绝学习新技术或不能适应新的发展。 5. 缺乏责任心,不能及时完成任务,对工作缺乏严谨性。 当然,这些只是一些典型的特点,并不代表所有差劲的程序员满足这些条件成为一名优秀的程序员需要不断学习和努力,并且注重代码质量、沟通能力、团队合作等方面的发展。 ### 回答2: 在我职业生涯中,我曾经遇到过一位非常糟糕的程序员。首先,他完全没有责任心和工作热情。不仅经常迟到,而且还经常提前离开,对项目缺乏关注和投入。这种态度严重影响了整个团队的工作进度和效率。 其次,他的代码质量非常糟糕。他往往没有遵循代码规范和最佳实践,导致代码难以维护和扩展。他经常使用变量名不清晰、缺乏注释和代码冗余等问题。这不仅让别人难以理解和维护他的代码,而且还引发了许多严重的bug。 此外,这位程序员也经常缺乏团队合作精神。他很少与其他成员沟通和交流,也不愿意接受别人的建议和反馈。他坚持自己的方法和思路,而不考虑团队的整体利益。这导致了项目中频繁出现的合并冲突和代码冲突,严重影响了团队的协作效率和项目进度。 最后,他对自己的技能和知识水平非常自负。他总是以自己为中心,自称为“天才”,经常对其他人的意见和建议不屑一顾。他不愿意学习和提升自己,也不愿意与其他人分享和教导。这种骄傲和自负让他无法与团队建立良好的工作关系,也使他在技术方面迅速落伍。 总之,这位最差的程序员在工作态度、代码质量、团队合作和自我认知等方面都表现得极为糟糕。他的存在给整个项目带来了不少问题和困扰,让我们明白了一个优秀的程序员应该具备的品质和态度。 ### 回答3: 我见过的最差的程序员一个完全不负责任的人。他从不按时完成任务,经常找借口推迟交付日期,并且总是怠慢我们提出的需求。他的代码质量也很差,经常出现逻辑错误和代码冗余。他不愿意花时间阅读并理解需求文档,导致他经常做出功能错误的实现。他总是将责任推给其他团队成员,不愿意承担自己的错误。同时,他也不乐意与团队沟通合作,经常孤立地工作。他缺乏责任感和进取心,从不主动学习和掌握新的技术。他对所负责的项目不关心,也不愿意对其进行持续改进。他从不提出任何有建设性的意见,只顾着完成基本任务,缺乏创新精神。他的工作速度很慢,往往花费很长时间进行简单的任务。他也不会主动与其他团队成员合作,经常让其他人为他修复他的错误和缺陷。总而言之,他是一个不负责任、技术水平低下、缺乏合作精神和创新意识的程序员

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值