毕业考研软件工程方向时,记得上考研辅导班老师有句话对我影响颇为深刻:

    软件工程是一问用工程化方法解决软件项目问题的学科,其本质也是一门工程学科,这门课的知识在学完后,不仅可以应用在软件项目中,还可以应用于日常生活中遇到的一些问题,Everything is a project。

    这句话对我的影响很大,我开始在日常生活中尝试应用这个概念,小到做作业,大到完成工作中的复杂项目。

    解决这些问题的方式,就是参考软件生命周期和瀑布模型,把事情分成几个阶段:分析、设计、实施、测试、完成,然后指定相应的计划。这种方法效率很高,能让人站在更全面、更高的角度去思考问题。

什么是工程方法?

    有目的、有计划、有步骤地解决问题的方法就是工程方法,

工程思维把每件事都当作一个项目来做

工程方法通常分为六个阶段:想法、概念、计划、设计、开发和发布。

  • 想法:清晰地定义好问题,研究其可行性,检查是否有可行的解决方案
  • 概念:用图纸、草图、模型等方式,提出概念性的解决方案,最终确定一个
  • 计划:包含人员、任务、任务持续时间、任务依赖关系以及项目完成预算
  • 设计:针对产品需求,将解决方案细化,设计整体架构和划分功能模块
  • 开发:根据设计方案,将解决方案构建实施,包含构建、测试、调试和重新设计的迭代
  • 发布:最终结果包括文档发布

站在整体而非局部去看问题

    有人可能说“我不用这种工程方法做事,也可以完成”,的确,做一件事有很多种方式,但用工程方法去处理事情,有如下好处:

  1. 有一个被有效论证过的方法论知道你,可以帮助你提高成功概率,也提高效率
  2. 用工程方法去思考的时候,会更多的站在整体而非局部去思考,更有大局观。

所以问题的核心并不在是不是用工程方法,而是有没有吧这件事当作一个项目,是不是能看到这件事的全貌,而不是只看到局部。

以下工作场景,估计你不会陌生:

  • 产品经理提出天马行空、不切实际的需求,但是技术上不可行或者实现成本很高,导致返工、资源浪费和进度延迟等问题,就像前段时间产品经理提出app主题皮肤随手机壳颜色变换的需求和开发打起来的笑话。
  • 架构师为了满足开发上的成就感,更愿意自己“造轮子”,不愿意采用现有开源程序或者购买合适的组件;
  • 开发工程师喜欢在代码中使用各种设计模式或者最新技术,导致项目进度延迟,代码难以维护;
  • 测试工程师不愿意学习自动化测试技术,导致测试周期较长,且容易出现疏漏;
  • 除非产品经理特别注明,开发工程师和测试工程师不会注意用户体验上的细节;

之所以会出现这样的问题,很大程度上归因于大家都是站在自己岗位的角度看问题,没有站在项目的整体角度来看。

如果我们能站在项目整体角度看问题,我们会去关注项目的质量、项目的进度、项目的成本、项目的最终用户,那上面的场景将会变成:

  • 为了项目整体的效率和避免返工浪费,产品经理会及早和开发人员确认技术可行性,并对产品设计现行验证;
  • 为了节约项目开发成本,提高开发效率,架构师选择成熟的架构,合理购买商业组件和使用开源程序;
  • 为了提高开发效率,不影响项目开发进度,开发工程师尽可能使用成熟的技术,高效简洁地落实项目;
  • 为了项目质量和效率,测试工程师学习自动化测试技术,将大部分测试变成自动化运行,极大地提高了测试效率和质量;
  • 为了提高用户好的体验,不仅产品经理,每个人都会仔细体验用户界面,对于不合理的地方提出改进意见。

所以我认为,每个项目成员,如果能多站在项目的角度去考虑,那么这样不仅对项目有利,更对自己有好处。

最后我总结,工程思维,本质上是一种思考问题的方式,在解决日常遇到的问题时,尝试从一个项目的角度去看待问题、尝试用工程的方法去解决问题,站在一个整体而不是局部的角度去看问题。

相关文章:

  • 2021-08-20
  • 2021-12-14
  • 2021-12-09
  • 2022-12-23
  • 2022-01-14
  • 2021-10-13
  • 2021-11-17
猜你喜欢
  • 2021-07-25
  • 2021-12-03
  • 2021-07-08
  • 2021-05-29
  • 2021-01-14
  • 2021-07-07
  • 2021-07-21
相关资源
相似解决方案