黄金十年,致穿越而来的 Web 开发者

来源:互联网 发布:谈恋爱软件靠谱吗 编辑:程序博客网 时间:2024/06/06 08:30

你好,朋友们!我希望你喜欢我们的这个新世界。它跟2007年的时候有很大不同。快速提示:如果你有抵押贷款,还是回去把它取消了吧。相信我。

我很高兴你还对计算机感兴趣!现在,我们有了很多不同于10年前的新情况,这些情况带来了新的挑战。我们的手腕和脸上都带着电脑,把它们放在口袋里,把它们放在冰箱和水壶里。汽车自己驾驶可能比人类更好,我们教会程序去参与各种比赛,在这些方面,它比人类更出色——不过喝酒比赛除外。


(Web) App

在你踏入这个时空之前,你可能已经看到了 iPhone 的发布。苹果是最大和最富有的科技公司,这主要归功于 iPhone 及其操作系统 iOS 。 谷歌有个与其竞争的手机操作系统叫做 Android ,微软则试图用 Windows Phone 来分一杯羹,但没有成功。

我们开始把应用程序叫做 app,而一些网站则自称为 web app。 2008年,谷歌发布了一款名为 “Chrome”的新浏览器。九年后,它成为了最流行的上网方式。

Chrome 团队在 JavaScript 方面投入了大量工作,代码逐月改善。Web app 是使用大量 JavaScript 编写的,它们类似你的时间的桌面界面。

许多公司也投资于 JavaScript 使其变得更好--它现在支持类和模块。我们使用可以编译为 JavaScript 的语言,如 TypeScript (来自微软,现在很酷)或 Flow。

近来我们写了很多 JavaScript 代码,因为没有人再支持 Flash 。我们甚至在服务器上运行 JavaScript ,而不是 Perl,使用名为 Node 的技术。当然,实际上没有听起来这么容易。

还记得 Swing、 SWT 和 wxWidget 之类吗?我们不得不在浏览器世界重造它们。几个新的 UI 编程模型出现了,它们主要集中在组件上。

我们必须找到一种方法来设计、构建和测试 app ,同时保持它们的响应能力(我们用这个术语来描述一个在手机上看起来不像垃圾的网站),我们也需要使其保持苗条 —— 不是每个人都有快速的网络连接,但每个人都有一个浏览器在口袋里。

为了协助所有这些,现在有组件框架。这个术语很含糊,因为它包含了谷歌的 Angular 、脸书的 React 和社区的 Vue 之类。但这是我们拥有的最好的术语。

顺便说一下,我不确定你是否记得2007年以来的 Facebook(脸书)。那个时候它在美国愈发壮大,现在它变得更大了,拥有超过十亿的用户,它也是世界上最大的代码库之一。

Facebook 开发团队编写了许多优秀的代码并发布于网上。他们有自己的 F8 会议。大多数大公司都有自己的会议。

CSS 也不得不进化,因为新的 app 需要更加复杂的布局。我们不再使用带有图像的表格,帧也不见了。取而代之,我们已经创建了新的标准,比如 CSS Float、 Flexbox 和 CSS Grid。

人们必须对这些标准进行迭代,并且他们已经建立了库来使事情看起来一致,比如 Bootstrap、 Foundation 等等。类似于 JavaScript , 我们已经创建了编译成 CSS 的语言。它们弥补了 CSS 遗漏的一些东西,比如变量或模块。这仍然很难。

迷茫不可怕

不要因为迷惑而感到害怕,事实上我们都有点迷惑,但是迷惑不是什么大不了的事。如今世界上有那么多开发人员,科技公司也正在变得越来越成功。我们使用“创业”这个词来描述那些成长迅速但是不知道接下来该怎么办的公司。但是即使是这个词现在也变得老旧了。

数据

相比以前,现在有更多的程序员,更多的程序和更多的设备。我们现在有了更多的数据。计算机必须变得强大到足以处理所有的这些数据,我们已经开发了几种技术来把这些数据转化为深刻的认识。

首先,我们创建了一个叫做数据科学的领域。数据科学的目的是从数据中学习和提取信息。

例如,一家名为 Waze 的初创公司让用户在他们自己的手机上安装 App 来追踪他们驾驶轨迹,因为有很多人安装 APP ,Waze 有了很多关于汽车行踪的数据。他们用这些数据开发了一个程序来了解哪里有交通堵塞。

现在,当你打开你手机上 Waze  ,你可以在地图上看到实时的交通拥堵情况然后选择另一条路。

Waze 已经被谷歌收购的。这在创业公司里是经常发生的。

数据科学领域有三大挑战——数据存储、了解数据和利用数据。如今我们在这三个方向上都有所进步。让我们分别看看这些挑战如今的现状。

存储

现在我们需要存储更多的信息,然后找出哪个部分是重要的。那么我们就需要发明出新的数据库。而像 MySQL 和 PostgreSQL 不能满足我们存储 TB 级数据的要求(我们叫它大数据)。

大型的互联网公司通常都面临着这些挑战,因此他们处于开发这些技术的前沿。大多数时候,技术首先在内部使用,然后是开源。

有一场我们称之为 NoSQL 的运动。这类新的数据库使用了传统关系数据库的一些约定,并将它们进行了转换。

比如 Hadoop,它处理数据如何存储在许多硬计算机上。它定义了一种处理称为 MapReduce 的数据的方法(灵感来自于 Google 的一篇论文——它是大公司近来撰写的优秀科学论文之一)。

之后,又有了 Cassandra ,它的数据不以表形式存储,而是一组键和列,这些键和列可以存储在不同的计算机上。它还确保这些电脑中的任何一台都能在不造成数据丢失的情况下离线。

再后来,我们有了 MongoDB,一款易于安装和使用原型应用程序的数据库。在2017年,我们对待科技的态度和十年前对待流行明星的方式一样 —— 我们狂热地捍卫其中的一些人,并强烈地憎恨他人。MongoDB —— 就像乐队中的“五分钱乐队”那样 ——属于后者。

然后,云供应商意识到这一点,让我们直接在云上运行我们的容器。他们给了我们像 Marathon 和 Kubernetes 这样的工具,称为编配框架(orchestration。这些框架可以让开发人员在容器中运行应用程序,而不用担心可伸缩性、容错、监控和发现。服务器变成一次性的,我们不再需要给他们聪明的名字了。

这也允许开发人员构建小型应用程序(称为服务或微服务),然后独立运行它们。由于这些微服务具有很少的外部依赖性,因此我们开始研究使用新的编程语言,如 Go(它是为了使用可并发性而创建的)和 Java。是的,Java 仍在,并且会变得更好。

还有像 Scala 和 Clojure 等语言让我们可以使用 Java 虚拟机和所有相关的库。像 AirBnB 这样的网站使用几种编程语言和数据库运行数百种微服务。

由于这些微服务,我们不得不重新审视我们的一些编程模型。我们现在拥有更多,更小的应用程序,这些是我们必须协调的。

因此,有像 Apache Kafka、Google PubSub 和 RabbitMQ 这样的工具可以帮助爱闲聊的电脑更好的沟通。Kafka 是由 LinkedIn 创建的,一个社交网络,在此人们可以都在尝试用开放的方式来构建软件。例如,名为 EmberJS 的 Web 框架使用社区驱动的6周发布周期。其他编程语言和流行的开源软件(例如 GitLab 和 Microsoft 的代码编辑器 Visual Studio Code )使用每月发布周期来确保它们不会完全发生重大更改。这些软件包在每个发行版中都有一点改动。

我们构建软件的方式

编配框架引入的额外复杂性大部分与大型团队相关的。记住 - 我们现在比以前有更多的人在构建软件,每个程序员都想马上发布他们的代码。如果你的公司有数百位开发人员在网站上一起工作,则需要确保他们不必协同其版本。

所以我们以小团队来构建软件。团队通常拥有一些 DevOps 技巧,并且团队成员对如何部署软件的操作有足够的了解。他们使用某种形式的敏捷过程,其中他们在短时间内持续发布软件。和 Spotify (这是一个新的音乐流媒体服务)一样,有些组织也会尝试其他形式的层次结构,如 Squads、Chapters、Tribes 和Guilds(小分队、社团、部落和工会)。

所有这些项目(以及之前提到的许多其他项目)都是由一群人公开开发的。有时他们是由一家公司赞助的。大部分情况下,开发工作都在一个名为 GitHub 的网站上。在那里,人们可以探讨软件,公开地构建,通过回复表情符号来表示赞赏。表情符号是我们现在用来表达情感的特殊字符,比如点赞。 :-)

现在还有更多的社区,他们都在尝试用开放的方式来构建软件。例如,名为 EmberJS 的 Web 框架使用社区驱动的6周发布周期。其他编程语言和流行的开源软件(例如 GitLab 和 Microsoft 的代码编辑器 Visual Studio Code )使用每月发布周期来确保它们不会完全发生重大更改。这些软件包在每个发行版中都有一点改动。

哦,编辑器之战还在。我们在运行在浏览器中显示文本字段的桌面应用程序中编写我们的代码。这非常棒。它表现相当不错(每个版本都会变得更好),而且可以自定义。它甚至有一些支持 VIM 模式!

会议是按照每个主题举行的。他们是很有趣的,并且他们是无处不在的。参与一个 - 你会看到各种各样的人!结交一些朋友,逛逛,获得灵感,说出来。也许可以参与一个 algorave 节目 - 他们对音乐、图像和代码所做的事情是惊人的。