硬核

软件工程爬坑笔记(序)

. 7 min read . Written by seki
软件工程爬坑笔记(序)

这篇文章是我学习软件工程的笔记合辑。

作为一名交互设计师,为什么我要学习软件工程?

从半年前开始,我一直在参与技术中后台的业务,架构组的工程师和开发者便是我的目标用户,为了更好理解用户的需求、建立沟通,我需要去了解他们的工作。

然而并非每个设计师都会接触到这样的项目。尽管,交互设计是一门交叉学科,拓宽知识面有益无害,但学习一门抽象的学科始终不是什么有趣的事情。在将自己的笔记搬到网上之前,我需要为潜在的读者负责,解释一下软件工程与交互设计这一职业可能的关系。

在我看来,软件工程连接着体验设计的过去与将来。


设计的过去

相对于软件生产而言,交互设计并不是什么年代久远的概念。

软件诞生于60年代、兴盛于70年代,而直到1981年,世界上第一个图形界面诞生,软件才开始拥有与一般用户交互的手段,至此,人机交互成为软件设计的一环。

http://n1.itc.cn/img8/wb/recom/2016/06/16/146607428534374258.JPEG
90年代流行的高度风格化界面

交互设计其实源于开发者的工作,而非视觉艺术。在我看来,体验设计(UX)等于交互设计+UI设计。

起初,软件行业并没有交互设计和UI设计这样的职位,图形界面由艺术家与开发者完成——前者绘制图形,后者在计算机上将其实现。

后来,互联网开始走向巅峰,开启了自己的时代。

互联网产业师承于软件产业,但并没有完全取代后者,软件工程依然在不同行业发挥作用,2019年波音737的几起空难就与其软件问题有关。

https://ftp.bmp.ovh/imgs/2019/12/46177f3e3bcead31.png

互联网行业,至少在消费互联网行业,最大的特点在于多变。软件时代的产品至少形态明确,即便需求不够明确,也可通过喷泉模型等方式进行开发,而互联网时代,一个登上Appstore推荐榜首的产品也未必能活过三个月时间,这意味着产品需要快速适应市场。

另一方面,移动互联网时代来临之后,用户场景发生了变化,使用时间碎片化。

之后便是大家已经熟知的故事。


设计的未来

对于科技公司而言,研发是最重要的资源,而很长一段时间以来,互联网公司更多是以产品为导向的。

也就是说,开发者很少有机会安安静静的写自己的代码,因为需求在变,业务也在变。产品线无法完成目标便会被无情砍掉,而开发者的工作也随之结束,再投入到下一次加班加点之中。

时间来到2017年,这时候互联网下半场开始被谈论,“流量红利见顶”也同时意味着巨头的形成。

IM、社交、支付、出行,人们只需要那么一到两个就已足够,这些产品的地位无可替代。

于是巨头们的扩张步伐开始放缓,转而开始填补过去留下的坑。


相对于过去的ToC互联网产品,另一些侧重研发的业务也在兴起,软件方法可能被用于以下工作:

1.效率工具

过去小步快跑的模式留下了很多坑——开发者为了跟上需求,很多时候只能把漏洞一掩,而没有时间完全修补。

在产品迈入成熟期后,一些架构组选择将产品后台完全重构,毕竟,当前产品的业务已趋于稳定,不会有太大的需求变化,优化过去的架构,不仅可以提高产品效率,也可以为将来的新需求提供便利。

磨刀不误砍柴工,在完成重构之前,架构组会造一些新的轮子来提升工作效率,甚至有一些更科技范的方式,比如代码自动生成、自动搭建前端页面(后台产品不一定只面向技术人员)等等,之后,再完成后台的重构。

这些轮子还可以用于其它业务的架构,而这也是技术中台诞生的原因。一个能理解软件方法的用户体验设计师,自然可以很好助力这些工作。

2.互联网金融

金融级产品是很不互联网的业务,但互金却可能是互联网的下个增长点。

金融业务对软件的稳定性和安全性有着很高要求,需求变化也并不少,因此使用软件工程的方式进行架构是很有必要的。同上,这些业务团队需要造很多轮子。

3.云服务

我个人理解IaaS层是和设计师没什么关系的,现在互联网巨头搞的主要是PaaS。

前面说的效率工具,甚至公司的成熟技术也可以放在云上,通过API将服务提供给客户,这就是PaaS。

PaaS的pm大多是技术出身的,这不难理解,因为PaaS是面向开发者的(外行也不太看得懂)。但并不意味着一定要会研发才能做PaaS产品,此外一些PaaS也需要图形界面。

SaaS层则更多面向一般用户,倒不需要太多软件工程的知识。


总而言之,我认为设计师学习软件工程有这几项明显的好处:

·理解开发者思维

设计师需要会写代码吗?

答案是否定的。术业有专攻,设计师并不需要了解具体实现的方式,但是理解开发思维可以更好与团队协作。

与其在工作中吸收零碎的知识,不如系统性的学习一门学科,而软件工程是一个很好的入门方式。

·面向未来的业务

也就是“设计的未来”中讨论的内容。

·改革现有的工作方式

实际上,软件方法里一些司空见惯的东西,一直在影响着互联网行业。

比如近年流行的“前端组件库”,在我看来就是一种面向对象的设计思路,与工程化工作十分相似。

比如PM津津乐道的“秒变小白”,类似于软件设计的“自省法”。

后续的文章里,还会有更多这样的例子。