项目 | 内容 |
---|---|
这个作业属于 | 2020春季计算机学院软件工程(罗杰 任健) |
这个作业的要求是 | 个人博客作业-软件案例分析 |
我的教学班级 | 006 |
我对这项作业的目标是 | 实际体验需求分析和用户测评的过程 培养自己成为项目PM的能力 |
写在前面
- 这次的作业提名为“软件案例分析”,在整个作业的描述中确实可以看到软件开发方方面面的问题,比如开发方法、团队规模等等,但是我通读作业要求并且做了Visual Studio(VS)与VS code(VSC)的初步测评之后,我将更多的重心放在了需求分析和用户测评这两个主题上,所以以此为题。
- 第一次看作业,浏览了四个测评任务,我就选择了测评难度最大、我最不擅长的两个软件VS & VSC
- 难度大,这两个软件都是极其成功的软件,根据stackOverflow,VSC的用户使用率为50+%,VS为30+%,经过无数用户试手、吐槽、点赞、推荐,为这两个软件找Bug难度可想而知
- 不擅长,自从Mac本入手编程,从XCode到IDEA再到Vim、Sublime,从上学期才迫于编译考试要求开始VS的体验,这学期才因为VS Code”丝滑“的外观入手VS Code,所以我对这两个工具一点都不了解
- 但抱着为之后软工编程平台打基础的想法,为了耍一番编译器&文本编辑器,也为了批判(
膜拜)全球最顶尖程序员团队的杰出作品,我参考了Jetbrains系列编译器和Vim、Sublime这两个主流文本编辑器,分析自身coding需求,结合对几种编译器的探索,写作如下。
(一)调研与测评
调研
VS & VSC的不同
- 观察了VS 与 VSC的下载官网,就能明显感受到他们宣传的侧重极其不同
- VS 侧重从初始设计到最终部署的完整工具集,强调宣传个人高效开发和团队协作上的优势(开发、分析、调试、测试、协作、部署),工作负载和拓展市场也更偏向于实际的部署或者开发的增强
- VSC 的介绍界面较VS更为简明,侧重编辑器的自动补全、调试、版本控制、多语言支持这些编辑器的亮点,拓展市场偏向于提升编辑体验的各类代码编写、调试、多语言支持的插件
- 从两者的官网还可以看到他们在商业模式、宣传策略等方面的区别,但最重要的区别在于这两款软件,面向不同的代码编写群体或者同一群体的不同需求来设计,最终导致了软件核心功能的区别
最后引用VSC官网docs一句话总结两者的区别
Visual Studio Code is a streamlined code editor with support for development operations like debugging, task running, and version control. It aims to provide just the tools a developer needs for a quick code-build-debug cycle and leaves more complex workflows to fuller featured IDEs, such as Visual Studio IDE
VS体验
- VS是课程推荐编译器,体验展示无需赘述。但提前说明,这里及之后的bug分析都是基于Visual Studio Community 版本的,有一些功能在enterprise版本中是更先进的,但是没有体验到所以可能会有一定程度的对VS整体的低估。
- 下图是VS软件下的项目新建,左边框是最近使用项目,我一般会在其中选择模板,右边框是所有平台项目模板,这也是博客中的用的越多,越好用的一种设计方式
- 以及VS的强大分析功能之一的性能探测器
- 体验总结:VS是一款性能强大的IDE,满足用户的开发、分析、调试、测试等个体编程需求,同时也有远程合作上的支持,解决了用户的个人开发和团体各种规模的开发需求
VSC体验
- VS code 编辑器,是一款帅气的编辑器,界面简洁而丝滑,调试依托于插件和命令行,也非常的简洁舒适
- 下面的调试界面可以看到左边栏是四个主要功能图标,文件、搜索、版本控制和拓展功能
- 当开启调试界面时中间略窄的功能显示从上到下,变量、寄存器、监视变量、堆栈、断点,简洁但包含了debug过程中最常用的功能窗口
- 靠右是文本编辑主页面,各种颜色主题、代码风格主题繁多而观看体验极佳,调试图标很可爱,快捷键也和VS调试相一致
- VSC版本控制,界面依旧美观
- 未保存文件有圆点提示,并配置自动保存功能设置
- 初次探索VSC版本控制发现对于修改的文件标准为M,未追踪文件标记U
- 类似
vimdiff
展示版本变化,可视化效果极好
- 体验总结,VSC是一款简约美观的代码编辑器,并辅助有GitHub显示版本控制,依托于命令行的基本运行和调试功能,拓展market丰富,在其中可以轻松下载并按照Vim、sublime等文本编辑器的常用指令,也可以下载到常用编程语言的常用编程拓展功能。适合轻量级编程展示场景使用,满足了用户的需求。
测评
看了秋千图之后,我理解为,用户往往不知道自己的需求,或者知道即便能准确表述,也不一定为开发人员所理解;开发人员自己对产品有一套先验知识和判断,基于自己的理解做出的产品,有一定可能会发掘出用户的潜在需求,或者完全没有满足用户的需求。
- 所以关于设计,我对作业介绍的两种理念特别认可,以及我自己的一个总结,一共三点。
一是设计是把每一个使用者当做自己的老师,每一个人的生活都是一本书;
二是微软公司dogfood的传统,自己用自己的产品剖析设计中的问题和不便;
三是大多数设计都会有的竞品分析环节,我们产品较已有产品存在的意义是什么,相比未来竞品可能的优势是什么。
回到作业要求,VS & VSC的bug,这两款软件的功能性bug目前我还没有发现很多,但参考了GitHub-VSC-issues 之后认为,可能在某种语言或者功能长期深度使用才能发现一些显著的功能性问题,下面主要说一些设计问题(广义bug)
VS的设计性问题
- 代码自动生成问题
- 这是一个在于Jetbrains旗下IDE CLion对比之后发现的问题,Jetbrains系列编译器是目下除VS系列之外被使用最多,也是最为强劲的IDE,无论是CLion,还是IDEA,都有非常强大的代码自动生成功能
- 对比基于CLion的C++代码自动生成demo VS的代码自动生成略显单薄,只能对于while、for、class等一些常用语句块进行基本生成,无法像CLion中对构造器、get&set、运算符的重载等... 进行快速的代码自动生成,这些只能靠手敲,无助于开发效率
- 调试界面的设计
- VS的功能是多且强大的,但有时显得对新手不太友好,且略微冗余
- 比如调试界面。观察上面的界面,有三个窗口,自动窗口、局部变量、监视窗口,既然这三个窗口都是显示代码段变量变化的调试窗口,为什么不统一为一个窗口呢?
- 诊断工具显示CPU、内存的占用率可能在多线程之类的大型程序调试中才会用到,那是不是可以把这个窗口不设置为默认的窗口?
- 下半部分的窗口,调用堆栈和断点在调试中更为常用,而异常设置、错误列表这些还没有用过,是不是也可以不设为默认?
-
代码中标识符的自动搜索智能度有待提高;而且对输入一半,进行二次输入的标识符不再有提示
下图为搜索在代码中极其常用的Calculator类,但有一个字母(故意)输入错误,应该VS的代码提示也不对单项目使用标识符频次进行排序显示
- 提示语和报错的人性化bug,VS报错采用序号的标示,联机搜索也不方便找到答案
- 对于如下报错,VS中的
alt + Enter
很快就能解决分号问题,但提示先给了一堆莫名其妙的问题提示,最后才说明分号问题,为什么不直接说明分号问题,或者直接提示用alt + Enter
来解决? - 类似的问题存在于Error或者Waring提示中,给出一个错误序号,需要联机搜索,而联机搜索往往只能知道大体问题位置,而不清楚具体解决,具体解决只能再看CSDN或者Stackoverflow
VSC的设计性问题
- VS code liveShare的会话重连问题
- 这个问题应该是一个功能性bug,目前视频共享多数使用WebRTC类似技术,我之前在WebRTC通信开发中也遇到过类似问题
- liveShare会话一旦断开,重连不能采用之前生成的共享链接,这样会造成多次连接不上;而要重启会话,重新生成链接,才能连接上
- 下图是liveShare的重连之后的使用图,上述问题不太好形成整体图片反馈
- 调试需要基础命令行和json的知识,且在
launch.json
文件中"externalConsole": flase
的情况下,无法进行标准输入
下图中,下部窗口在debug console & terminal中都尝试过输入,但无法获取标准输入,debug过程无法继续进行
综合测评
参考邹老师的测评建议,制作表格如下,其中评分一项,满分 10 分, 良好 6 分, 及格 4 分,聊胜于无 1 分, 很差 -3 分
类别 | 描述 | VS评分 | VSC评分 |
---|---|---|---|
功能 | |||
核心功能 | 分析核心功能,功能设计和质量 | 10(功能强大) | 10(设计灵巧) |
细节 | 有什么为用户考虑的细节? | 8(加强对新手的友好程度) | 10(重点功能图标显著) |
用户体验 | 当用户完成功能时,不干扰用户 (例如: 是否不断弹出不相关广告) | 9(更新太多,而且不更新不能使用) | 10 |
辅助功能 | 一些辅助功能如皮肤等 | 9(皮肤有限) | 10(非常好看) |
差异化功能 | 这个软件独特的功能,它对用户的吸引力有多大? | 10(开发各流程中都有独特的功能) | 10(插件功能丰富、可选择且强大) |
软件的效能 | 占用内存, 启动速度, 内存泄漏情况 | 9(占用内容略大,但可以理解) | 10 |
体验 | |||
软件的适应性 | 在联网/断网, 大小屏幕, 没有鼠标的情况下都可以顺畅操作,和不同平台的软件能流畅协作 | 10(和Unity互联做的很好) | 10 |
成长性 | 记住用户的选择, 适应用户的特点,用户越用越方便 | 10(新建项目中最近项目选项很好) | 10(插件管理很棒) |
用户有控制权 | 系统状态有反馈,等待时间要合适。关键操作有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工作, 快捷操作键可调整。 | 9(插件下载奇慢) | 10 |
自选 | |||
插件 | 各种插件提供服务是否丰富、使用是否便利 | 10 | 10 |
软件使用支持 | 是否提供支持,支持能否解决问题 | 9(能弄清问题,但有时无法解决问题) | 10 |
总体意见
总体对于VS & VSC我个人都是非常推荐的,VSC时候做轻量级的代码编写和调试,VS适合做大型对性能要求高的软件工程
- 改进意见
- VS的功能多且强大,但我怀疑总体功能会呈现二八分布,也就是只有20%或者更少的功能被80%以上的用户使用,剩余80%的功能被需求的相对少,而且对这些功能有需求的用户可以认为是资深用户或者“铁粉”,所以在VS的UI设计上是不是可以进行更多核心功能的突出美化和高级功能的隐藏,来提高对新手的友善程度
- VSC是一款代码文本编辑器,是不是可以让debug的过程更简易化?
(二)分析
使用此服务的所有功能,估计这个软件/网站/服务做到这个程度大约需要多少时间(团队人数6人左右,计算机大学毕业生,并有专业UI支持)。(必答)
-
VS制作预期,VS不是一款开源软件,参考wiki对VS的描述:
- 1997年出第一版VS,迭代至今20多年
- 支持36种语言,支持Windows、Mac OS等多个操作系统
- 对于开发、分析、调试、测试、协作、部署等功能都有独到的支持
我怀疑,6人团队假如能从小白做到VS项目总师或者微软总裁,然后应用软件开发方法论,聘用新的工程师,那也许用20年左右可以完成;假如是一直只有6个人做核心开发,在已有的开源IDE的基础上开始,可能需也需要50年吧...
-
VSC,虽然是一款相对开源的软件,而且也有微软VS的开发基础,但第一版发行至今也有5年时间,从GitHub上的开源项目上课,1000+合作者,6W+提交,150发布,4000+问题。
6人团队在GitHub项目基础上开发,可能也需要1-2年左右的时间来学习、环境搭建、实现、调试等等...
- 分析这个软件目前的优劣(和类似软件相比),这个产品的质量在同类产品中估计名列第几?(必答)
- 目前市场上有什么样的产品了,它们的优势劣势在哪里?和它直接竞争的产品在那里?(此问题为规划与建议中的问题 但与本问题类似)
- 这两个产品在IDE和代码编辑器领域都是排名第一的产品。
虽然Jetbrains IDE系列和Vim、sublime等编辑器都有各种的优势,但总体测评表现和实际用户占有率都不如VS & VSC,当之无愧的第一
- VS优势在于极其强大且全面的开发、分析、调试、测试、协作、部署一体式功能,但问题是智能化、对新手友善和界面不如Jetbrains系列产品(这也是对VS的一个提高的建议)
- VSC优势在于界面美观,插件可集成Vim、sublime等多种便利功能,劣势还有待发现...
你在第一部分发现的bug,为何软件团队不能在发布前修复?他们是不知道,还是有意不修复?你觉得是什么原因?可以从下面的可能性中选取几个:
对用户需求掌握不好
具体的设计质量不高
开发人员粗心大意
测试把关不严,敷衍了事,没有注意在特殊的配置或环境下测试
其他
- 我选其他
我认为第一部分发现的大部分bug不是功能性问题,所以肯定不能指控其软件团队是“设计质量不高、粗心或者测试不严”;而有可能是dogfood中提到的问题,开发者对自身的产品太了解,或者编程能力过高,而认为一些对初学者不友好的问题,根本不是个问题
(三)规划和建议
- 首先,市场有多大?潜在的用户有多少?
-
根据数据,截止2018年,全球有23million编程人员,也就是2.3亿人,预计到2023年数字会达到2.7亿
VS & VSC都是面向全球的开发者,可以认为是一个上亿的市场 -
潜在用户,可以认为是每年的初入编程界的学生、转行或者兼职计算机编程的从业者,或者是从其他IDE转入VS & VSC的编程人员,基本上可以认为有上千万的潜在用户
- 作为新的项目经理,这个产品的核心用户群是什么样的人,典型用户长什么样?学历,年龄,专业,爱好,收入,表面需求,潜在需求都是什么?
核心用户群 | 年龄 | 学历 | 专业 | 爱好 | 收入 | 表面需求 | 潜在需求 |
---|---|---|---|---|---|---|---|
计算机及相关专业的学生 | 15-25 | 中学或大学 | 计算机及相关专业 | 编程、上网 | 每月1000-5000(依靠父母) | 基本程序编写需求 | 学习编程、快速准确的编程 |
计算机方面开发工程师 | 20-70 | 大学或者更高 | 计算机及相关专业 | 编程... | 每月1w-10w不等 | 高效本地开发 | 远程协作、维护 |
科研人员 | 20-70 | 大学或者更高 | 理工科专业 | 相应专业,数据分析、自动化研究 | 每月1w-10w不等 | 高性能实时数据分析 | 实验自动化辅助 |
- 功能:你要设计什么样的功能?为何要做这个功能,而不是其他功能?为什么用户会用你的产品/功能?你的创新在哪里?可以用NABCD分析
- 想在VS上面开发一个实验室数据开发分析辅助的功能,这个功能
- Need 面对一个有数据分析方面需求且有资金购买的实验室科研群体,面对科研界日益增长的可靠可复现研究的趋势
- Approach 结合微软云服务,部署远程数据库,开放数据云端分析和获取的功能,并提供本地分析模板和指导,将云端分析获取后的数据,可视化或者用用户理解的形式导入到本地
- Benefit 提高科研领域的数据开放共享,统一数据分析过程,便于科研工作者的数据分析工作,提高科研透明度和领域可复现性研究
- Competitor 软件可以吸引科研人员,并使用数据库的相关数据”专利“,为其他竞争者的进入设立壁垒,成为某个领域独有或者靠前的数据分析分享中心
- Delivery 科研人员之间的交流会加速产品推广,并且跨领域研究会加速该功能的进一步扩散
- 如果你有钱可以招聘6个人,有4个月的时间,你作为项目经理,应该如何配置角色(开发,测试,美工等等)?描述你的团队在16周期间每周都要做什么,才能在第16周如期发布软件的改进版本,并取得预想中的成绩。
- 面对上一个问题的开发和推广,假如我有六个成员,16周我会如下部署
时间(周) | 任务 | 需求分析和推广 | 开发 | 测试 | 美工 |
---|---|---|---|---|---|
1-2 | 实际考察科研人员的需求,确定数据和数据库类型、数据分析模式、科学可复现性的需求 | 6 | 0 | 0 | 0 |
3-6 | 持续和相关科研人员保持交流并获取一定数据,进行数据库、数据分析模式的核心功能开发和测试 | 1 | 3 | 2 | 0 |
7-8 | 获取科研人员数据库、数据分析模式使用体验,继续进行相关开发和改进,并制作GUI准备第一款软件的发布 | 1 | 2 | 2 | 1 |
9-16 | 进行每周一次的发布、推广、获取新用户意见、添加新功能、测试的迭代 | 1 | 2 | 2 | 1 |