12月中旬离开百度加入蚂蚁金服。三个月时间转瞬即逝,马上就要提交试用期绩效评估,趁着这个时间自己也总结和梳理下最近的思考。
在百度一直做的是 iOS 开发,来到蚂蚁开始做前端开发。可见蚂蚁是一个比较开放的平台,技术栈本身不会限制你的选择,能力本身才是最重要的。
自己是一个比较闷的人,在学校时就曾想过,以后要做底层的开发,不喜欢跟非技术人员打太多交道。没想到这些年的发展,从客户端到前端,跟直接用户接触的反而越来越多了。真是件神奇的事情。
移动端开发和 PC 端的开发比较相似,在特定硬件和软件平台下开发,无论是 PC、MAC、iPhone、Android 手机,还是 Windows、macOS、iOS 还是 Android 系统。高级别开发者需要精通他所在平台的技术细节,使用平台提供的 API 和硬件能力开发软件。客户端软件需要下载安装到用户本地运行,特点是迭代慢、质量要求高、不需要考虑业务流量压力。
前端的门槛很低,许多人都可能体验过,比如为自己建个博客、为项目做个宣传页面。因为前端的简单,使得实际情况变得有点混乱,为了达到一个相同的目的,可能有各种各样的实现方案。虽说 web 标准的存在是为了使得前端开发更加规范,但是各种平台的实现却可能有些细节上的差异。更糟糕的是,不像客户端开发,你的代码只需要跑在一个特定平台上,前端的代码是需要保证在全平台上都能正常运行。
前端页面是在线请求的服务,所以可以以非常快的速度迭代,非常适合现代的产品开发方式。快速上线,根据反馈不断迭代优化。对比 iOS 开发中苹果爸爸的严格审核,可以说是截然不同的上线体验。不过如今许多前端页面和逻辑可以通过离线包的方式下载到用户本地运行,客户端 App 只是一个容器。这变得跟客户端开发有点相似。但是容器的处理方式都是自己人开发的,完全可以建立一套机制保证非常高的离线包更新触达率,相比客户端的发版,还是要快很多。
我说移动端不需要考虑业务流量的压力,是指每个 App 都是独立的用户设备里的软件,即使是上亿日活的 App,它仍然只跟所在的特定设备交互。传统前端也是如此,不过如今前端的工作也会包含服务端的部分。以 nodejs 技术实现的中台介于服务端和前端页面之间,这种方式在大公司非常流行,并且表现出轻前台、重中台的趋势。这种结构带来的挑战是,前端领域也需要关注海量用户带来的流量压力。
之前培训时前辈说过,对前端工程师的需求量可以看作业务方向是否繁荣向上的晴雨表,如果一个业务是蓬勃发展的,它通常会遇到前端紧缺的境况。对前端工程师的挑战是,如何更好的支持业务的发展,无论是前端工程化、各种新技术的出现,都是为了解决这个问题。
如今大家都在说大前端这回事,前端开发经常是基于容器的开发,客户端团队也开始招聘前端人员。但是这显然还有很长的一段路要走,既有的工种划分还会长时间的保持,各个开发角色对于彼此的了解仍然是黑盒状态,特别是前端在客户端容器中遭遇问题,团队沟通一如既往会是一个耗时耗精力的过程。
蚂蚁这三个月一直在做小程序开发。对于开发本身还是很有自信,边学边开发,对于软件设计也有自己的想法。但是深刻体会到了前端的“不可靠”,遇到不少需要前端写兼容逻辑解决问题的情况。比较头疼的一个问题是需要依赖很多新增的客户端能力,每个 api 是不同的人开发的,还要配合在一起被我调用,出现问题只能一个一个去找人解决。理论上,作为提供服务的一方应该保证自己服务的可靠,但是实际和理论还是有差距的。
另一个问题是,前端是直接面向用户的,而且直接对项目负责。即使是其它角色的问题,也需要前端工程师去推动和解决。可预测的事情需要控制风险,提前规划。其它问题需要能快速定位问题,找对应人解决或者自己寻找解决方案。
当下情况,如果想要获得快速成长和晋升,需要加强对业务和数据的重视,这两点对于自己来说都是比较薄弱的。
以前的观念是认为自己是一个开发者,只需要关注计算机技术本身就可以了。在职业生涯的初期,这种观点可能不会有问题,但现在的体会是,如果只关注技术本身,可能会很快达到自己的瓶颈。本来这次跳槽的一部分原因也有感觉自己遇到技术上升瓶颈,跳入一个新的技术栈领域延迟了自己达到瓶颈的时间,但是除非转换观念,否则最好的情况只能是线性的成长曲线。
另一个观念更新是对数据的重视。觉得自己写的代码很牛,体验很棒,可能并没有什么用。Make something people want,这个才是衡量标准。数据是直接体现产品效果的东西,而且廉价、快速。对数据的敏感性和分析技巧可以培养,但是对数据的观念的转变是至关重要的一步。
阿里堪称大牛收割机,吸引了大量优秀的人才,身边也有许多牛人存在。就技术方面来说,大家对于自己的发展都有思考,许多人都有明确的发展方向。自己也算是一个有上进心的人,但是努力的方向想来一直还是比较模糊。现在给自己制定个努力方向吧,将来回头再看。
短期当然是要深入研究蚂蚁前端技术,比如小程序、蚂蚁前端解决方案。长期以基础架构方向和数据可视化方向作为目标。
客户第一 - 客户是衣食父母,这是蚂蚁价值观的第一条。作为开发工程师,经常会忽略自己作为公司职员的本分,为公司创造客户,对客户保持敬畏之心。无论是面包师、服装零售,还是软件工程师,这都应该是通用的价值观。说不定自己以后也转行进入传统行业了,谁知道呢。