最近经常考虑的一个问题就是程序员与程序员之间的区别是什么?大家平常说的毕业三年就能看出差距指的是什么。其实在刚毕业的几年,大家做的事情都是差不多的:选择一门语言,进入一个部门,了解部门内使用的框架,使用这些框架或开发,或完善产品,或开发新产品。那程序员的区别是从什么时候开始渐渐区分的呢?

首先必须说下,程序员它只是个职业,程序员展现出来的感觉和个人的性格有很大的关系。你会发现有的程序员总是每天斗志昂扬,有的程序员是低调少语,或许更多的程序员是抱怨无奈。其实从时间轴的长度看来,斗志昂扬的并不一定就明确自己的目标,抱怨无奈的或许正是在对真正追求的内心争斗。这些的感觉都和当时的状态有关。

然后说说分类,将程序员分类本来就是错误的逻辑。程序员是一种职业,语言、方向都只能是虚线而不是实线。

我在想,勉强能从功能上将程序员分个偏向,偏业务型和偏研究型。

业务型程序员更会偏向于公司的具体逻辑和业务,可能手头口头更多谈论的是项目怎么怎么做,怎么怎么实现,需要和其他组的人怎么怎么合作。业务型程序员学习研究的东西大都希望能直接应用在自己的项目中,这样的学习更是项目推动型学习,项目在某个点需要什么样的技术,他们能很快学习并上手做出这个东西。

或许业务型程序员会喜欢学习使用各种库,但或多或少主观上喜欢能立马用之。业务型程序员手头同时会handle着几个甚至几种项目,当然初期的阶段更多是在讨论这里或者那里出现的bug,和可能改进的方法。后期会考虑如何优化和更新项目。这样的程序员的成长轨迹可能更多是往项目经理,技术总监这方面入手等。

研究型程序员的特点是专注。当谈论到某项技术的时候会两眼放光。并不是说研究型程序员并不关心产品,而是他们的产品是单一且专注的。他们更像是一个凿井钻,在表面是看不到他们数量堆积起来的产品带起的震惊,但是从纵向看,他们的产品深度会是独一无二的。他们或许不会研究到各种不同的技术,更会专注于一项特定的技术中去。

经常说到的能力问题,或许这个词的覆盖范围太大了,有的能力是需要你在最快的时间完成业务,有的能力是要你在最好的时间点完成产品,有的能力是你研究创造的技术贡献,有的能力是你交流的时候的态度与掌控等。

然后说说博客,不同程序员对待博客的态度不一样。当你用什么态度来记录的时候,就决定了博客呈现的态度是什么样子的。有的博客会是一种随笔记录的形式,有的人每天工作结束之后将有用的知识记录下来,久而久之形成的一笔很大的财富。有的人会将博客当成是一种知识的学习。当学习或者看到一种知识点的时候,将他的的学习笔记以博客的方式呈现。有的人的博客呢虽然很少,但是是一种经验和知识的挖掘,每每都会是非常实用和中肯的。

再想想职业特点,程序员这个职业是个永远有新知识的职业,它的新知识在每天都会涌现,这些新的技术和知识可能是你学习到的,也可能是你创造的。如何在一个关注的领域有更多的经验和研究能力是程序员追求的。程序员追求的不应该是搬运能力,更多的应该是挖掘和创造的能力。

还有一点感悟。程序员必须认识到自己的经历是有限的,什么技术方面的事情确实程序员什么都能做,但是并不代表什么你都要做。投入产出比的观念应该要有的。比如在国内翻墙的问题上,多少人在研究着如何免费代理翻墙什么的,或许换个思维想想,在资金允许的情况下,不妨直接花费一些资金,直接就节省掉在这种问题上的学习和时间投入。放弃掉一些东西,你才可以获取到更多的东西。