本文是结合自己的工作经历,以及当下的就业形势,来聊聊自己的经历和职业规划。程序员如何延长自己的职业寿命,提示自己的价值。欢迎大家在评论区留言,给出你的见解,我就抛砖引玉,先说说我自己的想法。
为什么考虑做全栈?
来目前这家公司快一年半时间了,目前这家公司是做国产桌面端工业软件的,职责是全栈工程师岗位。今天就来聊聊,我自己从前端到全栈的学习成长经验,和大家一起持续学习,共同成长。
先来说说我认识的前端的角色。前端主要是负责页面逻辑和交互,前端也可以做一些基建。结合我经历过或者我周边同事做工作内容,前端就业方向主要这么几个方向。跨平台移动端方向、 性能优化方向 、交互设计方向(动画)、数据可视化方向、工程化方向、桌面端开发。
为什么会过渡到做全栈呢?
- 首先当然是目前的公司业务架构中需要全栈的人员。
- 做了这么多年前端开发,对服务端有一定的基础了解,结合当前目前内卷的前端就业环境,也希望自己能在站在一个更大的视野中去发挥自己的能力,给自己后续更多的选择。
- 提升综合的能力,有了全栈的开发的经验,看问题和解决问题更加全面,有完整技术链的能力。无论是以后考虑做独立开发者,或者退一步失业后自己接活干都能技术的基础,你总不能说我只开发前端吧。(哈哈,在有主业的情况下不建议接私活,有那时间提升自己才是关键)。
目前形势对比
我目前这份工作是 2022 年投的简历找的,当时还在疫情当中,经济形势也不是太好。但当时我投递以后面试机会还是挺多的,我两周面试了十几家。
其实我每年都有出去面试的习惯,去看看当前的就业市场如何。今年我也面过几家,有两家大厂,5家中小公司。最终收到两个 offer,一份是做 Electron 桌面端开发的,一份是全栈开发。薪资都是平薪。当然我也没有去。主要考虑因素有几个:
- 我目前这份工作时间比较短。
- 没有行业积累,需要跨行业转。
- 确实没必要,当前这份工作其实需要一定的上手难度,但是我已经可以独当一面了。
职业思考
确实工作了六七年的前端以后,我越来越多的思考,前端岗位的价值。前端核心的竞争力到底是什么?开发的同学可能会习惯性的思考,我会什么?
- 熟悉 Vue/React 源码。
- 熟悉 CSS3,以及各种交互动画。
- 前端工程化。
- 了解各种工具、规范、lint。
- 设计模式、数据结构、算法。
那这些最终产生了什么价值?
会源码可能可以帮你更快的排查出问题所在,会 CSS3 可以让你写出更炫酷的页面交互,会各种基建能帮助你提效,使用各种规范能保证我们项目更加稳定,会设计模式、数据结构算法,可以帮我们写出更高性能可维护的应用。
所以这些最终的目的就是让我们交付给客户的应用更加好,无论是缩短交付时间、提供更好的性能体验、更好的交互方式、更稳定的版本。我们最终服务的还是客户。客户有什么诉求,我们能更好的服务,这就是我们的价值。
未来规划
有了上面的思考以后,我们的重心不完全是放在这些技术实现上,我记得一句印象深刻的话,原话我忘记了,大概意思是,你的能力在解决任何单个问题的时候都不是问题,单个问题的复杂度不会很高,你要有全局的思维,系统性的思考如何解决问题
那如何让自己有全局的思维能力呢,而不仅仅是拘泥于某个技术细节上呢?
我目前的想法是要具备 架构思维 和 组长思维。
为什么要有架构思维
来看看几个场景的场景,你就知道为什么要有架构思维:
场景1
当你维护一个老项目的时候你可能会吐槽,这代码为什么设计的这么烂。明明可以直接xxx,这代码居然需要xxxx才能完成。
由此可见,如果一个项目整体结构设计不合理,对于后续维护的开发者是非常不友好的。明明有更好的实现方式,但由于之前的设计方式,被迫要“降级”写出跟前人一样“香”的代码。
有人问说你可以重构代码呀?重构是有风险和成本的。
- 可能存在隐性的 bug,例如隐性的依赖关系,调用时机依赖等等,你需要对原来的代码整体梳理一遍。对它有十足的把握。
- 时间成本,企业没有时间给你动不动重构的时间,你需要尽快完成功能需求。
- 测试成本,你开发完还需要测试对重构有回归,回归的范围有多大,是否可控,这些你真的清楚吗。
所以综合下来看,在最开始给出好的架构设计是多么的重要。
场景2
假设你去客户现场,需要跟客户讨论下一期的方案和规划,你需要对业务整体有一个认识。面对客户的提问你需要从客户的角度去解释。这可能需要涉及到概念架构或者具备相关的领域知识。否则一个程序员是很难和一个客户有效的沟通的。
也许你会说,程序员为啥要见客户呢。也是大部分程序员是不需要出差的,但我目前这份工作确实需要去客户现场,加上我们需求是分期迭代交付的,客户现场部署和解决问题的时候需要解答客户的疑问。如果没有相关的领域知识和概念架构的了解。也许在沟通上就会造成很大的障碍,我们不仅仅写代码解决 bug,也能作为一个项目负责人,支撑起这个项目。
为什么要有组长思维
小组长作为公司的执行层,起到承上启下的作用,对上接受领导各方面的战略规划,对下将信息传达给组内各个成员,分工协调、做好风险评估、疑难杂症问题救火。
所以小组长一般是一个很复合的人,既需要技能拔尖,又需要懂人性和管理,但其实手中并没有多少实权。所以在有限资源里把小组作为一支队伍管好是一件有调整的事情。
作为小组长你首先具备解决问题的能力、需要有沟通的技巧(向上汇报,向下教导、分配)、需要有协作能力。你就是将老板的或者上级的战略目标拆解落地的人,但这个过程中单靠你一个人的力量是不够的,所以你需要充分发挥团队的力量。
如何打造一个高效、有目标、有质量的团队是非常考验小组长的个人能力的。所以市面上小组长这样级别的技术人的能力是参差不齐的,如果你能遇到这样一个领导,成长和提升也会比较快。
如果你想要做成一件事你必须要有小组长思维,这里说的事指的是从头到尾负责项目落地。而不是只作为流水线上的一环只负责手头上那点内容。这样哪怕有一天你不做一线技术开发,你个人带团队也是一条不错的出路。
行业认知
拿 SysML 公司
和支付公司
对比,通过以上表格,可以清楚地看到 SysML 公司和支付公司在市场定位、技术重点、法律法规、商业模式和人才需求等方面的显著差异。
所以在你进入某个行业以后,会发现这个行业特性,如果你深耕某个行业,你会形成对行业更深的理解。对于前端开发人员来说,技术的壁垒其实并不是很高,如果加上你有行业理解的壁垒,你会在这个行业有更长久的发展。
方面 | SysML 公司 | 支付公司 |
---|---|---|
行业背景 | - 系统建模语言(SysML): 用于系统工程的建模语言,广泛应用于航空航天、汽车、国防等领域。 - 市场状况: 市场需求主要来自大型企业和研究机构。 - 竞争格局: 市场竞争相对较小,但技术门槛较高。 | - 支付解决方案: 提供在线支付、移动支付、跨境支付等服务,广泛应用于电子商务、零售、金融服务等领域。 - 市场状况: 市场需求巨大,尤其是随着电子商务和移动支付的普及。 - 竞争格局: 市场竞争激烈。 |
技术特点 | - 建模工具: 开发和维护系统建模工具,如建模编辑器、模型验证工具等。 - 集成能力: 与其他工程工具和管理系统集成,提供完整的解决方案。 - 标准化: 遵循国际标准和规范,如 OMG(Object Management Group)的标准。 | - 支付网关: 开发和维护支付网关,处理支付请求和交易。 - 安全技术: 采用先进的安全技术,如 SSL 加密、双因素认证等,保护用户数据和交易安全。 - 移动支付: 开发移动支付应用,支持多种支付方式和设备。 |
商业模式 | - 软件销售: 销售建模工具和相关软件产品。 - 咨询服务: 提供系统建模和工程管理的咨询服务。 - 培训服务: 提供系统建模和工具使用的培训课程。 | - 交易手续费: 收取每笔交易的手续费。 - 增值服务: 提供数据分析、营销支持等增值服务。 - 合作伙伴: 与银行、商户、第三方服务提供商建立合作关系,拓展业务范围。 |
法律法规 | - 知识产权: 保护软件和工具的知识产权。 - 数据安全: 确保客户数据的安全性和隐私保护。 | - 金融监管: 遵守金融行业的监管要求,如反洗钱(AML)、了解你的客户(KYC)等。 - 数据保护: 遵守数据保护法规,如 GDPR(通用数据保护条例)。 - 支付标准: 遵循国际支付标准和协议,如 PCI DSS(支付卡行业数据安全标准)。 |
人才需求 | - 系统工程师: 具备系统工程和建模知识的专业人才。 - 软件开发人员: 熟悉建模工具开发和集成的技术人才。 - 咨询顾问: 提供系统建模和工程管理咨询服务的专业人士。 | - 软件开发人员: 具备支付系统开发和维护经验的技术人才。 - 安全专家: 负责支付系统的安全性和合规性。 - 产品经理: 负责支付产品的设计和优化。 - 市场营销: 负责市场推广和客户关系管理。 |
最后
经过上面的梳理,我个人确定全栈开发的技术路线,在工作和学习的过程中去储备自己行业认知、架构能力、小组长思维等软实力。这是我对开发者未来规划的看法,欢迎大家在评论区留下你的看法和思路。或者能够给别人带来一些启发。最后祝大家都能在自己的技术开发生涯中走的更加顺利!
评论记录:
回复评论: