likes
comments
collection
share

2021总结|做一个普通的工程师

作者站长头像
站长
· 阅读数 7

前言

博客停更了有点久,一方面是工作越来越忙,能停下来思考写作的时间越来越少,另一方面是个人的懈怠吧,不工作的时间只想躺平回血。其实一直想提笔写写这几年来的认知迭代,不如就从总结开始吧。

流水账

看我的文章列表应该你也能猜到,我的技术栈是iOS。职业轨迹其实也很大多数程序员一样,入行在小公司,一点点积累,目前在美团。主要的技术方向已经脱离了具体的iOS内容,目前还是面向大前端视角,做一些架构、质量相关的工作。随着工作年限的增加,经验、能力方面都得到了一定进步,除此之外,面对问题的思维方式,心态上的变化是我感触比较深刻的部分。尝试做一些总结,算是分享也是总结吧。

做一个"工程师"而不是"程序员"

这是一句这几年一直在我脑海里的话。

这里的"程序员"指代的是:每日按照上头给的需求完成工作,产品说什么我做什么,leader说什么我做什么,面对PM时总把"这需求我干不了"这句话挂在嘴边的。 这里的"工程师"指代的是:能弄清楚需求对于业务的意义,以及实现需求需要面对的问题,真正解决问题而不是单纯实现需求。

我觉得我刚参加工作的时候就是一个很典型的"程序员"。并不是说上面的"程序员"是不对的,而是不同的出发点会影响你的看待问题的角度进而影响你的行为模式。 举个例子,假设PM给了一个需求,要实现一个列表页面。

对于"程序员"来说就是拿到交互,想一下大概的方案,甚至 copy 一下现有代码,某个动画某个实现不好干,就说做不了,让PM砍掉。好一点的同学可能会在现有列表页里做进一步抽象封装代码优化等等。

而对于"工程师"来说,我想第一步应该是先搞清楚为什么PM需要一个列表页。是为了做简单的信息流展示或者是为了对复杂信息做抽象的前置分类页面等等等,这个需求的目的是为了吸引用户停留还是简单过度或者是营销信息等等等。基于这些思考,从技术的角度你可以分析出在技术上需要面临的问题:比如这个页面需要很快的加载速度,或者是很多的交互动画,或者是这个页面需要很强的动态化能力,或者是这个页面需要很高的加载成功率等等等。再由具体的技术问题再去分析,如果我们需要很高的性能,那大概 Native 实现会更合适,如果我们需要很强的动态化能力,那么简单嵌套一个前端页面成本更低更理想,如果我们需要很多的交互动画,那么需要用什么样的动画组件怎么去设计等等等。

在小公司上班的时候我们总会觉得没有机会接触高大上的技术,每日的工作就是重复码UI,写逻辑。终日都沉溺在细碎的工作里。看到平台上大佬又发布了架构,下一代容器,跨端技术等等等高大上的技术,既觉得羡慕,又觉得这是屠龙之术,与我现在的工作差距甚远。

实际上大部分"高大上"的技术背后都是为了解决一系列业务问题,抛开论文学院派等等科研领域,在实际工作场景中,技术最终的落点是业务问题。

做一个"工程师",为了解决问题而写代码,而不是为了做需求而写代码。

"外功"让你走的更快,但"内功"能让你走的更远

"外功"指的是具体的某一项技术栈,比如 java,Object-C,Swift等等。

"内功"指的是计算机基础,算法,数据结构,计算机系统原理,编译原理等等。

我观察到一个很有意思的现象:现在许多的大厂更喜欢校招,甚至校招生的薪资比经验丰富的社招还高。 如果就刚入职那一个时间点来看,校招生的生产力显然是不如同价格在市场上能找到的社招。但公司仍然愿意投入较多成本,培养校招生,更重要的原因就是因为校招生拥有更扎实的"内功",能够走的更远,未来的潜力更大。

我想这两年客户端逐渐式微,身边有很多原来干客户端的同学要么转前端要么干脆转行。客户端的从业人员也越来越焦虑越来越卷。但你仔细想想,又有哪一门技术永远不会过气呢。诺基亚,WindowsPhone的死亡犹如昨天,iOS或者Android也会有过气的一天,市场上始终会迎来更新的技术。

你我改变不了环境,你我只能适应环境。面对不断在变化的环境,我想修炼好"内功",市场上出现再多"外功",问题也不大。

性能真的很重要吗

很多技术人员总是喜欢把性能挂在嘴边。做一个项目,要么就是时间短,秒开,启动速度快等等等。

性能能说明一些问题,但无法说明所有问题。

举个例子,如果你是一家电商公司的老板,你手下有两个技术团队,A技术团队花了5个人,吭哧吭哧干半年性能优化,告诉你我们这半年做了很多很牛逼的技术,打开App快了多少,页面加载快了多少等等等。B技术团队花了2个人,两个月把营销页面动态化了,营销能力快速更新帮助平台销量和收入上涨,进入你口袋里的钱更多了。那么你作为老板,你更喜欢哪个团队的结果?

如果我们在日常研发中,将性能作为技术的终极目标,将优化性能作为技术项目的驱动,那么你在性能优化这条道路上总会有瓶颈的一天,在业务初期性能优化确实能带来较好的结果和较大的提升,也许你从1000ms优化到300ms只用了一个月,但从300ms到100ms,可能需要的是一年甚至更多。性能不是技术的终极目标,性能优化不是万能,一招鲜并不能吃遍天。

那么要不要注重性能,需要什么样的技术项目,我想还是第一个部分解释的,尝试用"工程师"思维来思考,业务面临的问题,以及需要如何解决,用什么技术能够解决。

很多场景下,性能并没有你想的那么重要,技术能做的也不只是性能。

人的局限性

这个时代总有许多人在贩卖焦虑,职业焦虑,外貌焦虑,房价焦虑,婚姻焦虑等等等太多了。

我甚是同意一句话:成长就是在不断意识到自身的平庸。每个人都有其局限性,也许你喜欢打游戏,也许你喜欢刷剧看综艺,也许你压根就不喜欢写代码钻研技术。这太正常了,你我都是普通人,我们也许有过远大的理想,但终被现实磨平了棱角,人都有局限性,做一个普通人,不要感到焦虑。教员说过:一个人的命运要靠自我奋斗,同时也要考虑历史进程。做到你能力范围内的最好,你就成功了。

时代的潮水总能跨过一个又一个的山头,个人的命运也是如此,我们即使普通,但只要不下场,都会随着时代的潮水不断向前。

最后

好了,我要下班了,想到哪写到哪,感谢你看到这里。

与你共勉。加油!