经历了2018年末的阵痛,大家都积攒着一股暗劲蠢蠢欲动。
即将迎来2019年互联网行业换工作的大潮,技术工程师的升级换位对于一家互联网公司来说无疑是命脉般的存在——技术强则公司强!
如何做一个抢手的技术工程师呢? 按部就班996、完成项目、清理Bug、储备技能,这些就够了吗?
我邀请到携程的一线架构师James,相信他数十年经验也许能给正在找工作的你一些启发。
James,十余年Java行业经验。曾就职于携程、人人网等一线互联网公司。 专注于java领域,精通软件架构设计,对于高并发、高性能服务有深刻的见解 ,在服务化基础架构和微服务技术有大量的设计和建设经验。
同时,他也是携程平台的技术评审官,负责对新员工的转正评审工作,对技术人才的选拔及考核颇有心得。小到大学校招,再到工作2-3年的研发工程师,再到资深系统架构师都经常需要他把关面试。
以下为专访内容整理
■第一类:面试总失败,找不到合适的工作怎么办?
很多面试的失败,不是因为技术能力不行,而是给出的回答并不是面试官想要的。面试是有目的性的考察,同样也需要有目的性的进行准备,知招拆招。这就需要你对这个公司整体的业务、还有你面试的业务有很深的了解,同时也需要针对个人之前的工作经历,进行相应的匹配,给出面试官他想要的答案。(Tips:会说话很重要,也是大多数工程师欠缺的)
■第二类:没有方向感,不知道自己应该如何提高自己怎么办?
很多刚参加工作的同事经常问这个。问题本质很简单——如何由学校的被动学习,转变成职场中的主动学习。
这里有个小经验,给自己准备一个Todo的列表,把工作中遇到的不了解的,感兴趣的内容,先记录在Todo列表中,有了空闲的时间,就从Todo列表中挑选一个跟目前工作方向最接近的,或者自己最感兴趣的、或者是自己职业规划中需要掌握的内容,进行学习。
■第三类:我这个工作任务没什么技术含量,我不愿意做,该怎么办?
其实一个技术人,不太可能上来就直接进行核心项目的核心业务开发,一般都会有一段磨合期。通过在小任务中的表现,来逐渐获得领导的认可,进而逐渐获得核心项目的研发机会。
另外,并不是小的任务就没有技术挑战,如果可以在任务场景中多一些思考,仍然可以从中有所收获。不能眼高手低,从一开始就纠结选什么项目,往往容易丢了西瓜捡了芝麻。
■问题一:面临有挑战的任务和项目
开发工程师有自己的OKR,一般都是按部就班的完成自己的任务,但难免会临时插入重要且紧急的需求,或者接到难度较高、很有挑战性、需要自己探索的任务,很多技术人没法平衡这种压力,会把自己搞的很烦躁,甚至一怒之下冲动辞职。
我在微博也经历了很多重要的项目,大小不一,但最难、印象最深的就是做一个跨语言服务化的项目,这个项目不是一个新业务的研发,而是一个需要配合不同语言体系,不同架构的业务的中间件方案研发。这个任务最大的困难就是业界没有合适的方案进行参考,需要根据微博自身的需求、自身的业务特点,进行探索、研发、演进,一开始整个团队都很难推动开展。
但很快我们就进行了任务的拆分和细化,在这个项目中,我们从最根本的业务需求出发,设计各种方案,快速试错,逐渐演变成,与业界服务化最新趋势Service Mesh思路不谋而合,我们设计的Weibo Mesh成为了Service Mesh方向上为数不多的大规模应用方案之一。
困难就是机会,面对突如其来的任务和挑战,合理的调整自己的心态,相信问题总是可以解决的,将自己的模块做到极致,也需要和团队打好配合随时补位。
■问题二:组织架构的变动
现在的互联网节奏飞快,可能项目做了一段时间就被毙掉,在外人看来的高薪且稳定的技术人也要面临裁员和转岗的变动,2018年年底也看到了很多工程师被裁员的新闻。这种非主观意愿的变动,很容易让人难以接受进而对自己能力产生质疑。
我也曾经历过这种变动,当时加入到微博主要是负责支付相关的业务,后来因为组织调整和方向的变动,进行了调岗,当时的心态就比较波动,一是觉得业务不熟悉自己可能无法开展工作,二是心理上有一定落差担心与人沟通变得复杂。
年轻的时候心态调整是很难的,不过我觉得失落肯定是没用的,积极的在找解决办法。当时我快速了解新的工作,学习相关的领域知识,努力打造自己的技术品牌形象,也最终和这个团队融入的很好,得到了大家的认可。
经此调整,我发现工程师的立足根本永远是技术能力,无论是熟悉的领域或是不熟悉的领域,都需要能快速适应。我觉得面对这种问题,最重要的是提升自己的技术能力,不要将技术能力与业务绑定,也不要自怨自艾沉迷在颓废失落的情绪之中。
■问题三:机会的错失和争取
之前的两点主要和日常工作相关,但整个技术人的职业生涯发展,都面临着机会的错失和争取。我发现大部分技术人都深知要努力提升自己的技术,相信只要技术好就能走天下的理论。但升职加薪的机会来临时,他们却往往抓不住。这个机会可能是一次职级调整的述职,也可能是一次换工作的面试.....
我在刚毕业1年半的时候,错失过一次人人网的入职机会,当时的人人网还是鼎盛时期,是个金饭碗。面试失败的原因可以归结为2点:
1、忽略了面试前基础知识的复习,从投简历到面试只有一天时间,基本等同于裸面;
后来我面试携程时,吸取了失败的经验,进行了充足的准备。对面试的工作岗位也进行了详细的了解,当时面试的支付相关的岗位,我还专门在简历中突出了自己的做过支付的相关经历,顺利拿到了Offer,从而为自己之后的发展铺好了路。
在我看来,一个最大的挑战是:很多工程师在工作时,没有从业务角度进行思考,甚至有时仅盲目的按照研发任务进行开发,虽然工作量很大,但在晋升时实际收获却并不理想,自己心里也会委屈。
技术工程师的晋升,其实最主要的是看重工作成果。这种成果一定要由量变引发了质变,比如你为了提高大家的开发效率,开发了一个公用平台,节省了很多时间;或者你研发的东西,解决了公司的一个技术难点,这些比埋头苦干不计结果更有用。仅仅做常规的工作,很难让别人看到你。要想成功晋级,我给大家4个建议:
1、从业务角度、产品角度思考问题,思考如何能在业务角度更好的为公司产生价值
2、目的性要明确,随时做好进度规划
3、工作或阶段性任务完成时,要及时做总结,既有助于发现不足日后进行改进,也有利于后续晋升答辩时提前准备内容
4、在工作中要尽量树立起自身的技术品牌。例如言出必行、技术问题排查与分享等
求职:基础知识的掌握和逻辑思维的培养最重要。实习经历是非常重要的加分项,如果没有实习经历,可以自己进行一些小项目的开发或阅读经典框架的源码。
职场:工作前1、2年切记心浮气躁,先打好基础,注意知识广度的培养,保持对新技术的好奇心。
求职:基础知识是重点考察对象,对于知识的了解深度、项目、架构的理解是非常重要的加分项。
职场:需要多一些主动思考,培养自我学习能力,要有意识的加强锻炼团队协作、跨团队沟通、项目设计等能力
求职:项目经历的考察是重中之重,对问题的解决方案、架构设计都会有较高的要求
职场:这个阶段最重要的是树立起自己的技术品牌。要经常思考业务或项目中存在什么样的问题(不仅仅是技术方面的问题),如何解决,解决后的收益是什么。对于管理能力要进行有意识的加强
我们应该在不同时期应该培养不同的能力,才能在机会来临的时候更有底气。
学习首先你要有个框架,就像书的目录一样,先梗概后细节,在自己的脑海里建立一套知识体系,再一块一块的填满。在如何争取到好的机会这方面,我也将自己多年的面试经验,梳理出成套的面试方法论,结合拉勾的面试大数据,给大家共享一些面试的知识点和技巧。
有了大牛的代码功底之后,接下来可以更好地学习分布式架构技术。
透彻理解分布式架构的好处和优点必然性,适应市场需求,能够去找一些更大的平台发展,提升自己的综合技术能力和薪资。
了解从传统架构到分布式架构演变过程所带来的技术变革,将理论和实战相结合,透彻理解分布式架构及其解决方案。
从分布式架构原理,到分布式架构策略,再到分布式架构中间件,最后在加上分布式架构实战,让程序员可以在技术深度和技术广度上得到飞跃的提升,成为互联网行业所需要的T型人才。
大家都知道,性能一直是让程序员比较头疼的问题。当系统架构变得复杂而庞大之后,性能方面就会下降,如果想成为一名优秀的架构师,性能优化就是你必须思考的问题。
所以性能优化专题从JVM底层原理到内存优化再到各个中间件的性能调优,比如Tomcat调优,MySQL调优等,让你洞悉性能本质,全面认识性能优化,不再只是旁观者。
这张图详细介绍了源码中所用到的经典设计思想及常用设计模式,先打好内功基础,了解大牛是如何写代码的,从而吸收大牛的代码功力。
结合Spring5和MyBatis源码,带你理解作者框架思维,帮助大家寻找分析源码的切入点,在思想上来一次巨大的升华。
随着业务的发展,代码量的膨胀和团队成员的增加,传统单体式架构的弊端越来越凸显,严重制约了业务的快速创新和敏捷交付。为了解决传统单体架构面临的挑战,先后演进出了SOA服务化架构、RPC框架、分布式服务框架,最后就是当今非常流行的微服务架构。微服务化架构并非银弹,它的实施本身就会面临很多陷阱和挑战,涉及到设计、开发、测试、部署、运行和运维等各个方面,一旦使用不当,则会导致整个微服务架构改造的效果大打折扣,甚至失败。
一名优秀的架构师必须有适合自己的兵器,也就是工欲善其事必先利其器,不管是小白,还是资深开发,都需要先选择好的工具。工程化专题的学习能帮助你和团队提升开发效率,让自己有更多时间来思考。
Git:可以更好地管理你和你团队的代码。
Maven:可以更好地管理jar包和项目的构建等。
Jenkins:可以更好地持续编译,集成,发布你的项目。
Sonar:一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题(提升代码的质量,更加高效地提升开发效率)。
电商项目目的是把所学的分布式,微服务,性能调优等知识运用起来,只有在项目中你才能巩固知识,提升自己。实践电商项目会利用云服务器搭建真实的开发和部署环境,让你从零到项目实战,体验真实的企业级项目开发过程,让你具备独立开发和搭建分布架构系统的能力。
从无到有的是架构;从表到里的是抽象;从粗到细的是设计。大家对架构师有哪些看法,也欢迎在留言区留言,我们一起交流讨论。
下文整理的这些架构技术希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。同时我经过多年的收藏目前也算收集到了一套完整的学习资料,希望对想成为架构师的朋友有一定的参考和帮助。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。