工作篇
欢迎阅读**「工作篇」**相关的文章,这个系列主要内容是分享一些有助于个人以及职场发展的内容。
内容概览
常见问题
Offer 选择考虑因素有哪些?
通常情况下,不论是校招还是社招下面这些都是你在做工作选择时应该考虑的因素:
- 地理位置:当地的生活成本,居住舒适度,离家的距离,有对象的话需要考虑对象的地理位置。
- 薪资待遇:薪资待遇是否可以接受?
- 稳定性:公司的发展是否存在严重问题?部门的重要性如何?
- 工作内容:工作内容是否让你满意?是否能够提供你发展和成长的机会?
- 技术学习成本和培养机制:是否需要转技术栈?针对应届生是否有完善的培养机制?
- 跳 槽认可度:跳槽是否容易?其他公司的认可度如何?
- 工作压力:工作压力能否接受?加班是否严重?是否有加班补偿?年假多少?是否双休?
- 工作氛围:工作氛围你是否喜欢?技术氛围如何?
- 晋升空间:公司是否提供合理的晋升机制?晋升速度如何?
- 公司发展:公司自身的发展前景如何?产品是否具有护城河?
- 公司价值观:公司的价值观是否与你相契合?
- 户口:这里主要针对的是北京户口,毕竟是最难拿的户口。对于想要拿户口的同学来说,还需打听下公司是否有帮你拿到户口的机会?户口的分配比例和分配方式是怎样的?通常情况下,国企、银行、研究所这类拿到户口的概率最大。
- ……
你可以根据自己的偏向,给上面的每一点一个分值。然后,你对自己所纠结的 offer 打分,打分较高的大概率就是比较适合你的那个。
薪资待遇这里多说一嘴:一定不要被 offer 的总包价给迷惑了,一定要结合工作时长、是否有加班费等因素来看(外企的薪资虽然比不上很多大厂,但结合时薪来看,很多还是非常能打的)。
工作压力这里多提一嘴:千万不要一腔热血觉得自己能承受长时间的加班以及工作压力,尤其是刚毕业的同学,等你真正经历过了,你才会体会到工作压力太大对自己的身心和身体健康影响有多大!!!
对于刚工作的毕业生来说,建议优先关注工作内容和跳槽认可度(知名大厂一定要首要考虑),这对于后续发展更有利。不过,也不要死脑筋,太纠结工作内容,比如有一个大厂测开的 offer 和一个小厂 Java 后端的 offer,那我个人还是建议你选择大厂。
对于已经工作的朋友来说,建议优先关注公司本身(大公司对应的平台也更大,机会更多) 以及你要去的部门(公司的核心部门最好)。
最后,如果各方因素都综合对照之后还是纠结的话,那我建议你还是优先选择钱多的那个,毕竟这才是实打实的直接到自己手里的东西,其他的都是虚的。
想要跳槽但又很纠结怎么办?
如果你想要跳槽但是又非常纠结的话,你可以通过下面几个问题来自测一下:
- 在这个公司你开心吗?达到自己的预期了吗?
- 公司未来的发展你看好吗?
- 你对自己的薪资待遇满意吗?
- 公司现有的项目或者资源还可以为你带来提升吗?带来的提升你满意吗?
- 现在跳槽出去找工作,你有信心吗?
- 裸辞还是先找好工作再辞职?
- ……
空窗期怎么应对?
对于空窗期,有三种常见的应对方法,你可以参考一下:
- 诚实写明:简历上诚实地写明空窗期,并给出合理的解释,避免后续的误会。只要理由合理,空窗期时间不是特别长,不会有什么问题。
- 调整工作时间线将空窗期覆盖:将上一份工作的结束时间延后至空窗期结束,或者将下一份工作的开始时间提前至空窗期开始之前。 这种方法属于是作假了,需要考虑背调,一般是不太建议这样做的。如果这样做的话,尽量找不做背调的公司面试入职(异 地社保公司好像查不到?)。
- 转化空窗期的经历:在简历中将空窗期描述为“自由职业”、“创业经历”或者“个人项目经历”,就像是描述工作经历一样,简单突出介绍自己在这段时间主要做了什么(尽量将自己的工作内容介绍的具体一些,包括但仅不限于做的项目)。
有哪些实习/入职的一些小 Tips?
- 认真完成分配给你的任务,不管是 CRUD 这类基础的开发任务还是其他,都要保证质量和效率,遵守代码规范和开发流程,及时沟通和反馈,积极解决问题和改进不足。
- 面对别人提出的问题和 bug,不应该轻易回复。面对问题应该重视,需要做更多的思考和研究。
- 保持思考,向别人描述问题时尽量告诉自己再多思考一下,看能否找出更深层次的原因。
- 如果对于自己能力比较自信的话,要勇于认领比较有挑战的任务,解决有难度的问题。一定不要一碰到不会的就退缩了,碰到没有接触过的技术就怂了。
- 不仅要完成基本的需求,还要思考如何优化和改进,不仅要按部就班地工作,还要寻找机会和空间去做一些有意义的事情比如你们公司崇尚技术分享的话,那你可以主动讲个 Session(即使你讲的东西比较简单,讲好就行了)。
- 养成深入思考业务的习惯,敢于提出自己的想法和建议,而不是业务负责人说什么就是什么。
- 如果团队氛围还可以的话,主动去组织一些组内活动比如聚餐、打羽毛球、一起出去玩等等(人情还是很重要的)。
- 多向你的同事请教学习,但一定要控制度,避免影响他人正常工作。另外,你可以向你的同事和领导要一些关于你的反馈比如你目前存在哪些地方需要改进。
- 不要害怕被批评,刚开始不熟练犯一些错误,做事方式存在一些问题,都是正常的,重要的是能改正,要让别人看到你的进步。
- ……
初级 Java 后端开发应该具备哪些能力?
如果是 Java 后端开发的话,下面几点是最基本的,你可以参考一下:
- 具备独立开发基本的增删改查代码的能力(不看视频自己写,浏览器搜索直接复制粘贴都行,只要你能把功能做完)。
- 具备能够排查项目遇到的简单 Bug 的能力。
- 具备使用 Git 进行版本管理和团队协作的能力。
- 熟练使用常用的关系型数据库(不同的公司,不同的项目,使用的关系型数据库也不同,一般是 MySQL)。
- 可以运用多线程、设计模式等手段来优化代码。
- 具备和前端开发联调的能力。
- 了解 Linux 常用命令,以及在其上面安装,部署应用。
- 具备良好的沟通能力和学习能力,能够快速学习运用自己之前没有了解过的框架。
- 熟练使用浏览器查找资料以及使用常见 AI 工具例如 ChatGPT 辅助自己工作。
刚入职完成不了开发任务 ,怎么破?
很多同学刚工作的时候,可能就会遇到很多问题,比如流程不规范,代码也不规范,以后端岗位入职却要搞全栈,不注重新人培养刚来就被安排开发任务。这就导致很多刚工作的小伙伴刚工作的时候根本没办法按时完成任务,甚至是努力了也没办法完成任务,于是很焦虑,开始怀疑自己的能力。
其实这种情况很正常的,真心不需要怀疑你自己是否技术能力有很大问题,大家基本都是从那个时候过来的。
下面是一些建议,对于刚工作或者已经工作的朋友应该都有帮助:
- 你首先要搞清楚公司的技术栈到底是什么,这样才能针对性地学习。假设你们用的是 Spring Boot +MyBatis +Spring Security ,那你就应该抽时间去重点学习一下 Spring Boot 如何整合 MyBatis 实现最基本的增删改查、分页、连表查询等等。Spring Security 这个入门难度比较大,不建议你现在学,一般也不会让你这种新人做。
- 工作中要多总结!公司用的框架体系,业务逻辑都是需要自己来总结的。如果对于某个框架或者工具不熟悉,直接去搜索 xxx 入门,或者去 Github,Gitee 上搜 xxx demo。遇到具体的知识点就去浏览器检索,20 个 tab 理论(遇到不会的就关键词新打开一个 tab)。
- 心态要放好,不要害怕领导会骂你,一步一个脚印踏踏实实地走下去。
- 世故一点。遇到经过自己思考还是搞不定的问题,去向前辈或高手们请教。买个饮料,吃顿饭多拉拉关系。
- 对于缺少实际开发经验的同学,可以私下找一份还不错的项目经历视频教程抽时间跟着做(尽量和你公司项目的技术栈比较类似),然后自己再慢慢独立上手开发某个模块的功能。一 定要有独立实践这一步,否则效果同样较差。
- 随着 AI 技术的爆炸式发展,当代程序员一定要学会使用 AI 工具辅助自己进行开发,提高效率。你不光可以让 AI 帮助自己理解已有的代码,还可以把自己的需求告诉 AI ,让其帮助你写出一个基本原型。常用的 AI 辅助编码工具有:ChatGPT、New Bing、GitHub Copilot、CodeGeeX、Bifrost、Cosine、CodeWhisperer 等等。
另外,《Java 面试指北》的「练级攻略篇」中专门有一篇文章是讲“如何快速上手一个新项目”,你可以看看。
新入职一家公司,如何快速上手项目?
下面的内容和「练级攻略篇」的如何快速上手一个新项目这篇文章有部分重合的地方,只是对公司项目进行了针对性的补充和优化:
- 检查是否有相关文档:入职初期,首先查看是否有项目相关的文档,如项目介绍、使用手册等,这是非常重要的参考资料,将极大地提高效率。
- 尽量找个同事带你简单熟悉一下项目:如果能有同事带你简单熟悉一下项目的话,那是最 好的,可以让你少踩很多坑。据我了解,很多公司都会有带新人熟悉项目的好传统。如果你入职的项目组没有人带你的话,你可以主动询问一下。
- 深入理解业务:记住,技术始终是为业务服务的。一旦脱离了业务,那么技术的存在将毫无意义。优先了解业务将帮助你更好地理解技术实现。
- 搭建本地开发环境:尝试在本地搭建开发环境,试着把项目运行起来。稍微正规点的项目都有项目环境搭建相关的文档介绍,跟着文档来就好。如果没有文档的话,需要自己去分析项目依赖环境,必要的情况下询问一下同事。
- 项目依赖梳理:通过项目依赖配置文件(
pom.xml
/build.gradle
)看看项目用到了哪些框架和中间件,底层数据库是什么。 - 了解业务架构和系统交互:熟悉系统的业务架构,理解各个系统和模块的功能职责及它们之间的交互方式。
- 从简单功能开始实践:可以先从基本的 CRUD 功能开发入手,慢慢再接手更复杂的功能开发任务。
- 掌握开发流程:全面理解项目的开发流程,从需求分析、设计、编码到测试和发布,每一个环节都是保证项目成功的关键。
- 融入团队文化:积极参与团队的日常会议和活动,如站立会议、团队例会等,这不仅有助于了解团队的工作流程和文化,还能加强与同事的沟通和协作。
- 高效提问:遇到问题时,先自己尝试解决,实在解决不了再进行提问。把自己的问题想好,表达要清晰一些,态度要礼貌一些。不要害怕提问,也不要随便提问!
另外,推荐看看海贼兄写的这篇文章:入职新公司,快速掌握业务与技术的12条经验 。
工作对个人能力提升太小,怎么破?
- 如有跳槽想法,建议尽早开始备战面试跳槽。在完成工作任务的前提下,尽可能地多挤出时间来准备面试。工作期间挤不出来时间就下班之后再开始,少刷一些抖音,少打一些游戏。一定要做好规划,每天时间充足就拉短周期,每天时间少就拉长周期。尽量“骑驴找马”,提前做面试准备,还要实际感受一下面试难度和市场行情。
- 认真对待自己手里的工作,即使是 CRUD 这类基础的开发任务。实际上,能把最基本的 CRUD 写好也是不易,尤其是对于刚工作不久的同学来说。一定要准守代码规范,提高代码质量,养成良好的编码习惯。
- 平时要抽时间多看一些优秀的技术书籍和技术博客,还也可以去购买一些优质课程学习,像极客时间、儒猿技术窝等平台的技术课程质量还是比较高的。学习优秀的技术实践,并将重要的内容整理记录下来,定期回顾。如果有合适的机会,可以将学习到的优秀实践应用到实际的项目中去。
- 多逛开源社区,遇到感兴趣的开源项目,可以抽时间去深入研究学习。快速上手或者吃透一个项目的方法参考这篇帖子:https://t.zsxq.com/15OCE3YrA 。
- 深入且系统地学习你所从事的方向的需要掌握的技能,Java 后端方向可以参考我分享的学习路线:https://t.zsxq.com/15y1s9mA5 。
- 提高系统设计能力和解决问题的能力,这是社招的重点考察能力,也是区分一个程序员工作经验是否丰富的标准。具体方法可以参考这篇帖子:https://t.zsxq.com/15wkMOx7c 。
- 技术为本,但也不要把自己局限在技术上!技术之外,你还需要提高自己的产品设计能力、演讲能力、理财能力……。
- 一定不要把自己的精力都花在各种工具库、框架和中间件的使用以及配置上,要学会做编程知识的投资。另外,尽量避免摄入过多碎片化知识。
- 你们公司崇尚技术分享的话,那你可以主动讲个 Session(即使你讲的东西比较简单,讲好就行了)。这样既能提升自己在公司的影响力,又能倒逼提高自己的能力。
- 随着 AI 技术的爆炸式发展,当代程序员一定要学会使用 AI 工具辅助自己进行开发,提高效率。你不光可以让 AI 帮助自己理解已有的代码,还可以把自己的需求告诉 AI ,让其帮助你写出一个基本原型。常用的 AI 辅助编码工具有:GitHub Copilot、Cursor、CodeGeeX、Tabnine、通义灵码、Codeium、Bifrost、Cosine、CodeWhisperer 等等。