点一粒烛光,照亮自己,温暖他人
每个人都试图决定自己的命运,但殊不知是别人左右了你的决定。作为从三流大学毕业的技 术人,眼界自然受到限制,不过又显现出离经叛道的可贵。大学的时候兴趣泛滥,也很爱实 践、折腾,时间花了不少,收获却是寥寥,“有一种失败叫瞎忙”大抵就是我的真实写照了。 好奇心固然重要,倘若所学不成体系,没有深度,未与实践想结合,就很容易遗忘。
想来自己多少有点学院派的好高骛远,总喜欢找些大部头的经典书籍来看,多少受了点学校 老师,互联网前辈的蛊惑,譬如编译原理的龙书,《计算机程序设计艺术》,《数据挖掘导 论》,甚至尝试去看《矩阵运算》等等。由于缺乏相关基础知识,加上都是理论,阅读起来 枯燥而又痛苦,总是半途而废。虽然经典值得花大力气阅读,但还是要懂得循序渐进,也希 望前辈给后辈推荐书籍的时候能够循序渐进。
当你积累了一定知识,确定了大致的方向,就需要规划自己的职业生涯了,并预判该领域未 来的发展以及相应的核心竞争力。我工作一年以后,找的Java的工作,干的却是大数据的事, 之后也把自己的方向确定为大数据,然而却没有真正聚焦在这个领域,持续的深度学习。并 且没有学习当前最热门的技术,公司出问题之后,工作并不好找。
作为没有履历背书的技术人,是需要通过其他手段来证明自己的,例如开源项目的贡献,并 能和公司项目想结合。就我而言,这样的机会很少,并且贡献内容非常分散,没有深度,未 来还是应该要多花点业余时间专注在核心开源项目上的贡献。
技术人很容易迷茫,有以下几点原因:
- 兴趣爱好和所做的工作不匹配,缺乏相关经验,又找不到兴趣相关的工作
- 所学技术前景不好,但是又下不了决心转行
- 自学没有相关业务场景,不能很好的实践
- 学习了很多技术但是深度不够,面试没有发挥的余地
- 知识面有限,不知道该学什么技术
首先需要有广度,但这里的广应该是受限制的,不能什么都学,什么都做,毕竟每个人的精
力是有限的。核心能力,核心技术相关要广,事实上没有广度也很难达到深度。例如分布式
队列是你的核心能力,那么KAFKA
, RABBITMQ
, ROCKETMQ
的原理,区别,应用场景,
相关实践你都应该了解。此外,分布式队列属于分布式系统,那么分布式系统相关的知识也
是需要了解的。而据我所知,分布式系统的知识非常浩瀚,光时钟这一个概念就需要学习很
多东西(如因果钟,向量钟等)。
从广度到深度,可以说是一个循序渐进的过程。很多知识都是和其他知识相关,或者建立在
其他知识基础之上的。事实上深度就包含了广度这一要求,例如你是分布式队列专家,如果
你只深入研究过KAFKA
,那么任何场景下你都会优先使用KAFKA
,虽然也能解决问题,但
这不一定是最优的选择。
技术圈对理论还是非常看重的,简而言之不仅要知其然还要知其所以然。理论是为了指导工 程,毕竟大部分技术人不是搞理论研究的,所以理论得从工程中来,然后回到工程中去。这 意味着这里的理论不仅仅包含技术理论还包括工程理论。
没有工程检验的理论是不深刻的,其次造火箭本身比学习造火箭的理论有趣得多。另外需要 注意的一点是:理论是对现实世界的建模,但会忽略很多细节与语境,如果没有相应的实践, 很难掌握其中的精髓。
理论的重要性: 理论让我们明白工程设计的侧重,工程实践需要注意的地方,当前方案能 满足哪些需求,哪些不能满足,让我们少走弯路,而不是试错,很多时候试错的成本很 高。
技术人员总有个错觉,总觉的技术比业务重要得多,殊不知技术是被业务成就的。缺少给技 术落地的业务场景,再多的技术理论也沦为纸上谈兵。由于技术本身并不创造价值,技术人 员可能会有不被重视的困境。例如普通公司的大数据部门一般比较边缘,因为没有带来价值 的直接体现。
业务知识也是可以积累的,通常对应于具体的行业。他可以扩展你的知识面,方便你与非技 术人员的交流。对于有几年工总经验的技术人员,特定行业的领域知识会变得重要,因为某 些大型系统的业务逻辑非常复杂,不亚于技术本身。学习业务知识的另一个理由是假如35岁 被裁,转行可能会容易一些。
互联网上的读物浩如烟海,质量参差不齐,给进取的读者带来很多挑战。各种不负责任的转 载,复制粘贴,导致很多雷同的文章,给主题阅读带来很多困难。此外,标题党的哗众取宠 很容易让人分心,甚至以为吃了一个大瓜,结果却是......。问题在于写一篇好的文章需要 很深的积累,花费很多精力,很多人是很难做到的,这就导致高质量内容的文章其实是相对 比较少的。另一个困境在于内容分类,特别是某个细分技术。现在我们已经习惯通过google 来了解某样知识,但google出来的内容并不是按照 由浅入深的顺序排序的,当然你可以使 用一些技巧快速过滤不想要的内容。
那么如何找到高质量的书籍和博客呢?我个人的经验是,如果某个博客质量很高,那么这个 作者的其他文章(或者推荐的文章)质量也可能很高。此外还有一些搜集高质量特定内容的 网站(比如hacker news)。平时会收集感兴趣的文章,以便有时间的时候阅读。书籍的话 有各种书单与推荐,找起来比较容易,但最重要的是适合自己的水平(小马过河)。
阅读需要循序渐进,由易到难。枯燥繁琐的内容索性跳过,否则太伤害热情。学习通常推荐 从读书开始,因为书籍比较系统化,方便你了解这个技术的全貌,让你知道总要的地方在哪 里,难点在哪里。而且书籍经过良好组织,编辑校阅,的质量通常比较高,此外还会给出额 外的深入阅读的材料。
不要一开始就去阅读源码!阅读源码是一个相对低效而又特别需要耐心的工作,并且需要一 定的技术储备。个人的经验是阅读源码应该和画画一样,先画个轮廓,了解了基本的概念和 总体结构再深入,总之make life easy。
在平时工作过程中的观察发现,情绪控制是一个很容易被忽视,但又非常重要的东西。一方 面来自语言方面的暴力和负面情绪的宣泄真的会伤害自己和周围人,另一方面当有人陷于困 境,你的微小善意真的能帮到别人。直接的语言暴力是很容易识别,也容易受到别人的提醒, 而负面情绪的宣泄真心是慢性毒药,需要有意识的自觉自省,让周围人主动提醒自己。同时 摆正心态,任何沟通艰难的情况都是信息不对称的结果,而你也会处于信息弱势的那一方。
时刻保持谦虚的态度,仔细聆听别人的观点和想法,才会获得意外的收获。否则就像我的母 亲,对于事情的态度,除了鬼神不接受任何合理的解释。她越着迷于此,越能感受到她对命 运的无能为力。我也见过很多只懂得浅显的道理,就以为无所不知,对世界妄加评判的人。 他们十年前是这样,十年后还是这样,仿佛时间没有在它们的思想上起到任何作用。每个人 都局限在某片天空之下,只不过有些人扩大了自己的世界,而有些人认为自己的世界就是整 个宇宙,这是多么自大、无知而又傲慢啊。
我以前不知道在哪读过:人过了30岁看待世界的方式基本定型,并且很难被改变。我也看到 很多人根深蒂固的偏颇言行,我试着去理解它们,容忍它们或者逃避它们,不在小事上没有 意义的争论不休,不在纠结什么才是正确的,大家一起努力达成目标就好,整个团队的凝聚 力才是重要的。