- 只是因为被问到过,思考着除了代码能力外,还有什么是支撑着我们前进,不被淘汰的东西。看到知乎里的东西,总结下来
若你已做多年前端(5年+),你觉得你目前的核心竞争力在哪
前端是个入门门槛很低,深度挖掘又非常复杂的一门职业;现在涌现出很多前端的培训机构,和很多学生时代就完全入门前端的应届生,还有工作一年以后能力不错的全栈,他们的产出和能力都不赖;那么,当你做了很多年前端后,开发、测试、部署,从前端到后端,从桌面到移动,从嵌入式到物联网,你觉得有什么优势或者竞争力呢?
- 喜欢写代码,知道自己的瓶颈,并接受它
- 做越来越多的事就是挑战自己原来的想法,作总结和交流
- 能写出比较复杂的代码
- 业务理的顺,有一些产品思维
- 还不错的审美
- 沟通和协调的能力,可以组织很多人一起写一些比较复杂的代码
- ppt excel用的比一般程序员要好一些,也挺会写邮件的
- 对新知识有热情,学东西较快,是一个擅长解决问题的人
挑战
- 每天工作会积累很多经验,久而久之,你会很熟悉你的工作内容,熟悉配合的人,越来越像机械一样在工作。那么,你会从这份工作中已经慢慢地失去成长的动力。可能你需要有一些转变,不论是工作内容或是岗位。
- 与不同岗位人的沟通,你会得到他们的问题与角度。接触不熟悉的技术,你会遇到它们的问题与角度。这些都是让自己走出舒服区,让自己从无限的重复中获得新的成长。
总结
- 我们日复一日在做coding,隔三岔五在修复bug,解决各种技术难题是家常便饭。这些问题日复一日,我们是否有过思考,他们的本质是什么,他们有没有共性。
- 从总结中思考,从解决问题到定义问题。定义问题就是从点到面,让自己有布局解决一类问题的能力。这是我们职业生涯中一直需要锻炼的。
交流
- 我们写文章并不是为了写而写,而是把自己的成果,自己的想法写下来,可以说写文章也是为了交流。
- 交流,就是去碰撞,碰撞你那些不坚定的想法,说服别人,或被说服,过程中帮助你进步,帮助你理解其它人的经验,完善你自己的经验世界。
- 对我来说最大的竞争力除了还可以写点复杂的代码,更多的是这些软性的东西。
- 我会运维,新项目给个服务器权限就够了,Docker 快速部署
- 我会写 PHP,刀NET,NodeJS,
- 我会撸各种后台框架,YAF,Swoole,Laravel,Express,Koa之类的
- 我会撸各种前端框架,新框架看看 API 就搞定了,觉得不爽就自己改源码,造新轮子。
- 我能解决各种问题,不用等着别人教
- 我知道产品要的是啥,虽然他们说出来的不知道是个什么鬼,
- 我知道怎么跟测试说我的需求
- 我也知道怎么背锅
- 我还知道怎么带人(虽然带不好)
- 我还想说我最开始是做设计的。
- 我知道各种行业架构,运行流程,好像产品经理的活干着也挺顺的。
- 不断学习,不断否定之前的自己,重新认识自己,有自知之明
- 接触了很多前端周边的技术,如果说前端是自己的一套房产,那么我的这套房产的周边配套相对来讲还算比较齐全,所以虽然房子烂点,但不太影响价值
- 前后端(php,shell,mysql)都能搞起来,可以自己完成一个项目,就算没工作了也不会太担心
- 自信很重要,永保自信
- 基础扎实,js的一些基本原理、浏览器机制,vue react 的封装思路不求很透彻,起码得了解,知道个大概其。http机制,接口的实现思路,sql怎么写,数据库表结构 这些可以不会,但是得了解。最后就是前端工程化,脚手架那么多,不需要你手撸脚手架,但是得会用,会修改
- 亮点,比如 webgl、大屏可视化、移动端app、跨平台的小程序、C端sass系统,这里面总得有一两个自己很熟的吧,经常做、有经验,而且积累了一些东西,设计思路、复杂情况的解决方案,通用代码等等,都可以
- 核心竞争力。行业。核心竞争力一定是行业,举个简单的例子,做电商app,就一直做电商类产品;做工业互联网,就一直钻研工业互联网;做通讯类软件,就一直做类似产品。程序员是个很好找工作,跳槽频率也很高的工种,但是大家好学并且都有5年工作经验之后,就会发现技术上遇到瓶颈了,可以学的东西很多,但是很难大幅提升自己的竞争力。大家会的都差不多,可能各有一点特点,但是相差不大,找工作可能得靠降低薪水提升竞争力
- 年轻可以多跳槽,涨薪快,每次跳槽别胆怯,往高了要,再慢慢降,你可能一直在低估自己的实力。
- 跳槽要有目的性,尽量有自己喜欢或者擅长的行业,不要乱跳,工作不是钱多就一定好,要符合你的职业规划,跨行业的乱跳,可能暂时工资多了点,长期看,一定是吃亏的
- 选对行业,有些行业前景不好,就别一直坚持了,挑那种有潜力的。比如智慧城市,起码5-8年内属于潜力行业,再往后我也不敢说;再比如 工业互联网,不是吹,再过20年也是朝阳行业,国内人工成本很高,工业智能化升级动力非常高,关键是80%以上的工业类企业智能化非常低。而且,就算做了智能化,后续也得不断升级、运维不是,这块市场非常大
- 最后,写代码要有严谨负责的心,别偷懒,别怕麻烦。能处理的问题都处理了,不积跬步无以至千里。先这样以后再说,没事不会导致大问题,等代码多了慢慢优化... 巴拉巴拉好多类似的场景,基本就是给自己挖坑。代码能精简优化的,尽量做的优质,别怕麻烦
- 在这纠正一下哈,别频繁跳槽,太频繁了不好,特别进大厂会被卡,小公司无所谓了。进大厂之前最好保证自己在上家公司至少有2年以上的时间,要不然真的会被卡。跳槽这个东西要把握好度,合理跳槽,你的薪水可能要比同行同水平的高30%以上,太频繁,可能要找不到工作。
- 做服务端的能力——我完全没有失去我在大学里积累的的C#能力(虽然基本只在个人项目用),而且我还掌握了PHP,还学了一点Go(没有用于生产),虽然在分工中不一定需要我做大量的服务端开发,但一方面我可以不求人的完成很多小项目,一方面我可以更好的换位思考我的合作伙伴们,事实上我在相当长一段时间内PHP和前端几乎是1:1的量
- 查文档或文献的能力——不仅是文档,还要有文献,虽然做业务开发很少会需要看论文,不过当我需要做一些新奇的玩意,比如以前心血来潮的一些计算几何和多边形算法相关的文献,最近倒腾的MIDI和SoundFont2的技术白皮书,这还帮我保证了一定的英语阅读能力。
- Make Boss Happy的能力——这不是贬义的,不仅是理解KPI,更重要的是平衡个人技术追求和团队需求。
- Make Boss Happy的能力——这不是贬义的,不仅是理解KPI,更重要的是平衡个人技术追求和团队需求。
- 一些算法基础——举个例子前几天群里讨论一个类似关灯游戏的问题,我第一时间想到用线性方程组来解,事后回想起我大学时期并不知道关灯问题可以用线性方程组解;以及大学时期不怎么想得明白的一些DP的题目现在能想明白了,说明我的算法视野是更开阔了,当然因为题刷的少了所以实际写算法程序的能力多半还是下降的。
- 知道或验证过大多数技术的性能瓶颈和优劣,对网站不同阶段遇到的问题都有处理经验。
- 做过抽丝剥茧的重构,也做过推到重建的大项目,对于可能出问题的地方有着准确的直觉。
- 能快速识别人,快速上手新技术,有自己在这些事情的一套工作方法。
- 待过各种各样的团队,管理过的各式各样的人,知道各种道道但同样能守住本心。
5年以后更多的是软实力,对行业的了解,对上下游的协调,沟通,对组织玩法的了解,对项目的管理能力,对人的管理能力等等做管理的没有我懂技术,能做技术的没我懂管理,差异化才是核心竞争力,复合型人才- (最重要)快速学习新知识,信息检索,解决开放问题,工程直觉这是 10 年开发经验带给我最大的收获看起来很虚,但确实存在,并且极为重要编程语言是相通的
- 技术选型:根据业务的规模、复杂程度、团队的配置和现状合理的选型。不盲目在项目中尝试新的技术,但是要跟进对新技术的了解,了解其利弊和使用场景,作为选型时的依据。可以在非核心项目或者小模块里尝试。
- 沟通交流:了解对接职位(通常就是后端、交互、产品)的一些基础知识和职能,方便在需求沟通时期就把潜在的问题暴露出来,PK掉不合理的需求,把复杂的问题简单处理。尤其是在项目的初期,很多需求和方案都是拍脑袋决定的,把这些需求用最简单粗暴的方式处理,不要让他们成为前期快速迭代的绊脚石。从项目的角度考虑合理性问题,不要一下扎进坑里,在不必要非核心的功能上浪费太多时间。
- 价值和定位(可能和现在前端的主流价值观有很大出入):前端作为从web开发者中分离出来的职位,其使命和其他客户端程序员一样,除了实现基础的业务功能,最重要的是提升用户的体验。极端的说,即使没有前端工程师,后端一样可以实现现在的业务,只不过是体验不好,性能不佳。所以我认为,用户体验是前端最核心的价值。然而,在我看来社区里越来越多的前端致力于流程化和工程化的研究和优化,提升了开发者体验(但对于新手而言,可能提升了学习成本),而对于用户而言却没有带来太多实质的价值(个人体验来看,新框架初期匹配的组件体验往往不如同类型的 jquery 插件 -- 主要原因可能是年代够久远,体验优化的够好)。结和技术选型,在一些不是特别需要用户体验 且 业务逻辑复杂 且 项目周期短 且 团队技术基础好 的项目中,是非常合适的。然而这么苛刻的条件决定了他们不适合绝大部分业务。简单切粗暴的方案如pjax或者turbolink就足够解决中等复杂的业务
- 工程化实践经验,多端开发经验,多语言跨平台