每个人在成长过程中, 都免不了在得失中摇晃, 对我来说, 将来如何更好地去平衡得失, 是需要思考的问题, 而对新入行的年轻人来说, 能从我这些总结中获得一点点启发, 那我也会颇感欣慰. 这, 也是我对技术人成长中得失总结的意义所在.
1. 成长姿势
作为技术人, 我们首先要考虑的是技术上的成长, 而关于这个话题, 一般又有以下三种说法, 即深度优先, 广度优先, 或者兼而有之.
深度优先也就是纵向发展, 即将大部分精力放在某个技术方向上, 然后成为这个方向上的专家. 比如有些人, 毕业后就一直做桌面软件开发, 这样十年后就成为桌面软件开发方面的专家, 有些人一直使用 Java 系技术进行开发, 长时间后也可以成为 Java 开发方向上的专家. 这些人在单个方向上有非常丰富的经验, 可以快速解决这些方向上的各种技术问题, 或者给出技术方案. 目前来看, 大厂比较青睐这类技术人才, 他们在自己的方向上都能独挡一面.
广度优先也叫横向发展, 一般来说就是接触各种各样的技术, 使用各种各样的框架, 既参与前端开发, 又参与后端开发, 甚至参与运维或测试. 这类技术人涉略面广, 什么都懂一点, 杂而不精. 很多创业公司都需要这样的技术人员, 在公司起步时, 这类技术人员可以迅速建构公司的技术体系, 比较清楚公司需要哪些技术人才组合才能打造出一个完整的产品, 而自己工作时也有些面面俱到的意思. 然后等公司发展上了规模, 系统面临更大的挑战后, 就需要招聘前面提到的各个领域的技术专家来负责大系统里面的各个子系统.
兼而有之的就是技术大牛了, 既符合前面对技术专家的要求, 也符合杂家的要求, 技术方面既有深度又有广度. 毕竟人的精力是有限的, 要既有深度又有广度, 有时候比较难以达成, 这种可能需要环境的成全并加上个人的努力和天赋. 当然也有人说, 就目前很多人的努力程序, 要在职场混得好还根本不需要拼天赋, 努力就够了, 哈哈.
2. 主次分明
我曾经看到过一些技术人员, 花了很多时间去记忆一些非本质原理的东西, 而这些东西, 使用的时候查查文档就能找到了. 当然你能背下来是更好的, 不用查文档了, 但是人的脑容量应该是有限的, 我们应该花精力去理解并记忆哪些属于本质原理的内容.
基于这些本质原理的具体实现可能有很多种, 如果我们理解了本质原理, 以后再碰到各种具体实现时都能较快地理解了. 否则, 具体实现变了, 你又要去记住它, 而具体实现多种多样, 你怎么能记得完. 因此, 我们应该抓住本质原理, 了解一两个具体实现就好了, 这样也能达到以不变应万变的效果, 不变的是本质原理, 变化的是具体实现.
3. 学以致用
我自己在多年的学习中, 没有注意学以致用, 这也是我一个多么痛的领悟. 我曾经学习各种各样的理论知识, 然后觉得自己高人一等, 但这些东西在我的工作中基本用不上, 而随着时间的流逝, 这些理论知识也慢慢从我记忆中消失, 当我再遇到它们的时候, 只有似曾相识的感觉, 却已经无法理解其原理或思想.
而另外一些人, 因为业务场景的需求, 深挖某一方面的技术, 从应用程一直到系统层甚至到硬件层. 这种学习方式就是按需学习, 也可以认为是根据使用场景进行学习, 任何技术都是为了解决某些使用场景下的问题而出现的. 因为有了实际的使用场景, 这种学习的效果就会好得多, 记忆也会更深刻, 因此是我目前比较提倡的一种学习方式.
4. 理论与实践
当你觉得理论知识太抽象难以理解时, 可能需要动手去实践以加深理解, 而当你觉得实践没有头绪时, 可能是需要补补理论知识了. 因此, 理论与实践总是相辅相成的. 没有理论的实践就像无本之木, 没有实践的理论就像空中楼阁.
以我自身的经历来说, 我曾经花很多时间去学习一些自己暂时用不到的技术框架, 网上的各种文章都看, 而且感觉文章一篇写得比一篇好, 貌似自己收获很大. 然而因为没有实践, 我对很多概念一知半解, 直到我们项目亲自需要使用的时候, 我才亲自用那种架构方式去搭建系统. 当我搭建完系统后, 我才发现, 我根本不需要花那么多时间去看别人的文章, 如果我没有亲自去搭建, 可能我还会再花很多时间去看类似的文章, 却可能永远达不到深刻理解的程度.
因此, 技术是实践出真知的, 有时候真的是: 干就完了, 否则, 你会有类似这种困惑 - 为嘛听过无数的道理, 依然过不好这一生?
5. 跳槽的问题
说起跳槽, 我们几乎都不陌生, 而技术人员流动性相比其它工种的人士更强. 网上很多人都谈论过这个话题, 在这里我还是不能免俗地要抛出自己的见解.
我认为, 职场初期, 适当花心是可以的. 因为这个阶段的我们, 往往不太清楚自己到底想做什么, 适合做什么. 这样的话, 就需要更多的尝试, 尝试不同的岗位, 如果能有幸找到自己感兴趣的岗位, 那么基本就是值得自己今后多年精力投入的方向了, 你要知道, 职场上太多人, 只是为了谋生而从事一份工作, 根本做不到乐在其中.
当你找到自己的方向后, 建议沉淀下来, 从技术, 行业业务角度去构建自己的核心竞争力. 这种情况下, 如果其他方面问题不大, 不建议频繁跳槽, 最好在一个公司多呆几年, 学到如何开发产品, 如何运维系统, 如果运营产品等知识.
6. 格局的问题
很多年前, 有个在代码界略有名气的人在网上说, 刚开始他觉得是数学限制了自己的发展, 后来觉得是英语限制了自己的发展, 再后来发现, 其实那些都不是事, 真正限制自己发展的, 是自己的视野, 也是格局.
我也是比较赞同这个观点的, 你能想象一个每天只默默耕种自己那一亩三分地的人, 能够去开疆扩土搞大事情吗? 因此作为技术人, 想要不断地成长, 同样需要多关注技术发展趋势, 大的方面不说, 起码对自己所使用技术栈过去发展历程和未来可能的发展方向有一点点了解, 大概了解技术的演变史, 这样对自己的技术选择可能会有些帮助.
以上是我摸爬滚打这么多年来的心沥总结, 坦率地说, 其中某些方面, 我自己做得也不够好, 对我来说, 是多么痛的领悟. 这些经验总结也好, 得失总结也罢, 不一定对每个人都有帮助, 但也许你可以借鉴一下, 如果对你真有那么一点点启发, 那将是我的荣幸.
来源: http://www.jianshu.com/p/36c2b29017b0