在 LinkedIn 上搜索与 Kotlin 和 Flutter 相关的工作岗位,得到的结果如下(数据限定在美国区域,时间截止到 2019 年 6 月):
-
Flutter:315 份结果
-
Kotlin: 3342 份结果
Flutter 毕竟还是一门比较新的技术,并且它对于一位移动开发者而言,学习成本是比较巨大的。相比之下,Kotlin 对于 Android 开发者而言则非常容易上手。可能也是因为这些原因,Flutter 的工作岗位相对少了许多。
而工作岗位数量上的差别,可能同时意味着这两件事情:
-
在你所在的地区,想要找一份 Flutter 相关的工作会相对比较困难。
-
如果你对 Flutter 已经有了足够多的了解,将更容易在一些对 Flutter 需求量比较高的地区获得一份工作。
这看上去有一些自相矛盾,并且这个方案的可实施性还要视你目前的生活状况、找工作的紧急程度等条件因素而定。
而从另一方面来看,现在仍然有大量的需求招聘 Android 原生开发者,并且 Kotlin 对于更多人来说也是更加简单易学的。当然,大量的工作岗位意味着将会有更多的选择机会,同时也意味着会有更多的竞争者。
Kotlin 和 Flutter 哪个更适合个人或小型团队来开发产品?
如果你是想要使用 Kotlin 或 Flutter 来开发一款自己的应用程序,并投入商业运作,那么刚才所讨论的那些你可以全部忘记,我们来重新思考一张更加完整的版图。
如果你正在开发一款移动产品,那么你非常有可能希望它能够同时运行在 iOS 和 Android 这两大平台上。
使用 Flutter 你可以轻松做到这一点,而使用 Kotlin 则非常困难。
如果你想使用 Kotlin 来进行跨平台开发,可以构建一个 Kotlin 多平台项目,也可以分别单独开发一套 iOS 和 Android 的项目工程,但是不管使用哪种方式,你都必须同时对 iOS 和 Android 的原生开发有足够多的了解才行。
所以,如果你的目标非常明确,就是要以低成本的方式开发一款跨平台应用程序,那么 Flutter 无疑是更加合适的选择。我们稍后会针对这一点进行更加详细的讨论。
关于这个问题,也可以更加详细地将它展开成以下 5 点:
-
你想要开发一款出色的 Android 应用吗?
-
你想要开发一款出色的 iOS 应用吗?
-
你想要开发一款可以同时运行在 iOS 和 Android 平台上的应用吗?
-
你希望你的应用程序不仅仅运行在移动平台吗?
-
你需要自己来编写后台服务器程序吗?
你想要开发一款出色的 Android 应用吗?
如果你的目标是开发一款出色的 Android 应用,并且使用 Android 平台提供给我们的各种最新特性,那么请选择原生 Android 开发。
当然,这并不意味着你就必须要使用 Android+Kotlin 的组合模式,Android+Java 的组合在未来很长一段时间内仍然是可以完美工作的。不过,我坚信学习 Kotlin 能够让你更加享受代码的开发过程。
你想要开发一款出色的 iOS 应用吗?
类似地,如果你的目标是开发一款出色的 iOS 应用,并且使用平台提供的各种最新特性,那么我的建议是使用 Swift 语言来进行原生 iOS 开发。
你想要开发一款可以同时运行在 iOS 和 Android 平台上的应用吗?
如果你想要开发的是一款能够同时运行在移动双平台的应用程序,这个问题就变得有趣了,因为在 Kotlin 和 Flutter 的选择上面你将会有 3 种选项:
-
Android 和 iOS 应用都使用原生的开发方式。
-
开发两个原生应用程序,但使用 Kotlin 多平台项目来共享代码。
-
开发一个 Flutter 应用。
同时使用原生开发的方式要求你或你的团队在双平台之间各自实现,且没有任何代码共享。如果你是位个人开发者,这可能会是最为低效的一种选项,除非你对 iOS 和 Android 的原生开发都非常精通。但同时这也会是最为安全的一种选项,因为原生开发是最成熟的一种开发方式,不管苹果还是 Google,未来都不可能放弃对原生开发的支持,并且你还能尽快使用到各种平台的最新特性。
而如果你想开发两个原生的应用程序,但是要尽可能多地共享两个平台之间的代码,那么可以考虑构建一个 Kotlin 多平台项目。不过这对于缺少经验的开发者而言应该不是最佳的选项,因为 Kotlin 多平台功能还很新,能够使用的工具和第三方库也非常少。
而开发一个 Flutter 应用应该是让你的应用程序能够同时运行到 iOS 和 Android 平台上最快速的方式了,尤其当你是一位个人开发者,使用 Flutter 将可以节省大量的开发时间。另外,由于你并不需要接触多少系统底层的 API,也不用在乎不同平台之间的视觉体验和用户体验差异,因此可以省去很多编写平台专属优化代码的时间。
你希望你的应用程序不仅仅运行在移动平台吗?
Flutter 团队并没有仅仅只是把功能限定在了移动平台上,而是将它进一步延伸到了网页平台,当然这个功能目前还在开发当中。Flutter 给我们提供的便利性就是可以使用同一份代码来让应用程序运行到不同的平台上面,而且随着 Flutter 支持的平台越多,使用 Flutter 的性价比就会越高。
当然你也可以考虑使用 Kotlin 多平台项目来支持网页平台的开发,但是始终要记得,Kotlin 多平台项目的核心思路是共享代码,因此你还是要为每个平台去编写原生的代码,比如开发 UI 界面,以及对共享代码进行调用等。注意,随着你要支持的平台越多,这种方案的成本也会越大。
你需要自己来编写后台服务器程序吗?
另外可能还有一种比较少见的场景,你需要自己来编写后台服务器程序吗?一般的公司都会有专门的服务器人员来开发后台服务器程序,而如果你需要自己来编写服务器程序的话,Kotlin 是值得进行研究的,因为借助 Ktor 框架可以轻松实现服务器端程序的编写,而掌握 Kotlin 语言则是使用 Ktor 框架的前提条件。
关于到底是选择 Kotlin 还是 Flutter,我们还需要将一个重要的因素考虑在内,就是你当前的开发经验以及技术能力在什么层次。这里讨论以下两种可能:
-
你已经是一名 Android 开发者了?
-
你已经是一名 iOS 开发者了?
你已经是一名 Android 开发者了?
如果你已经非常熟悉 Android 原生开发了,学习 Kotlin 将会比学习 Flutter 快上许多倍。Kotlin 会在你当前已掌握的知识基础上迭代累加,并且能让你的 Android 程序开发变得更有效率。
另外,学习 Kotlin 还可以让你拥有开发后台服务器程序的能力,只需要借助 Ktor 框架就能快速地开发出一个简单的后台服务器程序,从而让你的工作流程变得更加简单。
而学习 Flutter 则需要你去掌握一门新的语言(Dart),并且还要去了解一个全新的开发生态,这将需要花费比学习 Kotlin 多上许多倍的时间。
如果你并不是想要享受 Flutter 跨平台特性所带来的便利性,仅仅使用 Flutter 来开发 Android 平台专属的应用程序是一件没有意义的事情。
你已经是一名 iOS 开发者了?
而如果你是一名 iOS 开发者,现在想要了解应该学习 Flutter 还是 Kotlin,情况就有点不同了。
如果你希望继续使用原生的方式来开发 iOS 程序,不管 Kotlin 还是 Flutter 其实都起不到什么太大的作用。不过 Kotlin 至少可以给你提供一种编写后台服务器程序的能力。
而如果你想要开发跨平台的应用程序,那么就需要在 Kotlin 多平台项目和 Flutter 之间做选择了。
正如前面所讨论的,Flutter 是将一套独立的开发流程应用到了两个移动平台上面,而 Kotlin 多平台项目则需要你对 Kotlin 和每个平台的原生开发都有一定的了解才行。
所以在这种情况下,不论如何你都必须学习一门新语言(Dart 或 Kotlin),以及一套新的开发框架(Flutter 或 Android)。
你考虑过选择 Kotlin 或 Flutter 的风险吗?
每当你准备学习一项新技术时,都会伴随着一定的风险。在 Kotlin 和 Flutter 的选择上面,有一些风险是值得考虑的。
Kotlin 已经是一门相当稳定的技术,并且支持 Android 平台开发已经有超过两年的时间了。它可以和现有的 Android 工程代码完全兼容,是一种风险非常低的方案,基本不会影响到你当前项目的稳定性。
相比较而言,Flutter 则是一门风险相对较高的技术,因为它已经完全脱离了应用程序的原生开发方式。目前使用 Flutter 技术的成功项目案例比较少,对这项技术非常熟悉的开发者也比较少,这在招聘方面会造成一定的难度,可能需要现有的团队都去学习这门新技术才行。
此外,Google 曾经有过在不进行任何通知的情况下就将一个项目停掉的历史,所以有些人或许会担心 Google 未来是否会有可能放弃对 FLutter 或 Kotlin 的支持。
事实上,不管是 Flutter 还是 Kotlin,目前都已经具备一定的规模,Google 在短期内是不太可能放弃这两项技术的,因此不管你的选择是什么,都不必在这一点上担心。
所以,你会学习 Kotlin 还是 Flutter 呢?
看到这里,或许本篇文章在 Kotlin 和 Flutter 的选择上面已经给你带来了一些灵感,但它最终是没有标准答案的。所以如果你想要让我给出一个结论的话,我的回答仍然还是:这要视情况而定。
具体的情况最后再来简单概括一下吧:
如果你想要快速找到一份移动开发者的工作,建议学习 Kotlin 来进行原生的 Android 开发(或 Swift 来进行 iOS 开发)。
如果你想要快速构建自己的跨平台应用,建议尝试 Flutter。
结尾
最后小编想说:不论以后选择什么方向发展,目前重要的是把Android方面的技术学好,毕竟其实对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
想要拿高薪实现技术提升薪水得到质的飞跃。最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。
当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的。
高级UI,自定义View
UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。
不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
928639008)]
高级UI,自定义View
UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。
不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!
[外链图片转存中…(img-6npphRby-1714928639009)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!