我们在工作总会遇到了大小各异的问题,它们暴露了我自身的许多问题,作为对自身能力有追求的程序员来说,我们非常有必要定期做一些反思。
我想把工作中暴露出自己的问题分为两大类,一类是客观能力上的问题,这些问题是需要自己努力去提升的,另外一类是主观态度上的问题,主观问题往往是我们会选择性逃避的,这方面的问题更需要我们重视,并且勤加反思。
下面这些的都是我自己最近反思出的问题。
客观能力的问题
1、排查问题(debug)能力有所欠缺。工作中很多时间不是在做设计,也不是在写代码,而是在排查问题。所以这部分我也做了一个通用的小总结:如何 Trouble shooting?,希望未来随着工作年限的增长,我可以总结到很多更实用的 debug 技巧。
2、行动上缺乏章法。有时候,做一个事情或者遇到一个问题时,没有一套很清晰的逻辑去指导行动,我意识到这样子是无法成为一个优秀的程序员的。所以希望我未来在平时就要多思考,多做总结,形成完整的方法论,来指导行为。
3、基础工具使用不够熟练,比如说 vi/vim、shell,这些都用得很笨拙。我们人类的能力都是由工具所扩展出来的,如果可以熟练掌握一些强大且有用的工具的话,能力的提升自然是不必多说了,工作的效率也一定会提升很多。这一块没有别的技巧了,只好多学多用,提高熟练度。
4、对 Linux 程序理解不够深,比如说高频使用的 systemd。这一方面需要我多阅读文档,另外一方面多思考一个程序为什么这样设计。
5、计算机基础有所欠缺。这一块在长远来看是最重要的,所以要加强学习。计算机基础知识的学习应该贯穿整个职业生涯。
主观态度的问题
1、畏难情绪,遇到困难的事情就想逃避,就想要寻找轻松的解决方案。畏难情绪不是我们的缺点,而是一种人类进化出的天然特性。但是只有克服那种天性使然的恐惧,我们才能不断解决难题,从而不断到达更高的地方。
2、自负心,我们都希望被别人当作是个厉害的人,这种心理是非常不利于我们正视自己的缺点的。它同时也很影响合作精神,这对软件开发这种需要高度合作的职业来说是致命的。我们要承认自己的错误和无知,坦然接受别人的批评,这样才能不断进步。有一份很好的视频可以参考学习:Google I/O 2009 - The Myth of the Genius Programmer,SVN 的两个作者在谷歌 I/O 大会上讲到了程序员的自负心的话题,讲得非常好,可以帮我们理解这种心理。
3、不求甚解,不对一个问题刨根问底,只流于表面,了解到恰好够解决当前问题的程度就不再深入。这样的话,下次遇到差不多的问题,还是不知所措,因为没有深入理解本质。
最后:Stay hungry,stay foolish.