软件工程之美
宝玉
Groupon资深工程师,微软最有价值专家
立即订阅
6692 人已学习
课程目录
已完结 54 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 你为什么应该学好软件工程?
免费
特别放送 | 从软件工程的角度解读任正非的新年公开信
学习攻略 | 怎样学好软件工程?
基础理论 (9讲)
01 | 到底应该怎样理解软件工程?
02 | 工程思维:把每件事都当作一个项目来推进
03 | 瀑布模型:像工厂流水线一样把软件开发分层化
04 | 瀑布模型之外,还有哪些开发模型?
05 | 敏捷开发到底是想解决什么问题?
06 | 大厂都在用哪些敏捷方法?(上)
07 | 大厂都在用哪些敏捷方法?(下)
08 | 怎样平衡软件质量与时间成本范围的关系?
“一问一答”第1期 | 30个软件开发常见问题解决策略
项目规划篇 (8讲)
09 | 为什么软件工程项目普遍不重视可行性分析?
10 | 如果你想技术转管理,先来试试管好一个项目
11 | 项目计划:代码未动,计划先行
12 | 流程和规范:红绿灯不是约束,而是用来提高效率
13 | 白天开会,加班写代码的节奏怎么破?
14 | 项目管理工具:一切管理问题,都应思考能否通过工具解决
15 | 风险管理:不能盲目乐观,凡事都应该有B计划
16 | 怎样才能写好项目文档?
需求分析篇 (5讲)
17 | 需求分析到底要分析什么?怎么分析?
18 | 原型设计:如何用最小的代价完成产品特性?
19 | 作为程序员,你应该有产品意识
20 | 如何应对让人头疼的需求变更问题?
“一问一答”第2期 | 30个软件开发常见问题解决策略
系统设计篇 (4讲)
21 | 架构设计:普通程序员也能实现复杂系统?
22 | 如何为项目做好技术选型?
23 | 架构师:不想当架构师的程序员不是好程序员
24 | 技术债务:是继续修修补补凑合着用,还是推翻重来?
开发编码篇 (7讲)
25 | 有哪些方法可以提高开发效率?
26 | 持续交付:如何做到随时发布新版本到生产环境?
27 | 软件工程师的核心竞争力是什么?(上)
28 | 软件工程师的核心竞争力是什么?(下)
29 | 自动化测试:如何把Bug杀死在摇篮里?
30 | 用好源代码管理工具,让你的协作更高效
“一问一答”第3期 | 18个软件开发常见问题解决策略
软件测试篇 (4讲)
31 | 软件测试要为产品质量负责吗?
32 | 软件测试:什么样的公司需要专职测试?
33 | 测试工具:为什么不应该通过QQ/微信/邮件报Bug?
34 | 账号密码泄漏成灾,应该怎样预防?
运行维护篇 (6讲)
35 | 版本发布:软件上线只是新的开始
36 | DevOps工程师到底要做什么事情?
37 | 遇到线上故障,你和高手的差距在哪里?
38 | 日志管理:如何借助工具快速发现和定位产品问题 ?
39 | 项目总结:做好项目复盘,把经验变成能力
“一问一答”第4期 | 14个软件开发常见问题解决策略
经典案例解析篇 (7讲)
40 | 最佳实践:小团队如何应用软件工程?
41 | 为什么程序员的业余项目大多都死了?
42 | 反面案例:盘点那些失败的软件项目
43 | 以VS Code为例,看大型开源项目是如何应用软件工程的?
44 | 微软、谷歌、阿里巴巴等大厂是怎样应用软件工程的?
45 | 从软件工程的角度看微服务、云计算、人工智能这些新技术
“一问一答”第5期(内含彩蛋) | 22个软件开发常见问题解决策略
结束语 (1讲)
结束语 | 万事皆项目,软件工程无处不在
软件工程之美
登录|注册

09 | 为什么软件工程项目普遍不重视可行性分析?

宝玉 2019-03-14
你好,我是宝玉,我今天分享的主题是:可行性研究, 一个从一开始就注定失败的跨平台项目。借此来与你一起讨论,为什么软件工程项目普遍不重视可行性分析。
如果你随手拿起本软件工程教材翻翻,第一章一般都是讲“可行性研究”的,呈现顺序仅次于“绪论”,可见其重要性。
“可行性研究”通常讲的是如何科学地论证项目的可行性,以及这个项目是不是值得做。这个知识点比较简单,落实到期末考试的题目上,一般只是一道像这样的选择题或填空题:
“可行性研究主要从哪几个方面进行?”
这个题目要回答的话也不难,记住答案即可。
对于软件项目的可行性研究,主要从以下几个方面入手:
经济可行性;
技术可行性;
社会可行性。
看上去这么简单的知识点,到底重要在哪里呢?我们先来看一个真实的案例。
2015 年的时候,Facebook 推出了一个跨平台的移动端解决方案 React Native,只要用 JavaScript 一门语言就可以将写好的代码运行于 iOS、Android 移动平台。
所以在 2016 年的时候,某著名大型互联网公司的移动部门负责人非常看好这个技术,专门成立了项目组,用了不少人力,花了大半年时间将移动端 iOS、Android 产品迁移到 React Native 技术框架上。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《软件工程之美》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(19)

  • alva_xu
    从三个角度分析可行性,相当全面。
    我们企业在软件项目立项时,经济可行性分析和技术可行性分析是必须要有文档材料,并且进行严格审批的,社会可行性方面,倒是没有严格的审批流程。
    首先讲技术可行性。我们碰到的最主要的问题是对于技术解决方案是否合理的问题。由于决策层对技术的了解程度不一样,如果是采用已经在使用的技术,那么决策起来比较容易,但如果需要引进新的技术,那么最终的技术方案的敲定会历时很长。我们一般会通过寻求专家咨询,通过分析Gartner魔力象限和成熟度曲线,已经通过POC等方式,来寻求可行的技术解决方案。当然这里也遵循一些原则,就像老师上次说过的几个架构原则,“合适原则、简单原则、演化原则”来选择技术解决方案。
    再谈一下经济可行性分析。
    成本分析相对来说比较好分析,难处主要在于收益分析。一个软件项目,一般的目的主要在于解放生产力,让手工操作变为电脑操作,可以提高劳动生产率。从定性的角度是比较容易说的,但是到定量就很难了。特别是经济性分析的审核部门是财务部,如果我们说可以节省多少人手,那么财务部可能真的会要求业务部门减招人员,而这个又是业务部门很不愿意做的事情。所以这个问题还是在我们这样的大企业里存在,各个部门都希望保住自己的利益,所以会有很大的冲突。
    老师,你以为呢?如果像这种情况,如何更合理地做出经济性分析,又能让各个部门皆大欢喜?


    作者回复: 你说的这个问题对我有点难度呀!🤔

    我觉得经济可行性分析的结果,不能只说提高劳动生产率,更多的要谈创造的价值。当然实际上也要真的能给公司创造价值。

    很多IT部门因为没有直接创造价值,所以地位反而不如销售部门,是因为从表面上看,软件项目是不直接创造价值的,只有销售出去才创造价值。

    当IT部门或者说软件项目,能让人意识到能创造价值,而且能持续的创造价值,那么就不是减人的事情了,还得考虑增加人手呢。

    2019-03-15
    1
    4
  • 西西弗与卡夫卡
    最近有个项目延期,原因之一就是用到的第三方库需要https绑定域名,测试环境因为用http所以没有发现该问题。

    事先的可行性研究,目的就是消除或者平衡项目中的技术风险、能力风险、协作成本、法律、部署等风险。

    总结里给出了一个可行方法,即尽早上线部署,不对外公开服务即可。像法律问题,靠及早软件部署没法解决,可以有个检查清单,每类风险都给出适当评估意见

    作者回复: 这种问题确实不好暴露。

    除了及早上线,有一点可以改进的建议就是测试环境也可以考虑把https用起来,尽可能保持一致,这样能减少一点类似问题的风险。

    2019-03-14
    4
  • 一路向北
    用失败的案例来理解怎样做才能成功会更加容易,老师从这个角度来分析也让我容易接受。
    实际的项目确实很少分析可行性,一般客户有需求就想着怎么去实现,也就是说都是分析技术可行性为主。
    我们做的项目大部分都是硬件和软件结合,从经济角度分析,硬件更加容易分析清楚,软件会困难很多。

    作者回复: 对,软件的可行性分析确实有困难,但还是应该做一下,项目完成后再对比一下当初做的分析,几个项目积累下来,会有很多收获。

    2019-03-15
    2
  • wuzz
    可行性分析,在智能硬件上特别突出,考虑经济成本上经常只计算了硬件成本,选择低廉的 MCU,不考虑软件上的成本,结合上节课的黄金三角,为实现需求最终只能在时间做出妥协,成本回收周期更长,需要卖出的产品要更多。

    作者回复: 👍
    软件工程的很多知识是有借鉴其他工程领域的,像可行性分析、金三角都不是软件项目独有的。

    2019-03-15
    2
  • 纯洁的憎恶
    由于软件工程相对于大多传统工程,在立项前所面对的问题、实际需求与解决方案往往更加模糊、不够明确。而问题及其解决方案又是可行性研究的前提。因此软件工程的可行性研究也存在差异。在软件工程进展的过程中,持续或分阶段进行可行性评估,尽早发现风险及时应对,也许是更好的方法。

    经济可行性——成本收益分析
    技术可行性——技术成熟度、人员条件、缺陷容忍度
    社会可行性——法律、价值观、道德、社会影响

    作者回复: 👍谢谢补充

    2019-03-14
    2
  • osbeibei
    都只评估技术和功能可行性

    作者回复: 有时候没评估是没意识到需要评估,如果了解了不妨从文章中提到的几个角度思考一下,也许可以避免不必要损失。

    2019-03-14
    2
  • Dream.
    技术可行性这东西。。。

    就是每次在搭建项目之前,会各种分析各种技术的优劣。

    架构搭建好之后,除非重构,都是奉行“只有想不到,没有做不到”的思路,从此再也没有技术可行性分析,一切都是可行😂😂😂

    作者回复: 哈哈,这个确实很常见。技术人员都有执念,我懂的!

    另一个角度讲,可行性研究本就是架构设计时要确定的,架构如果都已经做好了,成本也很高了,除非有真绕不过去的坎。

    2019-03-14
    2
  • williamcai
    我们开发用的是业界比较成熟的技术,对于技术可行性的研究没有那么重视,其实这是有风险的,老板也知道,但是大家都默认了

    作者回复: 说到风险,《14 | 风险管理:不能盲目乐观,凡事都应该有B计划》会讲到风险管理。

    对于风险有一种应对策略就是“接受风险”,也就是明知道是风险,还继续做:)

    2019-03-14
    2
  • fei
    每当经理说要做一个项目,就我自己来说总是找不到不做的理由,因为我们项目一般是部门内用,基本上没有技术成本和社会成本,学了本课,了解到人力成本,以后简单的容易上手的可以放心交给低一些的工程师,复杂一些的就自己写核心,辅助组内其他人完善。

    作者回复: 对的,人力成本是项目中很重要的一个因素。

    另外,很多时候我们确实无法去对项目中的事情做决策,但并不妨碍通过学到的知识,科学的去分析和判断。
    没有决策权毕竟还有建议权,好的建议总有被引起重视的时候。就算建议没采纳,也积累了一次练习的机会。
    现在没有决策权不代表将来没有决策权,早做准备这样等到你有决策权的时候已经积累了大量经验了。

    2019-08-25
    1
  • 庄小P
    学生时代做项目的时候,就有一种感觉,感觉没人push,即使可行,项目进展非常难,大家都'没把心思放在上面上,导致可行性形同虚设

    作者回复: 你说的这更像一个项目管理和项目计划的问题:)
    当然也可以认为是可行性分析时就预见到了这种可能:P

    2019-04-14
    1
  • 青石
    我们的项目中技术可行性和成本可行性考虑的会偏多一些,社会可行性通常很少考虑。

    有些时候因为技术人员技能存储问题,可能会导致很适合项目的技术,却无法使用。通过其他笨方法,虽然实现了功能,但看起来很low,回过头再想想其实也符合最简化原则。
    成本可行性很多情况偏重于决策层,有些项目属于长远战略,即便短期没有收益甚至亏损,公司依然长期投入,当然也有失败的风险。

    在项目上,大部分情况都是脑子里走一遍,容易思虑不周、以偏概全。跟着老师系统学习,觉得还是落成文字才行。

    作者回复: 👍落成文字是个帮助思考的好习惯

    2019-03-18
    1
  • Charles
    可行性分析形同虚设:小公司岗位职责不清晰,互相照顾面子怕得罪人,谁都怕犯错背锅,感觉谁都对,最终就导致谁是“老板”谁拍板!

    我感觉这个问题挺严重的,很影响决策正确性,只能等所谓的市场反馈。

    也用类似项目成员“扑克牌”打分的方式可以解决吗?核心问题出在哪里?多谢老师,期待解答

    作者回复: 你这个问题已经不是可行性研究的问题了!

    核心问题在于没有一套合理的类似于扑克牌打分的机制和流程。

    扑克牌为什么是个好机制:
    1. 公平合理,每个人都有机会不受他人影响的表达
    2. 不用背锅,估错了也没关系,意见不一致还可以讨论

    可行性研究是不是也可以形成类似机制?有专门会议,大家提前准备,会议上一起讨论结果,不用背锅,根据讨论结果形成最终决议。项目结束后在回顾对比当初的分析,作为下一次的参考。

    2019-03-16
    1
  • 胡鹏
    我们公司小,都考虑技术可行性,感觉上这样成本会小一点,,不过不做其他技术可行性分析,缺点也特别明显,

    作者回复: 还是有必要做一下,即使最终还是要做,也可以帮助你提前发现一些潜在的风险,早点预防

    2019-03-15
    1
  • Felix
    这也是为什么公司或团队成立技术委员会的目的,就是让视野开阔的技术大牛从多角度分析方案落地的可行性,我觉得还是很有必要的;社会角度确实之前也没有考虑到,这也是日后需改进的点

    作者回复: 是的,技术可行性还是需要有几个人一起多角度分析一下更科学客观

    2019-03-15
    1
  • aya
    经济可行性应该如何衡量呢,经常老板说值得做就做了,很少自己思考这个问题

    作者回复: 就像文章里面举的例子,算算人力成本,算算软硬件成本。

    2019-03-14
    1
  • Jack MA
    可行性分析可以从更多维度进行分析,我认为可以参考模型PEST或PESTLE(Political, Economic, Sociological, Technological, Legal, Environmental)

    作者回复: 政治(Political)、经济(Economic)、社会(Sociological)、科技(Technological)、法律(Legal), 环境(Environmental)
    👍

    2019-11-18
  • beiler
    我觉得大部分不做可行性研究是国内擅长山寨…而且很多纬度考虑不到……

    作者回复: 山寨也有可行性问题呀,法律和道德上都可能有问题:)

    2019-04-01
  • 张驰
    微软雅黑,能坑垮一家公司。

    作者回复: 👍这个案例好😄

    2019-03-19
  • 小先生
    从经济,技术,社会可行性三个方面进行评估。
    2019-03-17
收起评论
19
返回
顶部