IT人的提升实操心得

对着背影说爱祢 提交于 2020-10-27 15:04:49

这里记录下第一次和大佬级别的人物对话,事先准备了一堆问题,可临了又说不出个所以然,忐忑呀,不过挑了几个重点的问题,骆总给我的回复也是一针见血,指出了我现阶段存在的种种问题,道破了困扰许久的问题,我相信我目前遇到的,存在的问题也是大多数求职进阶路上的coder们正在面临的,或者已经经历过了的,轻喷。

从事IT行业,不管是主动还是被动,大家或多或少看到了他的发展,也预料过他的前景吧,尤疫情之后,蓬勃生机常在,就20日晚蚂蚁公司整栋的狂欢,作为拼命一线的码农来说,一夜之间的百万财富,我预想得到他们的欢呼是有多么的歇斯底里,歌声是有多么的嘹亮,这么看来从事这个行业真的是西天取经的路。

但是不少人会说我卖职业诱惑,我想卖职业诱惑的事交给培训机构就行了,我不卖诱惑,也不贩卖焦虑。

提起职业焦虑,35岁的梦,IT人的痛,从前段时间的996.ICU到如今的软件园跳楼事件,真的莫名觉得惋惜,5年的工作经验,忍忍总会过去的,翻越大山的人,最后被小石子绊倒了。但愿天堂没有加班!文末我会针对职业焦虑阐述下自己的一些看法。

下面是我这次对话的记录总结,提醒我自己,也鞭策我自己。

 

第一:如何学习?怎么学习?怎么快速突破自己?

从事这个行业,我的工作年限不长,差半年到三年了,给我的第一感触就是需要花费大量的精力学习,不停的“缝缝补补”,不间断断的磕磕绊绊,但苦于市面上可获取知识的地方太多,渠道庞繁纷杂,那么怎么找到合适自己的方法,快速且高效的查漏补缺?进而快速进阶突破技能边界,掌握更多更深入的技能呢?成了一个难题.

 

认清自己整合四象限

整合四象限,这里有个前提,是对自己清晰的认识,我这里先借用骆总的片段原文,怎么样才能有自我定位的清晰认识。

1、职场的基本技能

  • 沟通协调能力:学会听懂诉求、沟通中控制好情绪
  • 写作能力:有结构性,同时避免口语化
  • 归纳总结能力:有逻辑性,做好分类、分层、分条
  • 表达能力:理解到位,表达精简,善用结构化思维

2、专业技能

  • 专业技能的宽度和深度是否满足日常工作的需求?是否满足当前职级的要求?
  • 晋升到下个职级还应该具备哪些专业技能?

3、软技能

  • 思考能力:不是人云亦云,凡事有自己的判断
  • 规划能力:做事情有条理、有明确的计划
  • 积极主动性:不因为自己不会而推辞,做事不设边界
  • 做事认真:同一件事,有人是做了,有人是做好了
  • 良好的工作投入感:靠不靠谱取决于你的投入度

职场的基本技能一定要从职业生涯初期就开始有意识地培养,软技能越往后期会越重要,随着年纪的增大一定要注意培养出自己的核心竞争力(不可替代的能力,有你会做得更好)

有了对自己的清晰的认识,我这里建议合理安排时间,做到高效学习,怎么安排时间呢,我个人常用的两个办法,我这里推荐下。

 

第一是时间四象限:源于管理学家史蒂芬·科维提出的一个时间管理理论,将日常工作分类,每天下班回来,排列一些计划,可以的话按照时间先后排序,再根据四象限的重要程度,重新评估。

  • 目前(正在做,或者1-2天之内会做的)
  • 短期(3-5天的计划,一般一周一个小计划)
  • 中期(最好以一个月为限,每个月底审视自己比上个月付出了哪些,获得了哪些,这里有大用处,后面会说)
  • 长期(最后是近两年的计划,长期的计划不建议操之过急)

 

最后根据以下四象限处理原则进行重新排列,审视排除掉一些垃圾任务(指不必要的,收益微乎其微的),过度任务(即不一定坚持下来的计划,中途会发生大风险的计划)和超载任务(指不可能按时完成的"鸿鹄之志")

如果说针对日常工作和学习无法排列计划,或者觉得什么计划都是重要类型的小伙伴,建议看看山下英子的《断舍离》

 

熟悉我的小伙伴们都知道我有句口头禅,也是我用来激励自己的。搞技术能走多远,不看你工作的8个小时做了多少,而是看你8小时之外的时间用在哪里去了?希望每个小伙伴都有自己的清晰的目标,并为之安排得明明白白。

 

第二是工具:我常用的时间任务管理工具,我推荐滴答清单,一个帮你高效完成任务和规划时间的应用,是一款拥有跨设备云同步、周期提醒、清单管理、清晰分类、协作和集成日历的应用,你可以在Web、Android、iPhone等设备使用,目前我是电脑端和手机端同时使用,同时集成了小番茄,我知道大家对番茄工作法情有独钟,可以让你在沉浸的环境中专注做事。

 

主要记录在工作、学习、生活上的一点一滴的进步,你可以查看每周的“完成率”和“最佳工作日”,在“最近已完成”了解近期取得的成果,通过“最佳专注时段”找到注意力最集中的时间段。这里我就介绍到这儿,再说下去就未免吹拉弹唱了…

感兴趣的可以自己去看看,免费的功能也很赞哦!

 

 

第二:强调输入和输出

 

我先放一张图,每个学习方法得到的回报收益比,在后面,其实也是针对了对技能,知识的一种掌握程度。

以上图中每个方法我就不一一阐述了,很浅显的字面意思,我想重点说的是,主动学习部分。

 

主动学习总是比被动式的好得多,我不相信车到山前必有路那一套,车真的开到了丛林大山的时候,不是事先挖好的路,除好的草,填好的坑,你能开什么样的车过去?

 

所以针对我之前第一小节提出,有了自我的清晰认识之后,预先学习,我见过很多新同事,公司在使用Mybatis的时候,在准备用redis集群的时候,才去了解云云,这些基础的,大众的,热门的,如果我们打提前量,预先就学习过,使用过,在上司面前拍胸脯说我会,我能,我行!最后交出一份满意的答卷,他不香么?

 

针对学习,找到自己的薄弱的地方,是整体还是局部薄弱,先模块后体系的提升。怎么理解先模块后体系呢?

 

比如spring-cloud-alibaba微服务解决方案,对于他的学习怎么做呢,我这里仅提供下个人方案:

首先:了解概念,做什么的?

Spring Cloud Alibaba是阿里巴巴结合自身的微服务实践开源的微服务全家桶…

其次:有哪些组件分别是什么功能,怎么做到的?动动手自己实践下

  • 流控制和服务降级
    • 支持WebServlet,WebFlux,OpenFeign,RestTemplate,Dubbo访问限制和降级流的功        能。它可以在运行时通过控制台实时修改限制和降级流的规则,并且还支持监视限制和        降级度量标准。
  • 服务注册和发现
    • 可以注册服务,并且客户可以使用Spring托管的bean(自动集成功能区)发现实例。
  • 分布式配置
    • 支持分布式系统中的外部配置,配置更改时自动刷新。
  • Rpc服务
    • 扩展Spring Cloud客户端RestTemplate和OpenFeign以支持调用Dubbo RPC服务。
  • 分布式事务
    • 支持高性能且易于使用的分布式事务解决方案。
  • 阿里云对象存储
    • 大规模,安全,低成本,高度可靠的云存储服务。支持随时随地在任何应用程序中存储        和访问任何类型的数据。
  • 阿里云SchedulerX
    • 准确,高度可靠,高可用性的计划作业调度服务,响应时间在几秒钟内。
  • 阿里云短信
    • 阿里云短信服务覆盖全球,提供便捷,高效,智能的通信功能,帮助企业快速联系客户
  • 事件驱动
    • 支持构建与共享消息系统连接的高度可扩展的事件驱动微服务。

基本名词解释:

Gateway: 服务网关

Nacos:服务注册与发现

Nacos:配置统一管理

Sentinel:服务限流

Sentinel:服务熔断降级

Seata分布式事务

 

最后:学习完整个知识点或者方案,在回过头来看,能不能理解他的原理,将自己知道东西串联起来,比如这张原理图

 

或者将自己的理解,按照下图来串联,形成自己的理解或者方法论,他不香么?

 

上面说了输入,这里就简单提下输出,有进不出那是大胖子,我们要做到的是,保持匀称的身材,帅气的外表

尝试逼自己输出,不管是给人讲还是形成自己的技术博客,或者论坛畅讲,把自己淌过的坑,踩过的雷分享出来,帮别人答疑解惑也好。如果能回答上,是对自己已经掌握知识程度的一个巩固,如果回答不上,则证明自己还有继续深挖的空间!奥利给!

 

这里推荐几个地方写:CSDN,博客园,开源中国,掘金,简书,知乎(排名不分先后),当然公众号也是一方小小的阵营,不过别小瞧输出,不光能检验自己的掌握程度,也能分享给更多人,帮助他们收益。也能形成自己的个人IP(当然是长期的有质量的)或者对面试求职发挥大用场(一般人我不告诉他)。

 

第三:基础、繁琐、老旧的项目开发工作里面怎么去提升?

工作几年,在CRUD中不停的打转,在面向接口编程中不断的调来调去,我们一心想学习高大上的技术,运用上然后捣鼓出自己小小的满足感,但是面临的现实是很多的coder都是重构,或者接手"祖传代码",于是我们问自己,面试要求的造飞机手艺不需要了么?是我不行,还是飞机只是个饼!于是我们迷茫了。

 

在面对一堆需要重构的项目,或者"祖传代码"时,我们能做的有哪些?首先我认为的点:

 

  1. 了解自己所负责模块的业务逻辑的来龙去脉,知道一些典型系统设计方案以及其针对的问题,还有优劣比较。
  2. 梳理项目的上下游关系,最好形成图谱,由点出发,提炼出全局观,对整个全貌或轮廓有自己的认识。
  3. 对于老旧的技术栈,不要灰心泄气,可能在其中也存在着精华之笔,沉下心挖掘其中好的方法,好的构建思路,你要相信三人行,必有我师,如果实现发现不了,对自己也是一个回顾和提升。
  4. 最好是之前接触过一些实际的系统。在此之上,才有可能把合适的设计套用到当前的业务逻辑上,把现有的业务逻辑抽象成一个已经存在(部分)解决方案,或更经典的方式,更加有利于后面的开发工作。

 

或者说是接手一个稳定性不好的系统,如果没有足够的时间从头设计、完全重构。那么至少要知道影响稳定性的几个关键要素,然后根据重要性、紧急性和解决问题需要的资源(时间、技能集、人等)进行优先级排序,逐个击破。对于所有的改善型动作,确保有适合的评测和监控,这样能够知道不同的措施效果到底是怎么样的。

 

贴合工作场景,分析具体问题,深度思考问题背后的点,挖掘出技术价值的共性,实现触类旁通的学习开挂之路。

怎么理解上面这句话呢?下面我就举个例子,假如给你一个任务:分析调研一个word或者html转化pdf,并实现这个功能,可以考虑的点在哪里呢?

 

大的维度考虑:

第一:需要使用到外部依赖么,第三方存在商业版本还是开源版本?

第二:转化性能和安全性怎么样?

第三:实践起来的难度怎么样?是否支持跨平台?

第四:转化效果是我们可以接受的么?是否存在格式化问题,样式问题,是否支持多格式转化,即方案的可扩展性怎么样呢?

小的维度考虑:

第一:功能好封装么?自己去封装为简单易用的工具类,底层原理方便理解么,出现问题好定位么?

第二:怎么移植到项目中对现有代码的改动影响范围最小?

第三:是否可以做到异步化转化,结果获取方便么?

第四:转化为pdf后续功能可以会用来干嘛,是html页面在线预览但是单纯下载,作为开发者我们可以考虑的后续需求的变更,对可扩展性这块是尤为关键。

最后

即便是刚进入行业的小白,拿到这个任务也可以从IO处理的方法上下手,对字节输入,输出流等进行再一轮的巩固和学习。

 

如果我们不能改变现状,上帝给了我们发了一副烂牌,那么你就要当那个雀神!

发现问题,处理问题,挖掘价值!

 

第四:主流太多,怎么选择?方向不对,贪多嚼不烂

现在应该是马不停蹄的学习新技术还是从底层结构,网络开始?亦或者对计算机系统深入研究?还是追逐潮流,去学习大数据,AI人工智能。

 

主流的语言层出不穷,技术栈更迭更是日新月异,那么我们应该掌握什么,选择什么方向去攻坚?

到了这个选择的阶段,证明你有看一定的工作经验了,能看得清那种语言是主流,是未来极具发展潜力的,到了这个阶段的你,用一句三太子敖丙的口头禅:你知道的越多,你不知道的越多,那么怎么选择呢?我只想说适合自己的才是最好的。

 

于是又会有人跟我说,他迷茫了,彷徨了,不知所措了,我还记得我当初接触到Java的时候,第一次配环境变量到从6点到晚上11点多,整整用了我5个小时,现在说出来也不怕别人笑话,好笑,但是我找到了我感兴趣的东西,真正want的东西。那股兴奋的劲头,用成都话来说"打脑壳"(上头)。

 

看清自己未来的路,这个迷茫我觉得来自于对自身的定位不明确。如果你还看不到自己未来发展的路,那么可以考虑把眼界放的更广一点,去找寻自己真正感兴趣的方向。所谓真正感兴趣的,是指如同熬夜打游戏一样毫不困倦,如果某个方向你能做到不是公司强迫你加班,自己写代码写到深夜或者通宵也毫不厌倦,那么这一定是你感兴趣的。方向一旦确定就不会迷茫,朝着目标狂奔吧!

 

最后我谈谈个人对职业焦虑的看法

 

焦虑的原因来之迷茫还有与年龄相匹配相关的压力,当然还有众多营销号贩卖的焦虑,我这里总结下迷茫,迷茫的来源有二个,一是看不到自己对公司的价值,二是看不到自己未来发展的路。

 

先说迷茫的来源一,看不到自身的价值。很多人每天在公司写业务,俗称“搬砖”,每天都搬,感觉一点长进都没有。回过头来看框架部门的人或者自己部门的研究员,每天都在研究或者做一些框架或者工具。当有大量的人使用的时候,就会很有成就感。并且认为业务没啥技术含量,业务里面的逻辑和流程在换了一家公司以后就没有任何优势了。这种想法其实是不对的,是错误的片面的。

 

再谈谈迷茫的来源二,看不到未来的路在何方。这个迷茫我觉得来自于对自身的定位不明确。一位老师和我说过,毕业后的头3年,你可以去选择各种开发,前端后端或者移动端,可以随便选。这是为了什么呢?就是为了找到自己感兴趣的和自己的长处并且打算一辈子一直做下去的方向。如果你还看不到自己未来发展的路,那么可以考虑把眼界放的更广一点,去找寻自己真正感兴趣的方向。所谓真正感兴趣的,是指如同熬夜打游戏一样毫不困倦,如果某个方向你能做到不是公司强迫你加班,自己写代码写到深夜或者通宵也毫不厌倦,那么这一定是你感兴趣的。方向一旦确定就不会迷茫,朝着目标狂奔吧!

 

所以不管外界是怎么贩卖焦虑,我觉得我们首先应该做好的是自己,结合第一小节的对自我的审视,你可以把自己的能力,拆解下,看看你的能力集中在哪几块:

 

技术广度

对MQ、缓存、NoSQL、大数据、高并发、高可用、微服务,等一系列的相关技术都有一定的了解,熟悉常见功能

在自己的项目里落地使用过,有一定的技术使用经验

 

技术深度

读过Kafka的底层源码?

对消息中间件的架构设计思想有深刻的理解?

对分布式事务框架/中间件的架构设计有过研究?

在每秒百万并发场景下做过底层系统的深入优化和故障处理?

 

项目经验

你有没有整体负责过几亿注册用户,几千万日活用户的大规模、高并发、分布式、高可用、高复杂度的系统架构设计?

或者你负责的一直都是那种公司内部使用的,几十个人用的OA系统,CRM系统?

 

团队管理

你在互联网公司里带过20的团队?

或者你在一个传统IT公司里带过3个人的小组?

以上的能力也就产生了不可或缺核心的竞争力,关键不是看年龄,在于自身是否存在足够的竞争力,且目前能力是否是这个年龄段应该有的。

我认为不管外界的种种大佬成功学是怎么的云集,财富自由被吹嘘得如果乖张,也不管技术更迭是如何如何的新潮,核心的问题,在于内省,在于每天和自己对比,有没有取得长足的进步,我在文章开头用了中期目标,为什么定月为单位,因为对照计划,对照每天的安排,小小的进步取得大大的收获,如果发现进步不大,上个月的计划是否合理,反思接下来的安排应该怎么做,是否做到了问心无愧,如果有了长足的发展,那么恭喜,给自己大大的一个赞吧,这样阶段行的鼓励和反思会让人慢慢坚持下来,养成习惯,过好平凡而美好的每一天。

用曾公的话来说:循理不见须臾,内省不疚,故心泰。(曾公:曾国藩)  

 

最后用骆总一句话总结全篇:

关键在于:认清方向,行动起来,勤奋,再勤奋!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!