1. 概述
互联网公司的出现大部分的外部原因发现市场问题和解决问题,QQ的出现是因为ICQ没有中文版,携程的出现是为了解决旅行行程安排的繁琐,今日头条的出现是为了解决传统媒体内容创作的分散性。都是发现了市场上的问题,然后专注地、努力地解决这个问题,因为解决了具体的问题,所以用户就感觉他们有用,这样公司就有了用户,就有了继续发展的可能。使用和依赖互联网通信技术承载公司主营业务的公司就是互联网公司。互联网公司的分类有以Google为首的搜索引擎,有以腾讯为首的即时通讯,还有以阿里巴巴为首的电子商务,以及像新浪、网易等的综合门户。
2. 认知实习内容
2.1 字节跳动与Flutter
字节跳动所涉及的短视频、自媒体领域在之前客户端深入点的基础技术更多是搞插件化、热修复、性能优化、安全加固等,跨平台方向一直都是前端工程师在不遗余力地推进,属于大前端方向。而Flutter是客户端更有主导的跨平台技术方案。而且,字节跳动并不是说只有一套跨平台技术栈,公司内部也是多套跨平台技术栈并存,也包括自研的方案。截至目前,字节跳动有很多业务落地了Flutter技术方案,包括今日头条、西瓜视频、皮皮虾等20多个业务在使用Flutter开发,有纯Flutter工程,也有Flutter与Native的混合工程。
Flutter是一个由Google开发的开源移动软件开发工具包,用于为Android,iOS,Windows,Mac,Linux,Google,Fuchsia跨平台开发应用。作为一个UI框架,可以快速地基于上述操作系统构建高质量的原生用户界面。Flutter在各个原生的平台中,使用自己的C++的引擎渲染界面,包括高效的Skia2D渲染引擎,Dart运行时和文本渲染库,没有使用WebView,也不像React Native、Native Script一样使用系统的组件。简单来说平台只是给Flutter提供一个画布。Flutter一出生就以UI漂亮美观、像素极可控、性能流畅、极高的开发与交付效率、良好的开发体验、可媲美原生性能等特点吸引广大开发者的眼球,自渲染引擎甚至具备开发游戏的能力。从Hybrid App到React-Native,再到Flutter,跨平台技术层出不穷。目前来看,Flutter是跨平台开发的最热门技术,可能也是当下最有潜力的跨平台技术。
2.2 闲鱼与Flutter
在电子商务业务快速发展的闲鱼,需要考虑从产品到技术的转化中,怎么减少不必要的产出。研发无人化时,跨栈可以统一多端的逻辑,减少至少一倍的工作量,在导购和营销体系上,闲鱼大量使用了Weex作为技术方案解决这个问题,但是Weex在主链路上的表现,暂时无法满足要求。所以闲鱼从2017年开始尝试Flutter这种新的技术,在这个过程中,并没有一开始就舍弃Native拥抱,是经过了很长时间的前期准备。Flutter只是闲鱼在技术上推进研发无人化体系的一种解决方案的选型,在这个过程中,Flutter的渲染引擎的一致性/工程体系完整性/性能,比如帧率等的表现都满足闲鱼现阶段的目标,而经过闲鱼一年半的研究和建设,在引擎和工具体系层面,继续选择Flutter作为Native侧业务支撑的解决方案。
在移动联网时代,Android和iOS两大阵营长期共存,再加上体系成熟的Web前端技术,导致出现同一个应用需多端重复开发的人力成本问题。正因如此,移动时代下的跨平台技术是一个需要长期研究的课题。如果当下的跨平台技术已经有比较完美的解决方案,可能就没有新技术萌芽的机会。而事实上,目前业界比较成熟的跨平台技术都存在一定的缺陷,比如小程序(WebView)渲染耗时过长,白屏率会影响转化收益,能实现的功能非常受限;再比如React-Native的性能不足、问题排除难、维护成本高等。而Flutter的出现,让这些跨平台开发问题有所改善。
3. 关于Flutter的学习
在学习Flutter之前的准备,前端框架例如React、Vue、Angular,选择一个或者多个,把一整套啃下来,至少做个项目,深入分析框架源码实现。以及在之前使用过面向对象的语言,比如Java、C++,对Object Oriented Programming概念比较熟悉。前期准备工作做好后,可以正式进入Flutter的学习。
对于Flutter的学习,主要是基于两点考虑:第一,学习一门全新的语言:Dart。虽然编程语言千变万化,但是学习路径永远是一样的。需要做的是去官网把Dart文档通读几遍,特别需要了解如何导入包,异步编程,注释,命名规范,如何定义变量作用域。第二,就是学习Flutter框架。1.在Flutter官网上看懂怎样配置Flutter的开发环境,然后再Windows上安装Flutter SDK。2.配置好基本环境后可以运行一个Hello World 程序,完成官方给定的第一个Demo,并解决遇到的问题。3.关于Flutter本身的学习资料,去把官方网站的文档通读几遍,去Coursera等网站上找视频课程,然后查找一个比较好的开源项目,研究一下代码,一步一步将代码迁移,完成主干线上的代码。4.找一个项目,先做界面,然后拉取数据,而数据的接口是其他语言调用通过的,尽可能的避免一些未知问题,比如数据接口不通等。5.重构,重构是软件开发的重头戏,所有的优化都必须是以此为基础的。大概两周的时间学完以上的资料,之后可以开发一个简单的App提交到App Store审核。以上是我认为的Flutter学习之路,但这还远远不够,必须有代码积累的实战经验才能掌握!
4. 结束语
在网上搜索互联网企业时,每个公司都是那样的出众,自己也希望经过几年的求学之路,能够找到一份跟自己所学的专业挂钩的一份职业。这次认知实习也让我更加认识了企业招聘计算机人才的一些看法和要求,过硬的专业知识在应聘时永远占第一位,其次是对求新知的主动性与个人的学习能力的要求。因为计算机行业本身就是这样一个行业,在这个领域单一永久的可用性知识是不存在的。随着计算机软硬件的更新换代,计算机领域的新技术,新知识都将是我们需要学习的,所以对新知识的接受能力要求较为严格。Flutter就是很典型的例子,近几年Flutter的使用占比让人们对其越来越有信心。与之俱来的是公司员工需要在短时间内迅速学习Flutter框架并应用于实践中。
在网上看到字节跳动、阿里巴巴等公司员工发的相关技术帖子时,我深深感到了自己的不足,专业理论知识和实践应用上的差距。所有能够在计算机领域立足的人,都是因为有着不断积极学习的态度和常年开发的经验。现在在校学习的我们也是如此,只有将所有有关的领域的基础打牢靠。在接收上课老师的知识的同时学会自己积极主动的学习。只有学会主动,学会积极才会在之后的计算机领域拥有自己的一席之地。通过这次认知实习,让我对实际的计算机工作也有了新的认识,学到了很多在课堂上学不到的知识,也让我更加看清自己的不足之处。在以后的工作学习中,我会更加努力,取长补短,虚心求教,不断提升自我,在社会上贡献出自己的一份力量。将来无论在什么岗位上,都会努力上进,都会做一个对自己,对工作负责任的人!