9shadow article banner
企业AI落地 · 企业级AI智能体 | AI智能设备软件开发 | 数字孪生 · 智慧园区 · 数字大屏 | App · 微信 · 小程序 | XR云展厅 · 元宇宙空间 | 虚拟仿真实训 | 品牌互动营销

做软件开发前,先要了解的知识!

过年期间,常常会有亲戚问起我的工作。电视上天天报道黑客的新闻,他们总是担心我们会从事违法活动。每次面对这样的提问,我都想直接说自己是修电脑的。但如果真的这么说了,亲戚们可能会带我去各家修电脑,甚至还要求帮忙下载电影、小说、歌曲,甚至贴膜。

为了让亲戚们更清楚地了解软件开发的工作,趁着周末的时间,我决定写一些内容,让大家明白我们每天都在做些什么。

 

首先,什么是软件?

 

软件就是支撑电子设备的灵魂。比如,你使用的电脑安装了Windows操作系统,那么Windows就是一个软件;你手机上安装了微信,那么微信也是软件;你购买火车票时,登录12306网站,那么12306也是软件。甚至你在百度网盘下载盗版电影,百度网盘也是软件。

 

那么,为什么要开发软件呢?

 

开发软件的目的有很多,主要有以下几种:

 

  1. 服务于商业运作和业务运营 比如电商公司为了更好地理解市场、高效处理货物,开发自己的进销存、销售管理、退货管理、客户管理或热点营销软件。房产租赁、移动公司业务办理、医院信息系统及办公流程审批等,也属于这一类。

  2. 提供娱乐和放松 游戏、电影、聊天软件等都属于这一类。无论是手机、平板、手表、汽车还是电脑,这类软件数量巨大,质量各异,层出不穷。

  3. 提供阅读、工具和效率相关的软件 个人时间记录、手机微博、手机日历、天气预报、英汉词典等,这类软件功能单一,目标明确,旨在提高效率。

  4. 专业软件 Photoshop和AutoCAD就是典型的专业软件。如今,许多专业软件需要移植到不同的平台,如手机的Android和iOS。

  5. 实验性质的软件 这类软件通常由企业或组织尝试新的工作模式或产品形态而开发,常常只有模糊的需求,市场上只有少数人能接触到。

还有许多无法随意归类的软件,比如游戏外挂、政府单位的数据处理软件。总体来说,这些都属于应用软件,可以想象为服务于我们日常生活的产品。

 

那么,软件是怎么开发出来的呢?

 

软件是程序员们用普通人看不懂的代码一行一行写出来的。具体流程是什么样的呢?

需要有一个产品经理,找到需求并设计产品。产品经理要和客户打交道,从客户那里了解需求。客户往往只知道自己面临的问题,不知道真正的需求是什么。产品经理要引导客户说出问题,并帮助他们找到解决方案,然后把这些转达给程序员。

 

产品经理的主要任务包括:

 

  • 记录客户的问题
  • 与客户商讨解决方案
  • 编写文档,描述解决方案及其模块
  • 与程序员沟通,确保他们理解需求
  • 处理软件中的bug,帮助程序员改进

 

要服务于一个行业,首先需要了解这个行业的基础知识。比如,开发淘宝卖家的软件,至少需要理解淘宝的各种规则;开发矿场的软件,则需要了解矿场的运作方式。这就是所谓的“做一行,爱一行,干一行,通两行”。

拿到需求后,程序员会制定开发计划,并精密定义产品。产品经理需要编写用户用例说明,描述用户的操作流程和系统的反应。这些说明是程序员的“精神鸦片”,看到这些他们就会很激动地开始写代码。

通过这样一个简单的流程,大多数软件就可以做出来。能否做得好不好说,但至少能出来一个可以使用的东西。这就是软件开发的缩影,虽然比想象中复杂得多,但产品经理需要做很多工作,目标是打造最优秀的软件团队。

2011年,马克·安德烈森(Marc Andreessen)写了一篇文章,预言“软件吞噬世界”。他的观点是,许多传统业务正在被软件公司取代,所有公司发现自己提供的价值越来越多地依赖于软件系统。

在安德烈森撰文时,市值最大的10家公司中没有一家是软件公司。如今,市值最大的10家公司中有6家主要依赖软件驱动,而其他4家也在准备转型。

Stack Overflow和LinkedIn上的非技术公司软件工程招聘广告数量超过了科技公司本身。这标志着公司正在加强他们的软件工程实践。

会计和软件哪个更重要?本文没有答案。但是,许多不认为自己是软件公司的公司也发现,软件系统是他们运营的关键组成部分。

如果CEO和各级管理人员不理解软件,那么他们将是可有可无的。这要么限制他们的职业发展,要么对公司业绩产生负面影响。Gartner预测,到2020年,有50%的首席信息官(CIO)将被取代,因为他们没有革新公司的能力。

 

本文列出了管理者应该知道的10个常识:

 

  1. 软件不是魔术
  2. 软件永远不会“完成”
  3. 软件开发是团队作战,没有人能做一切事情
  4. 设计不是外观,而是工作原理
  5. 安全是每个人的责任
  6. 功能大小并不能预测开发时间
  7. 伟大来自于成千上万的小进步
  8. 技术债很讨厌,但不可避免
  9. 软件不会自己运行(软件需要运维)
  10. 复杂的系统需要DevOps才能良好运转
  11.  

关于软件,这是一切管理者都需要知道的10件最重要的事情:

 

  1. 软件不是魔术 软件不是凭空变出来的。每一个元素都是由人设计的,有其数学基础,可以用人类语言解释的过程。

  2. 软件永远不会“完成” 软件是一个迭代的过程,包括修订和更新。我们的工作是创造一个认识到这一点的环境。

  3. 软件开发是团队作战 开发人员既不是产品经理,也不是UX设计师、质量工程师、分析师、安全专家、技术作家或运营工程师。组织需要所有角色。

  4. 设计不是外观,而是工作原理 用户体验(UX)设计师决定工作流程和交互,而不仅仅是外观。

  5. 安全是每个人的责任 所有软件都有安全需求和潜在的安全漏洞。安全性最好从一开始就考虑。

  6. 功能大小并不能预测开发时间 功能的大小与开发所需时间无关。我们的工作是创建并支持一个接受这一事实的开发过程。

  7. 伟大来自于成千上万的小进步 谷歌搜索引擎是数百万个人改进的结果。系统设计要容易接受新的变化,并定义相关的关键绩效指标(KPI)。

  8. 技术债很讨厌,但不可避免 技术债务是未来需要做的工作,因为选择了一个更简单的解决方案。它会让一切进步变得更慢。

  9. 软件不会自己运行 软件需要运维。系统要有自信心定期发布新版本,自动化测试和其他工程标准非常重要。

  10. 复杂的系统需要DevOps才能良好运转 DevOps是一种文化,需要开发和运维团队紧密合作,确保系统高效运行。

理解并应用这些原则,可以帮助管理者更好地理解软件开发过程,提高公司运营效率。

 

欢迎咨询,九影专注软件定制15年,提供:游戏定制、元宇宙、线上展厅、虚拟仿真、AR/VR、小程序/公众号、网站/App、全景展示/3D建模、CRM/OA/ERP系统定制等。

热线:021-50309719  电话/微信15000568602

 

微信“扫一扫”免费获取 方案+报价!