推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

干了十年 Android 开发,为什么我再也不想继续了

   2023-07-07 网络整理佚名1010
核心提示:出现了,并且起初被认为是“”的杀手(嘿,你现在可以用同步方式编写所有异步代码了!X,我记得,好几个小时的设计讨论都让我的大脑直接宕机了。资深软件工程师职位来说价值并不高。可悲的是,有很多开发者会使用这些库。幸运的是,在过去几年里,我曾在几个项目中从事后端工作,这使我有机会过渡到后端开发,彻底离开安卓,专注于开发每秒处理数十万用户请求的系统,这对我来说非常有吸引力。

本文最初发表在 Level Up 博客上。

在这篇文章中,我将讨论为什么我在该行业工作了近十年后永远离开了开发。 在开始之前,我先简单介绍一下我在这个领域的职业生涯。

美好时光

我从 2013 年开始就开始开发,当时 4.4 是热门新事物。 仍然是标准的,还有其他烦人的东西。 我见证了架构从 MVC 发展到 MVP/MVI,然后发展到 MVVM,最后发展到 MVVM 和 MVI 的混合。

我记得,当它出现时,一切都突然变得反应起来,变成了流。 我记得,l33t 开发者(Hi Jake)正在谈论新的黑马。 我记得, , 出现并接管了这个行业。 我记得,<async>出现了,最初被认为是一个“”杀手(嘿,你现在可以同步编写所有异步代码!不需要流!)。 这个想法很有趣,但很快就被证明只是一个好主意,因此像这样的低级异步原语成为了 Rx-Way。 但事实证明,很多使用它的人都有手臂自残的情况。 作为最后的手段,重新引入了精益冷流(Cold)和热流(Hot)的概念,请允许我向您介绍一下:最后,我们得到了一个轻量级的、受支持的版本。

我记得我与同事 David 围绕状态和事件进行的所有有趣对话,什么是状态,什么是事件? 事件对状态有何作用,反之亦然? 我记得2年前,2被Koin和Hilt取代之前,我熬夜学习。 我仍然记得第一次阅读鲍勃叔叔的《干净的架构之路》是我开发生涯中最令人大开眼界的时刻之一。 现在,我可以设计和编写几乎任何应用程序,而无需考虑 MVVM/MVP/MVC 或任何其他特定于平台的细节。 我知道为什么测试很重要,我尝试过 TDD,对它又爱又恨,并且我了解了 DDD 和 BDD。

我的火车到达终点站了吗?

(我选择这个副标题是因为我现在正在从瑞士开往德国的火车上写这篇文章。)

后来我加入了保时捷、IBM等大公司的领导团队,这是一个很好的旅程,经过6-7年的经验,我达到了我的目标。 我曾开发过复杂的应用程序,涉及大量 E2E 加密、传感器通信、NFC 芯片、BLE、高流量聊天应用程序以及非常著名的待办事项列表应用程序等。

大约六年后,我开始作为首席开发人员参与该项目。 我学会了识别我参与的大多数项目的核心技术问题(架构和团队成员对某些模式有不同的理解),我也学会了如何指导团队解决这些问题,以及如何成功完成项目。 对我来说,现在的新事物只是学习新的 API 更改/框架来解决我们多年来一直在解决的问题,但新的框架/API 做得更好(不再需要手动处理生命周期、XML 布局等)。

我之前的后端经验

幸运的是,过去 4-5 年我一直在客户项目的后端(根据要求)工作。 我花了很多时间学习后端开发的来龙去脉,编写并发代码,创建分布式系统,纵向和横向扩展,处理分布式事务,编写可配置代码,以及在环境的不同阶段执行预期的效果。 我研究了不同类型的数据库(图、关系、文档),什么样的数据应该使用哪个数据库,我学习了K8s,我用Go重构了Java EE系统。 看看 Go 编译的二进制文件,它的内存使用情况和几乎为零的内存占用,我就能明白为什么 Go 如此神奇了。 作为一名后端开发人员,我解决的问题与我在开发中遇到的挑战(我很快就会谈到)无法相提并论,而且作为一名后端开发人员,我解决的问题比在互联网上猜测像素效果还要多。 更大更深。

真的是这样吗?

最终,我厌倦了与 UI/UX 设计师的所有会议,厌倦了向他们解释原理,或者为什么我们不能像应用程序 Y(不是我们开发的)中那样触发行为 X,我记得,花了几个小时。对游戏设计的讨论已经让我的大脑停止运转了。 这种情况发生在很多项目中,其中一些项目具有一定的复杂性,一旦团队了解了干净的架构和领域驱动开发,我们就可以在很短的时间内编写领域+数据层。 一旦您向团队解释了各种身份验证过程,正确处理令牌刷新逻辑就变得轻而易举。 主要挑战几乎总是在 UI 层,随着框架 API 的发展和变化,UI 层也在不断变化。 UI 层很大程度上受到 UI/UX 设计师和 PO 的影响。 最近,几乎每个项目都变成了日常工作,越来越少地关注工程,更多地关注业务、实施,几乎一直在摆弄 API。 在最好的情况下,有一个令人耳目一新的任务,比如用一些线性代数知识编写自定义视图。 但通常,而且几乎总是一些无聊的事情,反思这一切,我问自己:这对我有什么好处? 我确实赚了很多钱,但我马上就30岁了,几年后我会在哪里?

作为一名经验丰富的开发人员,我只适合这个职位。 我所有的技能都是为了开发可在平台上运行的可维护、干净的代码。 有些代码会按预期被垃圾收集器杀死,而有些代码会在垃圾收集器中幸存下来,因为它本来就是这样的。 如果消失得很快怎么办? 考虑到如此优秀的技术,以及人们已经用它构建了一些出色的应用程序,我不会将任何新项目作为单独的本机 iOS 和本机应用程序来启动。 老实说,您的技能对于大多数公司的首席/高级软件工程师职位来说并没有那么有价值。

发展正在下降

我成功地完成了我的最后一个项目。 现在是做出一些改变的时候了。 我不想花几天时间讨论边界或重复出现的毫无意义的问题,例如是否使用单选按钮或复选框。 我不想学习新的库来更好地处理生命周期或导航,然后看着它们在接下来的 12 个多月内再次被替换,而我在过去 10 年里已经这样做了很多次。 开发人员有几代人,每一代人都觉得自己有权编写新的库来处理 UI 状态,或者编写新的导航库。 测试? 不,不。 遗憾的是,有许多开发人员使用这些库。 开发正在慢慢被 Web 开发的混乱所吞噬(你尝试过安装 -react-app 吗?你将下载数千个库,包括一些易受攻击的库)。

幸运的是,过去几年我从事过几个项目的后端工作,这让我有机会转型到后端开发,完全离开 ,专注于开发每秒处理数十万用户请求的系统,这对我来说非常有吸引力。 现在,路线图上有一些我作为开发人员不知道的新东西:获得 K8s 认证、掌握多个云、深入学习特定数据库、深入理解。 我觉得编程的神秘感让我重新焕发了活力,处理复杂的工程问题也令人兴奋。

可悲的是,对于纯粹的开发人员来说,架构师或首席/高级工程师的道路是封闭的。 纯粹的开发人员根本不具备履行这些职位所需的技能。 这对我来说是一次伟大的旅程,但我再也不会作为开发人员参与项目了。

英文原文:

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON