--------我今年三十岁,我很迷茫,不知道将来该选择什么发展方向。
这是我无心中在社区微信群中看到的一位年轻的开发者说的话,以前他也常常会在技术群中抛出一些有深度有内容的问题,并能积极乐观的进行问题思考和探寻技术解决方案,有时候可能会错误的觉得他这样一位热爱学习的开发者,在公司也必定是技术的引领者,对本身的职场规划有着清楚的认识。程序员
因此他抛出这样的问题着实有点意外,不过细想以后,或许也属实正常是。对于30岁左右的开发者来讲,从20出头的毛头小伙,逐渐成长为家庭和公司的顶梁柱,若是一直从事技术领域,大概很容易就到了瓶颈期,以下图,一我的的学习能力增加曲线,大概三年或五年左右,增加速度就会逐渐放缓。算法

(手画的) 数据库
到了这个阶段会很是痛苦,若是身处一家优秀的公司还好,有一套完整的体系保证你持续成长,不然就得陷入了吃老本的时期,或许将一直这么平庸的下去,直到被迫退出行业。设计模式
而那些不甘如此的优秀者,都渴望去改变现状,他们们每每承受着无比巨大的压力,尤为是互联网技术飞速发展、各类新技术新方法席卷而来,究竟该如何选择技术的发展方向和我的的职场规划,这个问题天然而然就出如今他们面前。微信
如下是互联网开发者的“人才三角”结构,由专业技能、行业知识和软实力组成。每个圆环均表明一个知识边界。架构
专业技能是开发者赖以生存的宝贵技能,而其中开发语言是最重要的一个方面。近年来飞速发展的互联网业,彷佛对.NET开发者带来的冲击至关巨大,在许多城市,甚至出现了Java与.NET的招聘信息比例10比1的惊人状况,而在国内互联网公司,彷佛除了同程艺龙、蔚来汽车等公司,已经找不出太多叫得上名头的大企业坚持使用.NET技术栈。微服务
可是即使如此,这并无说明.NET技术已经逐渐落伍,尤为在技术领域,看起来火热的市场,历来也不是一门语言所能主宰。真正优秀的开发者历来不会被语言束缚,事实上虽然掌握一门核心语言很是重要,其次在语言以外的其余专业技能,诸如设计模式和设计原则、对于算法等的理解程度,都是开发者很是重要的能力,对他的价值评估产生了很是深远的影响。 学习
在众多专业技能中,比较争议的大概是数据库、各种组件和其余专业技能,以及DevOps和微服务。首先是这些新概念,铺天盖地而来,让人难以抗拒学习的欲望,甚至不学习,也常常会被人说成知识体系闭塞。可是学习了以后,若是得不到实践,不见得可以带来短时间或长期受益。除此以外可以恰到好处的掌握好数据库和各种第三方组件(诸如Redis、Consul)等,虽然可以让开发者得到很多机会,可是却并不是每位开发者都有时间或精力了解这么多东西。毕竟天天只有24小时,花时间学习了A组件,每每就得忽略其余组件。并且若是只是浅尝辄止的了解某些组件,倒不如仔细的钻研众多同类组件中的一种。spa
微服务容易让人陷入知识的海洋无可自拔,在宝玉老师的专栏《软件工程之美》也提到微服务架构并不是软件系统的自然演进,要靠组织力量来完成。而在微服务书籍《微服务设计模式》中也提出,微服务实际上应该是一种组织架构形式的体现,而不只仅只是一种软件架构。为了微服务而微服务,不见得会带来了团队沟通成本的提升,也不见得有利于软件系统的高效迭代。一样,为了DevOps而上容器,这样也不是一种值得推崇的策略。设计
我把DDD和TDD归入到专业技能中很是重要的一环。由于DDD是一种很是重要的软件问题分析方法,从宏观来看有点像团队问题分析方法,若是时间有限,大概不太有必要独自研究,毕竟要将其实践下去,仍是要更多的依赖团队,不如拉几个同事一块儿探究。若是没办法将DDD完美的实践下去,也没必要苛求,运用好领域的分层思想,可让软件系统尽量可控的管理各领域的知识,实现业务知识的沉淀。
TDD看似可以让软件尽量的减小后期的维护成本,可是要将其实践下去,取决于大环境和我的是否持续不断的刻意练习,并且须要一个漫长的周期。可以刻意练习显然是极好的,相信他必定能给你带来很是巨大的好处。
所处行业、和行业知识是决定开发者的关键,而不是专业技能自己。例如红得发紫的电商行业,阿里巴巴或拼多多等电商平台,最能给开发者带来丰厚收益的行业,也是竞争最为激烈的行业。而例如社区团购这种新兴商业业态在长沙,也一样为长沙技术圈的从业者带来的新的机遇。
可是彷佛许多行业的开发者们对自己行业知识的兴趣并不大。许多开发者每每执着于对专业技能的钻研,而忽略了对行业知识的了解。而事实上行业知识的认知深度,刚好更能体现产品的水平和公司的专业程度。若是每一个人都矢志于为公司打造最专业的产品,这显然将为公司、为我的带来无穷收获。
软实力是让你我不同凡响的核心关键。他体如今外在,是一我的的谈吐和为人处世的态度。他经过领导力、管理能力、表达能力等许多种形式让你的优势得以更好的表如今世人面前。
软实力,是程序员成功的关键。例如你是否可以与团队成员融洽的沟通,这可以促进你与团队成员间的相互认同、你是否可以将你打造的产品更好的展现在领导或客户面前,这有利于你和公司产品价值的彰显、你是否能用文字或PPT对你的工做进行总结,这又能体现你的组织表达能力。而你在公司与其余同事的良好沟通、与客户的良好沟通,既是在积累人脉,更是在投资将来。
我把运气列入软实力的范畴,是由于我以为运气是很重要的一环,不过若是没有足够的软实力积累,即使有不错的机遇,也不见得有能力支撑住。
在我参加工做的早期,老是片面的认为技术能力才是决定人与人区别的最大关键。可是事实上刚好相反。咱们身边那些混得最好的,他们每每并非技术最好的。他们每每更善于钻研一个行业,并从中发掘出价值。他们每每更注重软实力的培养,并经过这些软实力,得到许多常人不能拥有的机会。
优秀的开发者也善于抓住职场中的每一次挑战。他们将每段职场当作修行和学习的机会,无时无刻不忘提高本身,哪怕在小公司,也一样能创造不平凡的成绩。
短暂的迷茫不可怕,怕的是看到了迷茫还不试图改变,例如知道能力有不足,却依然忽略了对能力的积累。能力的积累历来不只仅只是停留在纸面上的简单文字,再多的迷茫,不如从眼下开始刻意练习和主动培养。例如做为.NET开发者,或许咱们都须要更加深层次的了解C#/.NET技术的核心知识,一本好书《C# 7.0 核心技术指南》将为你解惑无穷。
不管当下咱们作的什么技术,最重要的关键,就是认清楚本身的缺点,而后有意识的去改善。没必要苛求昨天的本身比今天的本身优秀,努力使明天的本身比今天更优秀,坚持一个方向,总能让你得到更多机会。
---
本文版权归原做者和博客园共同拥有。做品采用知识共享署名-非商业性使用-相同方式共享4.0 国际许可协议进行许可。

本文来自: 溪源 | 长沙.NET技术社区。阅读更多精彩好文,欢迎关注长沙.NET技术社区公众号【DotNET技术圈】。