潍坊定制软件开发:一定要知道的软件的10个常识

发布时间:2020-08-11 10:25:03

2011年,马克·安德森(马克·安德森)写了一篇文章预测,“燕子软件世界”。有观点主要有两点:第一,很多传统企业都被软件公司所取代;第二,所有其他的公司都发现,他们提供的价值越来越多地来自于软件系统。

在安徒生写这篇文章的时候,没有10家最大公司的市值是在一个软件驱动的业务。今天,最大的10家公司的6主要是软件驱动的,而其他4个是准备转型。

堆栈溢出和非高科技公司超过了技术行业本身LinkedIn列表中的软件工程的招聘广告。这是在经济发展和显示,企业正在加强他们的软件工程实践的重大转变。

会计或软件,其中之一是对公司更重要?有在这篇文章中没有答案。但现在不认为自己的软件公司很多公司也开始发现,软件系统是其运营的关键组成部分。

如果各级CEO和管理者不明白这个软件,那么他们将是可有可无的。这将限制或者他们的职业发展或公司业绩产生负面影响。在任何情况下,不明白的软件,是注定要失败的。 (Gartner预测,到2020年,50?F的首席信息官(CIO)将被替换,因为他们没有改变公司的能力。)

软件常识

本文列出了10级常见的感官,管理者应该知道:

关于软件,本文认为,这是10件最重要的事情所有的管理者需要知道:

1.软件不是魔术

软件是不是魔术。虽然它看起来像魔法,还是魔法,这不是魔术。每个元素是由人类设计的,有它的数学基础,或者可以在人类的语言来解释的过程。

不像魔术,软件不是凭空造出来。它需要设计,建造和维护。就像房子有多个系统一起工作(基础,结构,管道,房间,家具等),软件系统也需要多层次和子系统创建整个系统。它可以设计好或不好的设计,以及快速的设计很少过去。

如果人们无法用语言来描述它会做(包括所期望的结果,以及如何去实现它),然后计算机无法做到这一点无论是。 “如何”之称的算法,这是不神奇。

机器学习等人工智能技术并不神奇。机器学习是基于数据的预测,没有明确的规则或指令。它使用线性代数一般都做。如果有100个一万张香蕉已知的照片100万张照片,而不香蕉。一个训练有素的机器学习系统将着眼于新的照片,并会告诉你,它看起来像基于它已经从以前的照片学到的知识在第一组。不过在第二组,这不是魔术。使用机器学习排序基于过去的聘用决定重新开始,即使没有任何刻意的偏见,可能放大了实证招聘历史。

2.软件永远不会“完成”

软件永远不会“完成”。软件是一个反复的过程,它包含生命周期期间多次修改和更新。我们的工作是创建一个认识到这一点的环境。

同样,我们永远不要指望市场营销和客户获取要“完成”,他们也是反复的过程。在每次迭代中,我们将继续提供价值的业务,我们也在不断地学习和成长。即使有一些成功的版本中,我们从来没有打算“停止”做这些事情。

这将是巨大的,如果软件可以在一个版本完成,但这并不现实。需求文档是充满模糊性,以及该软件的第一个版本是充满了“哦,那是我写的,但我不是这个意思”的场面。最好的软件可以启发新的思路和功能要求。鉴于新的销售管理系统是更有效的将激发更高的效率。世界在变化,竞争对手提供新的功能,人们有新的想法。此外,总有一些bug需要修复:它可能是在代码中,也可能是在底层的软件架构和系统构建的代码。某些软件可能是完美的,但可以肯定的是,随着时间的推移,人们会发现在它构建平台的各种漏洞。

我们的工作就是让组织意识到了这一点。

认识到这个问题的方法是建立一个组织,有信心定期发布新版本。当完全自动化测试和其他工程规范到位,我们增强信心。这种信心建立,以避免过长的发布周期,而是每季度发布高质量的软件,每月甚至每周的能力。具体的频率并不重要,但信心是很重要的,并且自信可以导致更快的创新。

3.软件开发是一个团队作战,没有一个人可以做任何事

软件开发是一个团队的战斗。开发商既不是产品经理,也不UX(用户体验)的设计师,也不是质量工程师,分析师,安全专家,技术作家或操作工程师。企业需要的所有角色。

没有经理会建议每销售(转让)工作人员做营销和PR,否则销售团队将被解雇(因为营销人员了解产品,他们也可以做销售)。市场营销和销售是相关的,但它们是不同的。因此,两者之间的分工。

同样,开发团队需要独立的人员收集的要求,质量保证和测试,代码编写等。

一个神话,开发人员可以“一切”被称为“全栈开发者”或“10X工程师”,这一般只在小公司的存在。是的,一个非常小的公司可以在同一时间做市场营销和销售,但你可能不加入这样一家小公司。

不要吃用你自己的利益来挑战别人的敬业精神。一个孩子是“善于脸谱”并不意味着他或她将是下一个扎克伯格;一个孩子在工程上有意义并不意味着他或她可以使用积分;一个孩子可以自己做一个网站,并不意味着这个网站能处理数十亿每小时的金融交易。

4.设计并不美观,但工作原理

史蒂夫·乔布斯的名言说:“设计不仅仅是外观和感觉。设计是如何工作的。” UX设计师不坐下来决定菜单的颜色,或者按钮是否是圆形或方形。他们决定工作流程和交互。它是什么。

使用者会看到三个选项的屏幕,或者只有一个选项的屏幕?这样的设计决策需要心理学,同情用户和测试,测试,再测试和。

一个UX设计的最大挑战是,一旦你熟悉的系统,您将无法预测新用户的能力。预测新用户的需求时,谁设计的系统的人将自动被取消资格。 UX可能是美丽优雅,媲美一件艺术品,但要求UX设计师的背景更改为帆船的照片是没有帮助的。

我们的工作是信任的测试数据,而不是主观臆测,营造环境,规划多个版本的产品发布之前,并期望进一步改进产品发布后。不要混淆UX设计师平面设计师。问一个UX设计师,设计公司的节日贺卡是一样的粗鲁行为,要求技术作家写在公司通讯。这些都是不同的技能。

5.安全是每个人的责任无论我们知道与否,我们是否希望它与否,我们都在安全行业。所有软件都有安全需求和潜在的安全漏洞。参与也开发软件系统具有安全性要求和漏洞。尽管安全的基础设施组件,如防火墙和入侵检测是必要的,他们是不够的:内置的安全控制也必须用于设计,实施和维护的软件平台。安全既是一个良好的技术和良好的工艺。

如果你认为我们是不是攻击的目标,那么你就错了。所有计算机系统的攻击目标,因为攻击不仅是其中的信息,但仅限于一个事实,即它是一台电脑。例如,没有有价值的信息系统是网络攻击的目标,因为它可以用于转发上的其他计算机的攻击,或者开采比特币,或储存他人的盗版视频。

安全性是不一样的开/关,有很多灰色地带的按钮。安全性是最好从一开始就考虑。验尸维修价格昂贵,而且往往是无效的。我们不会先造一艘船,然后“添加”功能,使其浮动。同样,也不可能先建立一个系统,然后按“安全”按钮是安全的。

安全是对风险和宽容风险。加密两个节点之间的通信不保证其安全性,但它提高了安全性。只有超级计算能力可以破解密码。在一个区域内降低风险并不能帮助其他领域。保护网络不防止人身安全问题。一个人打开一扇门,和其他人可以窃取您的备份磁带。

随着基因斯帕福德说过一句名言:“唯一的真正安全系统是由全副武装的警卫,即使如此,我还是有疑虑关闭,铸混凝土,和守卫在绝缘室的系统。”

符合安全标准,如NIST CSF(美国国家标准与技术研究所网络安全架构),PCI DSS(支付卡行业数据安全标准)和SOC 2(服务组织控制报告)可以量化的风险,如果做得恰当,它也可以降低风险。这些标准并不能保证绝对安全,绝对的安全是不存在。更重要的是,他们提供了有关如何应对和负责任的报告不可避免安全漏洞的指导。诚实,坦率,开放是好的建议。

软件,如果你不理会它,它变得陈旧像面包。我们的工作是与现实的平衡安全性妄想,并做出适当的预算时间和资源。

6. ??特征大小不能预测的开发时间

该功能(用户感知)的大小无关,与创建功能所需的时间。小功能可能需要数天或数年,和大的功能(用户认为)也可能需要数天或数年。

我们的工作是建立和支持接受这个事实,而不是工程量的头脑风暴评估软件开发过程。工作量评估本身可以采取一个令人惊讶的很长一段时间。

鼓励沟通解决工作量评估问题。工程师可以给工作令人惊讶的长估计,但也提出更改要求,大大降低了时间。请记住,工作量评估应包括测试,培训,部署和意想不到的离开(例如病假)。

切勿在没有与工程部谈判的工作量承诺的特征。这不是我们在公司权力的象征。它需要一个专业的过程中,开发人员的要求认真对待,工作量评估,并按时交付(或延迟诚实的原因)。

7.伟大来自成千上万的小改进

伟大来自于十万,甚至上百万的超过长期做小的改进(改变)。如果变化的影响被测量为负,则改变将被回滚。

谷歌不是一天建成的。谷歌的搜索引擎是由数以百万计的个人改进的结果。搜索质量团队达到每周一次,和工程师们走上舞台,并提出自己的建议进行修改。他们表现出太大起色怎么会在模拟环境,以及委员会辩论和投票。几个星期之后,测量结果进行审查,并决定将作出保留或回滚所做的更改。

谷歌搜索是迭代开发的在思考“的数据大爆炸”的胜利。没有人能在一开始做一个很好的搜索引擎。只有在好莱坞电影可以将智能怪胎想出一个惊人的新的理念,完美实现它的第一次。在现实世界中,它需要多年才能一夜成名。

这是真的,你正在努力实现的目标是否是为客户提供更好的服务系统,以更少的错误更有效的系统,或者系统运行更加顺畅。

我们的工作是需要系统的设计能够很容易地接受新的变化,并确定相关的KPI(关键绩效指标)。这些KPI您可以前和变化后容易测量。更重要的是,必须有检查结果,并决定保留或回滚的变化过程。回滚不应该被认为是失败或处罚。你从每个回滚学到什么是有价值的,你从每个保留的变化学到什么。

爱迪生权利发明电灯的过程中已经测试了1000根长丝。当记者问他:“感觉怎么样失败1000次?”他回答说:“我并没有失败1000次的灯泡是1000步的发明。”

8.技术债务很讨厌,而且是不可避免的

技术债务是工作需要在未来完成的,因为我们现在选择一个简单的解决方案,而不是使用一个更好的解决方案,需要较长时间的。合理的规模的任何软件项目具有技术债务。技术债务让一切进步慢,而你忽略它的越多,它雪球。

当金融后台听到“债务”的经理,他们认为这是一项投资,将在未来还清。技术债务是相反的。它是有毒的,痛苦的,它是一个定时炸弹。

1972年,弗拉姆取得其机油滤清器一个电视广告。在广告中,一名汽车修理工解释说,客户没有为了节省$ 4更换机油机滤。后来,客户不得不花200元更换昂贵的主轴承。该汽车修理工的结论是:“你可以给我现在或以后。”

有其中一个子系统与供应商进行通信的软件项目。最初,系统只与一家供应商沟通,所以这是非常简单的。然后,我把一个又一个,然后另一个。有些功能必须为每个供应商,这是不可持续的实施三次,一次。当记者问到支持第四供应商,开发商反对。是的,他们可以在一个月左右移植,但软件架构开始吱吱作响,像一个老房子在飓风。这些权宜之计已经积累了大量的技术债务。

开发人员的建议是花2个月重构供应商体系结构,使之成为插件系统。然后,新的供应商可以支持在一个星期内,而不是一个月的访问。

管理者不快乐。为什么接下来的供应商需要两个多月来支持,而此前的供应商支持的话一个月?逗留2个月偿还技术债务将使未来支持更快的代码更稳定,更容易增加新的功能。这是很难测量精确的优点。“你现在可以给我,也可以在以后给我”。

我们的工作是分期偿还的技术债务。外的控制技术债务减少添加其他功能的能力,并且使软件系统变得不稳定。技术债务偿还应与业务目标,类似的非功能性需求。

9.软件本身不会运行(软件需要运行和维护)

虽然厂商和开发者可以试着告诉你不同的东西,软件本身不运行。任何基于软件的系统(尤其是网站和Web应用程序),需要操作和维护人员和流程。否则,软件就像是一个封闭的书,必须有人打开它,管理它,并利用其需要照顾。

操作和维护比软件开发本身更重要。该代码被写入一次,但它可能会运行数百万次。因此,粗略测量,是较高的运行和维护数百万次的重要性?

我们的工作是希望操作和维护成为任何软件系统的一部分。它必须要有计划,预算,管理和有效像任何其他项目的运行。

操作和维护功能(通常被称为非功能性要求)是不可见的用户,除了作为次要的要求。数据备份是的非功能性需求的好例子。没有用户请求的数据备份,但用户没有请求恢复被删除的数据。不幸的是,没有一个备份没有恢复。恢复是一个功能性要求,和备份是操作和维护(非功能性)的要求。

便于维修和软件服务的高效运作的功能要求从来没有用户提出。但是,它们享受低成本,高可靠的系统的好处。客户将离开这些不可靠的网站,永不回来。

持续改进的要求不仅包括新的功能需求,也有新的非功能性需求。因此,我们的工作不仅是分配资源,由客户提出的功能需求,同时也为操作和维护的需求分配资源。它难以在两个相互竞争的需求之间的平衡。

但是,一个成功的产品是业务需求和运营维护需求之间进行权衡。

10.复杂的系统需要的DevOps运行良好

复杂的系统最好通过的DevOps提高。有DevOps的许多定义,但通常的DevOps被看作是通过快速迭代加快价值(功能,bug修复,工艺改进等)交付。要做到这一点,每个人都参与必须参与。换句话说,他们必须在职能团队协作。这个名字的DevOps来源于去除开发商和运营(IT)之间的屏障,这是快速释放绝对必要的。但是,一个良好的DevOps环境它延伸到所有职能团队的端至端的工作。

DevOps的误解是作为开发人员做运营和维护。这种“构建它,运行它”的策略是一种跨职能团队(消除障碍)的工作,但它不是唯一的方法。

一个复杂的系统,需要三样东西:一个好的过程,与所有相关人员良好的沟通,并尝试新事物的能力。


服务热线:4006068008 0531-85860101 15589999555邮箱:zlxk@zlxk.com地址:山东省济南市高新区鑫盛大厦2号楼24层

Copyright 2023,ALL Rights Reserved zlxk.com | | (c) Copyright 2024版权所有 鲁ICP备20032954号-1网站地图