2023 Forward 之 专业提升
一年之计在于春,展望并规划一下 2023 年。
想到什么写什么,比较个人情绪化,定了几个主题:
- 专业提升
- 投资理财
- 家庭规划
PS: 预计是写成一篇文章的,写着写着就超字数了,还是分成三篇吧。
本文是第一篇,专业提升。
2022 Review
去年学到一个新词,叫“达芬奇综合症”。
这就是我啊,惭愧!
回顾去年,在软件编程上的学习跨越了多个不同的领域,从 iOS 的 SwiftUI、Concurrency,到 Android 的 Jetpack Compose,再到跨平台的 Flutter、React Native、Tauri,Linux 的 Nginx、Docker,后端的 Go、Node,Modern C++,以及半途而废的 Rust,CI/CD 的 Jenkins......真是茫茫多啊!
上面罗列的大部分都是浅尝辄止,并没有花时间和精力去深入研究一下,所以对各个不同技术的优缺点了解的还不够透彻。
但也不是说走马观花,没学到一点,最起码了解到了解决同一个问题可以有不同的技术思路,很多概念性的东西是跨语言、跨平台的。比如 Redux 的概念,不仅仅在 Web 端的 React App 上使用,还可以用其他语言实现一个类似的状态管理库,比如 Swift 的 ReSwift,Kotlin 的 Redux-Kotlin,Flutter 的 flutter_redux。
当你脑子里有这些杂七杂八的东西的时候,你可以迅速的知道适合用哪一种技术更快捷或者更稳妥的实现产品需求。
我自认为自己不是智商很高的人,也没有对某一细分领域能够一直钻下去的耐心,思维相对很跳脱。
我是很喜欢编程,但我也喜欢去了解一些产品、设计、运营的东西,总是梦想着做一款自己喜欢又能给别人带来便利的工具型产品。
我的学习理念就是二八定律,用 80% 的时间学习 20% 的知识。
任何一门新技术出现时,它的核心功能只有 20% 左右,但是却能满足 80% 的场景。我要学习的是精髓,我不需要掌握这门技术的方方面面或者一些少见偏门的奇技淫巧,又或者花大量时间去钻研一些实际上用不太上的东西,因为这些都是比较难学的部分,却能够靠搜索就找到答案。
举个具体的例子,比如 Docker,我自己的服务器正在跑的镜像有 12 个,我只会用 Docker Compose 来管理服务,对其他的 Docker 命令完全不熟,也记不住那些命令,我甚至连怎么自己创建一个 Docker 镜像都不知道。我不是专业运维,没有必要去了解那些东西。只要能满足我的日常服务器管理,那些命令的用法,会用 Google 就够了。
2023 Forward
今年的学习规划,我觉得应该要返璞归真了。尽量摈弃一些目前阶段不太实用的东西,从宏观上去学习一些 Theory 的概念,然后钻到稍微底层一些地方,减少上层应用的无效探索。
2023 年重点学习的首先还是跟工作相关的 iOS 领域,以及跨平台的 Flutter,现代 C++,算法与数据结构。
闲话少说,下面就展开细说一下这几个主题:
iOS
iOS 开发的所有重心转移到 Swift 上,Objective-C 相关的东西已经没有任何研究的价值了。而 Swift 的重点则放在 Swift 5.5 的 Concurrency 和 Actor, 5.7 的 Sendable 上,这几个新添加的新特性比较具有实用性,能够较大的解决实际应用上的很多繁琐问题。Swift 5.8 在 2022 年 11 月 19 日宣布 ,估计不久就会在三月份正式发布了。
Swift 6 也已经在路上,Swift Core Team 表示这是今年的重点,会在开发体验上大力改善,然后强化 Swift 语言本身的能力,为主要语言特性(例如内存 ownership 和并发性)提供出色的解决方案。今年的 WWDC 大会上估计会发布 Swift 6 相关的东西,拭目以待吧。
怎么通过实际项目去学习上述这些东西呢?在公司的项目上很难做,尝试过接入 Swift 做 UI 层,不太理想。很多不规范的 Objective-C 变量没有用 nullable
或 nonnull
修饰,没法对应到 Swift 的 optional。然后很多 header 文件是通过 pch 全局引入的,bridge header 会引入非常多的文件导致无效编译,各种宏定义完全没法用在 Swift 上。
将 Swift 用于 OC 老项目的唯一可行部分是用 Swift 做独立模块,通过 framework 引入,比如 network 部分等,这部分已经在尝试做了。
我还打算弄一个 Swift on Server 的项目,基于 Vaper 做一个 Web Server,托管自己的一些 API 以及网站。这就会涉及到方方面面了,如数据库、高性能 HTTP、TLS 等等。
Flutter
Flutter 越来越火,发展也越来越快。最新的稳定版本是 v3.7,此版本更新了很多内容,其中包括 iOS 平台的 Impeller 渲染引擎,增加build ipa
命令的发布校验功能, 减少 iOS 设备上动画效果的卡顿等等。
Flutter 目前对 iOS 的支持好于 Android,给 iOS 开发者准备了一系列资源,包括:
- 给 SwiftUI 开发者的 Flutter 指南
- 给 Swift 开发者的 Dart 指南
- 给 Swift 开发者的 Flutter 并发开发指南
- 将 Flutter 添加到现有的 SwiftUI 应用中
- 为 Flutter 创建多渠道 (针对 Android 和 iOS)
公司内有一个半死不活的项目是 Flutter 2.5 的版本,另外还有两个别的公司的 App 项目用 Flutter 3.1 实现的,打算都升级到最新版本,跑一段时间试试稳定性。
为了跨平台,加大对 Flutter 的投入是值得的。同时,如果需要开发 Windows PC 应用的话,也可以抛弃 .net WPF 或 MAUI 那一套。
去年我用 GetX 整了一套开发小型 Flutter App 的项目模板,用起来很爽,虽然说 GetX 隐藏了 Context 的复杂性,变的不是很纯粹,但就是开发体验爽啊。今年打算在此基础之上再完善一下,升级依赖库的最新版本,看看有没有其他想法加进去。
然后还有基于 Riverpod 的状态管理思路,Isolate Group 的新玩法。。。都可以尝试一下。
PS: 我个人认为,Flutter 是接私活赚外快的利器。😄