程序员如何提高自己的能力

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/coderALEX/article/details/86700751

前言

本文是笔者自己的感悟和思考,应该还算是比较有趣的内容
文章底部有书单和资源

正文

作为一个程序员,能力是立身之本,所以长久以来在我的意识中一直存在一个问题:

程序员应该如何提高自己的能力?

这是一个很容易收智商税的主题,网上有无数的人写了无数的文章,录了无数的视频音频来讨论这个问题,吸引了很多想要变强的,正直向上的程序员、准程序员。甚至各种培训机构,就是通过满足这种需求来获得经济上的收益。

我一开始觉得,这个问题根本不值得浪费精力去思考,不就是学习+解决问题么,我们花了那么多精力寻找解决这个问题的良方,根本就是缘木求鱼。

So,我在课堂、书本、Google中学习,在项目中实践,听起来好像很美好,但是,我并没有清醒地意识到自己到底在干些什么,回头一想好像什么都没有积累下来。广泛的学习和实践是因为我并不知道自己的目的是什么,事实上我处于提高自己的一种假象中。

某些时候我终于深刻认识到:

很多情况下,我们只能够解决被清晰定义了的问题,而这个问题并没有被清晰的定义。

我觉得这一点很有意思,就像写程序的时候只有清晰的定义一个接口,才有可能对其进行实现,如果接口不明确,就会产生各种无法兼容的实现,那么该问题无法被解决。

对于我们现在讨论的问题,我们可以通过如下词性进行定义:

  1. 程序员(主语,名词):什么是程序员?写哪种程序地程序员?用什么工具的程序员?使用什么语言的程序员?。。。?
  2. 如何(状语,副词):这里应该是答案的位置,解决这个问题等价于得到一种方法,是一个过程,而不是结果。定义1、3、4之后将答案写在这里。
  3. 提高(谓语,动词):什么是提高,拓宽知识属于提高么?学新的技术?把技术用的更熟练?理解某些mechanism?提高到什么程度呢?想要在linux相关能力上超过Linus 是否根本不可能或者成本太高?
  4. 能力(宾语,名词):什么是能力,仅指技术能力?还是包括社交能力?那技术又指的是什么呢?

上述过程其实可以无限迭代下去,但我们只需要将本文讨论的问题定义到可以被解决就行了,就像是工业4.0所提及的智能化和个性化,我们要将这个问题针对我们自己本身进行定制和划分,这样,我们解决该问题就确确实实地满足了自己的需求,而不是处于假象中,或者说满足的程度很低。

我的方案

  1. 程序员:我希望在将来成为一个比较大的系统的架构师,暂时写的程序是后台程序,我的主语言现在是Java,副语言C/C++、Perl、Python、Go等等,
  2. 如何:阅读英文原著,做项目,看教学视频,写博客总结记录
  3. 提高:主要是在深度上提高,在广度上也要提高,但是范围限制在能力的范围内,可以进行额外的了解,但是仅限了解,在没有做出决定之前不深挖,精力有限。
  4. 能力:使用编程语言的能力(3-5年大厂主程的层次),写出较为优雅程序的能力(了解较多的best practice,高内聚低耦合,高可用。。。),对硬件的理解程度(3-5年大厂主程的层次),英语能力(雅思6.5)

资源:

没有更多推荐了,返回首页