## 程序员的定位
按照广度和深度来区分,编程的方向分为两种:
应用型
科研型
应用型 关键词是『应用』,以 Web 开发为例如:博客、CMS、论坛、电商(B2C, C2C)、CRM、企业内部管理系统、视频、实时聊天、直播、外卖等。跟现实生活比较贴近的,能通过编程来实现产品功能,以此来改进社会生产效率的领域。
科研型 例如在以 PHP + Laravel 为主的 Web 开发中,专注的话题有程序内部架构、设计模式、算法、编译原理、PHP 源码、PHP 原生 C 编写扩展等。这些比较抽象,相比应用来讲比较『抽象』,经常被我们称为『底层』的领域。
### 关注点不同
应用型工程师 主观上把技术当做工具,重点放在如何利用技术去实现产品的商业逻辑上。不拘泥于技术细节,专注点在于要做出来的东西上。
科研型工程师 对技术的态度是追本溯源,他们熟知 PHP 底层的运行机制、变量的底层实现、垃圾回收机制等,甚至接触 LAMP 常见技术堆栈的源码。关注的是代码执行效率和工程合理性。
### 能力区分
应用型工程师能力 的衡量标准有两点,『一是项目的类型要泛,另一个是项目量要多』。当然这些项目最好是独立完成编码或者参与了大部分核心技术架构的设计与实施,如数据库设计、API 机制的设计、技术堆栈的选型等。
以过往经验来看,应用工程师需要经历 5 个以上不同类型,10 个以上的项目才能算毕业。这些项目大部分情况下是自己独立完成的,他们需要对这些项目的技术构架都了如指掌,这要求在接触每一个项目时有意识的去主动学习。
科研型工程师能力 如果说应用型是『广』的话,科研型就是『深』。衡量标准是清楚知悉架构的缺陷,知道当现有架构出现问题时,如何优化。他们注重性能,深入研究各种周边技术。
例如 PHP 领域大拿鸟哥(博客 http://www.laruence.com/) 。鸟哥是 PHP 开发组核心成员,PHP7 主要开发者, Yaf(C 写的 PHP 框架), Yar, Yac 等开源项目作者。
### 舞台各异
应用型工程师 信条是『天下武功唯快不破』,擅长项目的快速开发和迭代。因此他们比较适合开疆扩土、快速推进商业项目上线的场景,创业公司尤其喜欢这类员工。他们也更能适应需求多变,技术堆栈灵活的工作状态。
科研型工程师 相对比来讲比较稳扎稳打。他们比较适合大公司。大公司一般都有比较稳定的盈利模式,商业逻辑变动一般不会不大,也就是说产品稳定。技术部门本着『不求有功但求无过』的思路,底层技术架构很少做太大的变动,再加上用户基数大(大流量)带来的高压环境,为深入研究技术提供了需求和条件,大公司也是培养 科研型工程师 人才的沃土。
### 如何选择方向
决策的因素会有很多,例如个人喜好、特长什么(例如有些人逻辑推理能力强,有些人数学好,有人产品意识高),这些我们就不展开了。
这里推荐从自己的目标出发,也就是 :
>你学编程的终极目标是为了啥?
如果你学编程就是为了以后某一天可以出来创业(你怎么这么想不开啊),做技术合伙人或者自己主导创业,然后走向人生巅峰 ~_~。大部分初创的科技公司技术负责人必备技能是:组建技术团队,并带领他们推进产品上线和快速迭代,熟知各种互联网产品的功能,以及清楚地知道这些功能的开发难度,懂得在开发效率和商业机会上权衡,懂得如何避坑。那么推荐你从现在把自己定位为 应用型工程师 ,然后开始积累项目经验。可以理解为打怪升级,不惜一切代价接触新项目,积累一个个的项目经验,10 个项目算毕业,30 个项目算资深。
如果你的目标是进大公司,也就是抱大腿走稳定路线,那么推荐你把自己定位为 科研型工程师。从今天开始死磕文档,把主要相关技术文档看很多遍,阅读各大开源项目的源码,可以尝试参与源码贡献和改进,或者写一些高性能的原生扩展。
### 怎么样才算熟练掌握了这一门技术?
方向选好后,就好办多了。
如果你是 应用型工程师 ,那么在你做了几十个项目后,一般项目中经常用到的技术,你都很熟练了,并且随着每一个项目经验的累积,眼界的提高,你也会越来越自信。
如果是 科研型工程师,不断深入,穷源竟委,长此以往数年后必会有所建树。届时你的深入细致的博文,或者技术文献,或者开源影响力,都会成为你骄傲的成本,自然也就不会有『算不算掌握了 XXX』的疑惑了。
## 广度为辅,深度为主
记得之前看过一篇文章,说作者在初入开发的时候,技术总监和他说,如果你能确定一个方向,比如数据库,那么持续学习5年以后,就是一个数据库专家。这个作者就真的坚持下去了,若干年后,他的很多同事还是各种语言都会写helloWorld的工程师的时候,他已经是数据库方面的专家了。
### 1.广度为辅,深度为主
人生、时间有限,我们不可能精通所有的技术,但我们可以努力地精通工作相关的、有前景的、感兴趣的技术。
### 2.基础扎实,深入底层
只是解决工作上的问题是远远不够的,应该在工作之余去学习更底层的技术,所谓知其然还得知其所以然。比如说我们使用java做开发,仅仅会使用是不够的,我们还得再理解JVM的原理等,多多思考:为什么要这样用?怎么实现的?还有更好的办法去实现吗?
### 3.触类旁通,适度学习
学任何的知识都要形成一个体系,才能学得深,记得牢。
## T 型人才
什么是T型人才呢?
T型人才是指按知识结构区分出来的一种新型人才类型。用字母“T”来表示他们的知识结构特点。“—”表示有广博的知识面,“|”表示知识的深度。两者的结合,既有较深的专业知识,又有广博的知识面,这类集深与博于一身的人才。
如何成为一个T型人才,大家常用的一种方式就是轮岗。轮岗的意思是,当你成为某一方面的专家后,跳出自己的舒适区,转而到一个新的技术领域从头学起。轮岗的意思绝不是在一个技术方向上三心二意,每一次转换技术方向,都应该是对前一个技术方向至少做到熟练掌握的程度才行,而我自己觉得,不经过1-2年的实践,很难称作熟练掌握。所以,轮岗的行为是低频的。
如何正确的做一个技术 T 型人才,这儿有一些建议:
1.制定自己的职业发展路线;
2.技术和兴趣结合;
3.选择热门、成熟的技术。
最后,借用莎士比亚的一句话:笨蛋自以为聪明,聪明人才知道自己是笨蛋。做技术先有深度,再有广度,然后脚踏实地的去做!
## 如果要放弃技术,如何优雅的从技术转产品呢
不考虑,不支持,没有建议。
参考:
https://learnku.com/articles/37834
https://blog.csdn.net/qq\_36330643/article/details/82820377