假如编程是一款对话游戏,测测你能打到哪一关!
系统
欢迎进入本游戏,现在给你的角色起一个名字吧!
输入名字:Chat 达人
系统
Chat达人你好, 现在你是一个有3年开发经验的程序员, 这一周,你将会和你的同伴 Samara 一起给一个音乐视频推荐系统开发功能原型。最初的特性集不需要打磨得多么完美,只要能实现基本功能,并从对产品感兴趣的人那里收集反馈即可。
对这个崭新的音乐视频推荐系统,你闻所未闻,所以不知道应该对它有何期待。
此时你的选择是……
a. 上网搜集竞品资料,参考竞品的功能为自己提供灵感。
b. 和客户做进一步沟通,了解具体需求再做打算。
c. 和你的伙伴脑暴一下,看能不能碰撞出出色的想法。
你点击了b。
你约见了你的客户 Ross,想和他简单聊聊,以便了解从何处入手。
以下是你们的对话。
向上滑动阅览
你:Ross,你好!感谢你的接待。我的开发伙伴 Samara 也在听咱们的谈话。如果你方便的话,咱们随时可以开始。
Ross:好的,我已经准备好了。第一步要做什么?
你:是这样,我想先听一下你的想法。你为什么会对音乐视频推荐感兴趣呢?了解这一点可以帮助我们确定在原型设计过程中应该重点关注哪些问题。
Ross:可以,没问题。我们开了一个博客,在里面发布一些精选音乐视频列表。这个博客到现在已经开了有好几年了。我们有专业的合作方,专攻各个种类的音乐列表制作。不过,人们如果想要查看某个列表,需要手动搜索。
几年来,我们在博客上分享了 4000 多个视频,已经形成一个相当大的音乐库,但现在唯一的检索方式仍然是查找博客文章。
我们现在开始考虑怎么能更便捷地检索音乐库。考虑了几种方案之后,我们认为构建一个推荐系统之类的东西也许行得通。
最初的版本可以比较简单,但最好能尽快做出点东西来。我们想先将它呈现给几十个最活跃的社区用户和博客内容贡献者。
你:这个项目听起来很不错!那咱们开始干活吧!
此时你面临一个选择。
a. 新系统作为独立项目。
b. 新系统要和现有的某些系统整合在一起。
你选择了b。
你们深入讨论了如何设计软件原型,以便让音乐视频博客的读者更容易上手。
最终,你提出了一个简单易行的解决方案:用博客搜索视频,并将搜索结果作为原型中的样本。
通过这种方法,新推荐系统中的内容对于 Ross 和博客读者来说都是熟悉的,而且新的应用和原来的网站之间会有很清晰的联系,即使二者在技术层面上是用完全不同的两套代码实现的。
此时,需要你画一幅线程图来解释一下你的方案。
向上滑动阅览
你:刚开始设计用户界面时,我们可以从居中前置的视频播放器这个页面入手。在播放器下面可以放几个推荐视频的缩略图,这几个推荐视频是根据正在播放的视频选出来的。你觉得这个设计怎么样?
Ross:看起来还不错,跟我在别的网站上看到的视频播放器差不多。这对我们的用户来说应该挺容易理解的。
你:太好了!在我们继续讨论之前,我和 Samara 想根据这张图做一个真实的网页。所有的图片都将用占位图模拟,所以做这个网页不会花太长时间。我们要用这个模拟网页测速成原型法的意义是拉近项目中每个参与者之间的距离:不仅是开发人员和客户之间,也包括客户和用户之间。
Ross:没问题,如果你们觉得有帮助,就去做吧。
要达到这些目标,你需要先搭建一个人人都能使用的交互系统。
这样做不仅可以鼓励大家亲自操作和试验,而非纸上谈兵,还能让大家更方便地了解你的进度。
此时,你开始进入编写和发布Web应用的日常流程。
由于你使用了一个正规的应用托管平台,因此这种流程无非就是用你最喜欢的框架新建一个 Hello World 页面,然后把代码推送到一个支持你所用的工具链的 Git 仓库。从这一步开始,平台就可以自行安装所需依赖项,并自动启动 Web 服务器。
你把 Web 应用的基础结构部分中能砍掉的都砍掉了,甚至连数据库系统都暂时没有建,因为现在还不清楚是否需要。你玩的就是“大规模投资不足”,而且你还玩得不错。
你花几分钟搭建了一个你常用的 CSS 框架,同时 Samara把一些占位图拼凑了一下。这些工作做完后,你写了一些简单的 HTML 代码,把图片和一些编好的标题对齐到网格。
你部署了代码。过了一分钟,网页就发布到网上了。
你给 Ross 发了一条消息,告诉他你做好了一个页面并请他过目。
过了一会儿Ross回:
程序员朋友们好!
我刚刚试了一下这个页面。在我的笔记本电脑上,页面看起来和你们给我看的草图差不多,这没问题。
我又在手机上试了试,但页面看起来就有点别扭了。视频和屏幕一样宽,而且下面的推荐视频被排成长长的一列,而不是并列的一行。
我们绝不是希望刚一开始就让这个页面看起来多漂亮,但是至少可以让所有的推荐视频尽量在一屏里显示完整,而不是需要往下翻,去看一个又一个完整大小的视频。
你们觉得这个问题好解决吗?
Ross
此时的你,会做何选择?
阅读全文可以扫描下方二维码:
本文部分内容节选自《
代码之外的功夫,程序员的精进之路
》
,作者精心构思了8个故事,以情景代入的方式邀请读者思考代码之外的关键问题:软件开发工作如何从以技术为中心转为以人为本?透过故事主人公的视角,读者能比较自己与书中角色的差异,发现决策过程的瑕疵,提升解决问题的综合能力。
现在购买GitChat会员
可免费获取正版电子书全文,
每月还可任意阅读全场极客书一本,
体验卡仅售59元
!购买请点击阅读原文
- 老中医说:这是一道最寻常的家常菜,严重致癌,大多数人不都知道
- IEEE Spectrum公布2017年度流行编程语言:Python排第一
- 这是一篇决定你身材的干货,99%的人都瘦了!
- 2018年开发者生态系统报告:Java是最受欢迎的编程语言
- 虫洞和星门是一回事吗?女子捏造星门事件被人肉,却得到大批信众
- 又是一年高考时 俱乐部球员齐送祝福 球迷给帕托和拉维奇的回复实
- 压力是一种选择自由
- 教授玩币:房产链是一个噱头,还是能切实解决房产领域的问题?
- 假如福州选为直辖市,谁会是福建新省会?不是厦门也不是漳州 !
- 钱江晚报:每个APP都想做社交,可能是一场灾难