关于软件开发的九个常识
马克·安德森在2011年写过一篇文章,他预言“软件将吞噬世界”。这篇文章主要阐述了两个观点:一,许多传统业务正在被软件公司取代;二,很多公司都发现他们所提供的价值越来越多地来自于软件系统。
在安德森撰写这篇文章时,市值最大的10家公司中,没有一家是从事软件驱动业务的。如今,10家最大的公司中有6家主要由软件驱动,而其他4家也已经准备好了转型。
Stack Overflow和LinkedIn列出非技术公司的软件工程招聘广告超过了科技行业本身。这是经济发展中的一个重大转变,表明公司正在加强他们的软件工程实践。
现在许多不认为自己是软件公司的公司也开始发现:软件系统是他们运营的一个关键组成部分,因为软件有着变革公司的能力!
那么软件开发到底有哪些魔力呢?下面就给大家分享「软件开发的9个小常识」:
01、软件不是魔术
软件在我们看来它像魔术,但它既不是魔术也不是魔法。软件的每一个元素都是人为设计的,存在一定的数学基础,不是凭空变的,它需要设计、构建和维护。就像房屋那样,有地基、结构、房间和家具等多种系统一起工作,它的系统也是由许多个子系统所创建起来。
02、软件永远不会“完成”
软件是一个迭代的过程,根据用户的需求变换,其生命周期中存在不断的升级和修订。我们的工作就是创造一个让大家能认识到这一点的环境。同样,我们也从来不期待市场营销和客户获取会“完成”,因为这也是一个更新迭代的过程,在每个迭代过程中,我们不停的为业务交付价值,不断地学习和成长。即使我们成功做出了一些产品,我们也从不会“停止”做这些事情。
03、软件开发需要团队合作
软件开发需要团队作战,没有人可以做所有的事情,开发人员既不是质量工程师,也不是系统工程师、软件测试工程师或项目总监,组织需要所有的角色。没有哪个老板会建议员工既做销售又做营销,否则就不需要销售团队了,因为营销人员也了解公司的产品,也能做销售的工作。但销售和营销虽然是相关的,却又是不同的,所以两者之间需要明确的分工。
04、设计不是外观,而是工作原理
软件开发设计的不只是外观和感觉,设计就是工作原理,UI设计师不会决定菜单的颜色或按钮的形状,他们决定工作流和交互是什么。使用用户会在屏幕上看到三个选项,或者是一个选项,都是设计师根据心理学和对用户的同理心来决定的,并且不断地进行测试,再测试。
05、安全是每个人的责任
不管你是否知道,是否愿意,我们从事的都是安全行业。所有的软件都有安全需求和潜在的安全漏洞,甚至与软件开发相关的系统也都存在安全需求和漏洞。虽然有防火墙和入侵安全检测等基础的设施组件,但还远远不够,还必须使用内置的安全控制来设计、实现和维护软件平台。
如果你以为我们不是被攻击的目标,那就错了,所有的计算机系统都是可能被攻击的目标,因为攻击不仅只是为了系统里的信息,更因为它是计算机这样的一个事实。
06、伟大的成功来自成千上万的小进步
伟大的成功来自于很长一段时期内所做的成千上万的小进步(变更)。如果变更的效果是负面的,那变更将变成回滚。百度也不是一天建成的,它是很多人参与改进的结果。
搜索质量小组每周开会,工程师提出修改建议,委员会进行辩论和投票表决,几周后,对测量的结果进行评审,并决定保留还是继续回滚更改。在现实世界里,没有一夜成名,成功的背后都是无比艰辛的付出,和一次又一次的进步。
07、技术债不可避免
技术债务是指未来需要做的工作,因为现在我们会选择一个更简单的解决方案,而不是更好的,需要更长时间去完成的一个方案。只要是合理规模的软件项目都有技术债务,技术债务会让我们的进步变得缓慢,但是越忽视它,它就越会像滚雪球一样越滚越大。
一些金融管理者听到“债务”时,会认为债务是一种有回报的投资。但技术债务刚好相反,它是痛苦的,犹如一颗定时炸弹。
08、软件不会自己运行
软件并不会自己运行,任何基于软件的系统,特别是网站这类系统,都需要运维人员和运维流程。否则,软件就像一本没有打开的书,必须有人打开阅读并管理它。
运维比软件开发本身更重要,代码只写一次,却会运行数千万次。我们的工作就是希望运维成为任何软件系统的一部分,它应该像其他项目一样被计划、预算、管理和有效运行。
09、复杂的系统良好运行需要DevOps
复杂的系统最好是通过DevOps来改进,DevOps是一组过程、方法与系统的统称,用于促进(软件、程序等)开发、技术运营和质量保障部门之间的沟通、协作与整合。它强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。
最后想说一句,软件,如果不管它,就像面包一样变得陈旧。然而,随着人们与科技的进步,软件正在吞噬着这个世界。
如果你也有软件开发、网站开发、定制开发等需求,欢迎沟通交流。