正文
有了良好的职业习惯,你还需要不断提升自己的基本能力,对程序员(技术岗)来说:
-
第一种能力是
技术能力
,这个是和职业最直接相关的能力,是我们做设计、写代码、解决技术问题的能力,是我们之所以被称为工程师而不是销售或者客服的硬能力(hard skills);
-
第二种能力是
和人相处的能力
,也叫做软能力(soft skills),是让我们如何更好地和他人协同工作;
-
第三种能力是
业务领域(business domain)能力
,计算机程序是用来解决问题的,如果你了解并能够提出业务需求,你的综合实力会更强大;
-
第四种能力是
管理能力
,能让更多的人有条不紊地齐心协力做好一件大事儿,能把一个人的能力放大无数倍;
-
最后一种是
学习能力
,是前面四种能力的爷爷,这个强了其他能力的提升会更容易。篇幅有限,这里没办法把每种能力描述得很透彻,但你必须充分理解这些能力的含义,因为一个程序员不同职业生涯阶段都是这些基本能力不同程度和级别的组合结果。
所以,我们说一个程序员的职业生涯,其核心就是把上面这些习惯越练越熟最后成为本能反应,同时把上面的各种能力不断从菜鸟升级到大师的过程。
了解了基本的成长框架,我们看看程序员在不同的成长阶段该如何利用这个工具自我发展。
大部分的程序员是在读大学或者第一份工作开始技术生涯的,我们可以从技术初长成、从业行业与领域的选择、选择什么类型的公司来展开讨论。
这个阶段的核心是如何能尽早地开始职业化(professional)编程。所谓的职业化,也就是按照一个合格的职业程序员的标准来写代码,这包括良好的编程风格、采用流行的编程框架、专业的调试方法、规范的文档撰写以及坚持不懈不解决问题绝不休息的习惯等等。你不能仅仅是把老师安排的作业完成了,把领导安排的业务逻辑给实现了,你要能够做到写出的代码和大家公认的好的程序员基本接近。
选择一门编程语言是第一步。别老跟我说 PHP 是世界上最好的语言(哈哈哈),至少我可以告诉你,PHP 可能是当前职场里不很值钱的语言。。。如果你想把技术做得更深点,我建议你把一门面向对象的语言(如 Java)学透彻,因为你不光是要用这个语言来解决实际问题,你还要通过不断研习大师们的开源代码来提高自己的编程能力,资源越多的语言你可以参考的东西越多,同时,如果你能把这样的语言理解透了,那么其他任何一门语言你都可以很快掌握。比如说我自己吧,从 C++ 学起,弄明白了后学什么(包括 Java)都比较容易,前后在实际工作中起码用过 8-10 种以上的编程语言。