# 技术方向如何选择

方向对了,努力的价值才会发挥出来。

# 考虑因素

# 兴趣

很多做开发的都是出于兴趣;

# 就业机会

考虑地区、特定行业的市场需求;

# 难易程度

通常来说由易到难会容易实现并很快得到成就感;

# 薪水

都是成年人,有点功利心很正常,对于工作和未来发展前景将薪水涨幅作为参考因素不丢脸。这个可以去专业的招聘网站、薪酬报告等去了解查看;

# 未来发展前景

大家都不想看到选择了一门技术在 n 年后没市场、没需求和没人用了。做选择时通常会有2种考虑:

1.卡位将来市场缺口 即将来会用到的技术,因为存在稀缺性所以会更有价值,需提前介入,让自己在未来更具竞争优势。这个需要做好市场需求、未来预期和技术本身发展程度的分析。

2.稳定经典的技术 选择当下稳定经典适合当下。

通常是做好当下放眼将来嘛。

# 朋友推荐

即是朋友推荐的技术,或者说你看到好友在某技术领域混的很不错。

# 团队技术推荐

所在团队技术图谱对我们的技术选择还是有很大影响的,毕竟每天耳濡目染的。

# 相似性

当我们掌握一门技术后,再学习一门新技术时,可根据掌握的技术来选择相似性技术,便于快速上手。

# 互补性

相似性技术虽然容易上手,但是互补性技术能够更好地完善和补充我们的技术图谱,给自己带来更大的竞争力。

# 新人如何选择入行

# 有目标

比如哪个城市工作、哪个行业、哪个领域、什么样的公司和做什么样的产品。

有目标才会有动力,效率也会更高。

# 没有目标

那可以根据兴趣、就业机会、薪水高低和难易程度等选择,最讨巧的是到各专业招聘网站看用人单位对技术需求量来选择,后期技术提升了再设定目标选择是否更换。

# 自主学习

1.网上资源

  • tutorialspoint,英文版,各种入门教程,你想到的语言和技术框架都有;
  • w3school,中文文档;
  • B 站,技术视频有很多,最新动漫新番,ACG 氛围,有创意的 Up 主;
  • 慕课网,程序员的梦工厂,有很多免费课程,当然收费也很多;
  • 网易云课堂,有很多免费课程,当然收费也很多;
  • 腾讯课堂,有很多免费课程,当然收费也很多;
  • 中国大学 MOOC,有很多免费课程,当然收费也很多;
  • Github,全球最大指南网站,有很多开源项目托管;
  • 码云 Gitee,有很多开源项目托管;
  • codepen

2.线上线下互联网大会

通常这种大会,很多是方法论,但是能给你打开视野,让你对技术有不一样的认识,也能挖掘潜在能力,避免埋头于公司繁重的业务中。你也可以交到很多同行并且得到很多内推机会。年轻爱折腾可以多参与,有一定工作经验的也可以通过大会差缺补漏自己的技术图谱。

# 公司有人带

太幸福了,如果公司有技术沉淀,又有老人带着做项目,那将会事半功倍,提升效率很快,当然还得自己能下功夫。

# 经历阶段

会经历能力提升阶段、体系构建阶段和整合创新阶段。

# 能力提升阶段

这个阶段是初级阶段,也是技术束缚阶段,为了做事情,得学会基本能力,即我们所说的了解 API,这就是专项能力的提升。

通常这个阶段持续时间因人而异,通常会是 1~3 年,如果超过这个时长 1.5 倍以上,那么你就要考虑下的学习方法如何改进了。

# 体系构建阶段

这个阶段是技术塑造阶段,你已经掌握了专项技能了,这个时候要做的事构建自己的技术图谱来解决问题。

这个阶段需要 2-3 年,经历 2~3 个中大型项目的迭代开发来完善自己的技术图谱,然后继续深耕 1~2 年,不断重复技术图谱中的专项技能。当一切成熟时,你可能已经工作 4~8 年了。

可以做个总结:如果说你的已经工作 8 年左右,技术图谱还很散乱,东一榔头西一棒槌的,还不能好好组合在一起灵活使用,那么这些年的工作有一部分是重复机械的工作,换句话说就是啃老本,没有得到应用的成长,那么你也要考虑下的学习方法如何改进了。

这里补充下,技术图谱构建过程中,会有 2 个方向:

  • 技术相近,和当前所用语言、技术框架比较接近的其他语言或框架;
  • 技术互补,能够组合在一起完成特定任务的技术。比如学习 Node.js,那还要学习的可能有 MongoDB、 MySQL、redis 等。

# 整合创新阶段

这个阶段是反哺问题本身阶段,你已经走出技术束缚和技术塑造阶段了,已经具有丰富的实战开发经验了,具备 T 型知识结构,能够融合不同领域的知识点,快速构建解决各种问题的属于自己的思维框架了。

那如何检测呢?

场景:当遇到一类问题时,不再是自下而上思考,即技术好不好实现、拿技术定义(裁剪)问题点,而是从技术实现细节跳脱出来,站在更高层面由上而下去分析真正的问题是什么、问题的现状和如何产生的。有些问题是伪问题,你要找到问题真正的痛点在哪,然后再到技术层面考虑实现,此刻还要考虑用什么合适的技术,而不是受限于或拘泥于技术本身。

# 技术转型

# 为何转型

# 主动型,即自我追求。

有强烈渴望参与到新技术、新市场中去。此刻方向和目标都已明确,用什么技术、要做什么和怎么做也很清楚,当下要做的是抓紧一切时间去学习目标技术、了解目标市场,寻找进入目标市场的机会,伺机而动。

# 被动型

公司业务需求,需要了解一种新技术来满足业务支撑。

# 如何转型

# 关联转型

原来技术不丢开,再次技术上继续升级。

# 抛弃原有技术

这个比较难,也需要很大勇气,毕竟很多技术积累的价值都在这个方向上。或许原来技术在一定程度上能帮到自己,但是在语言设计上和语言语法上有很大不同。但是,反过来想,在一个方向沉浸越久,就越难放弃它去尝试新的技术、新的可能。

# 卡位

就是卡位市场的缺口,学习将来稀缺的新技术,这是不错的选择,也需要很大的勇气和毅力,要耐得住寂寞。这个阶段,基本都是没人可能现场帮助你,需要自己不断探索。通常,这类转型是在工作之外才有时间去完成,所以要给自己定个学习目标,逐步实现。

合理利用当下工作中的机会来实践新技术,我觉得是检验学习成果的最佳方式,技术人员要勇于尝试,不要怕多花时间和精力,有现有平台提供锻炼不是所有人都有这样的机遇的。如果说在工作中无法应用新技术,那可以利用业余时间,下班后或周末看书、看课程和做练习等。对于时间分配,如果抽不出时间,建议做个一周记录,看看每天除了睡觉,分析时间花在哪儿了,再重新规划自己的时间。

# 方案选型

方案选型时,最终要的是现实可行、成本可接受,即综合考虑各种因素。

# 适当技术解决适当问题

很多开发者容易被技术塑造、束缚。比如习惯用自己熟练的语言或技术解决一切问题,拿着锤子看啥都是钉子,都想上去钉两下,这是要不得的。

新产品或新项目选择技术方案时,一定要跳出自己已经掌握的技术,站在问题场景去思考来选择技术,这样才是适合的技术方案,后期的开发与维护才会更便利。

# 新技术成熟度

有的开发喜欢折腾新技术,什么技术新就用什么,把公司项目或产品都当做试验田,而不考虑试错代价。与个人来说确实能积累可贵的实战经验,但与公司而言,就是一种灾难。选择新技术一般要参考几个点:

  • 该技术有没有顶级公司支持;
  • 有没有知名产品使用它并做推广;

# 团队技术图谱

方案选型,团队技术能力也是要考虑的进去的。毕竟,轮岗问题得要解决。

# 生态

生态说到底就是遇到问题能找到交流的人讨论、能快速找到合适的人来开发,也有合适框架使用。而不是公司离了某人就很难做下去。

# 新技术引入成本

包括学习成本、招聘成本、时间成本、机会成本。

# 学习成本

任何新技术都是需要的,具体看技术难度对对团队成员学习难度如何了。所以引入新技术,要结合现有技术积累来做分析。不要挖坑坑自己也坑别人。

# 招聘成本

为了新技术招聘社会开发人员时就会产生招聘成本,包括笔试、面试、时间、新成员和团队成员的磨合等,成本非常高。

# 时间成本

新技术学习到最终项目产出是需要一个周期的。这个周期分为 2 段:Demo 周期和成品周期。

# 机会成本

引入的新技术在 Demo 周期或成品周期结束后,发现选错了,要么重新选型,要么后期开发和维护要付出很大成本。

# 借助工具