自从我开始软件开发人员的职业生涯以来,已经过去了大约 30 年,虽然我不再像我喜欢的那样经常戴上程序员的帽子,但我仍然认为自己是一名开发人员。在与 ThinkSys 的许多聪明的开发人员交谈时,我无法逃避这样的感觉:现在的软件开发与像我这样的退伍军人刚开始时完全不同,而且这种转变在过去几年中特别加速。请让我回顾一下发生的变化——其中一些可能也会引起您的共鸣!
软件开发转型 首先,是什么推动了这一变化?显而易见,云、互联网和移动性的结合是主要因素。这种组合改变了人们使用软件的方式以及他们使用该软件的目的。马克·安德森 (Marc Andreesen) 曾说过“软件正在吞噬世界”——从本质上讲,这已经成为现实,我们生活的几乎每个方面都由软件驱动。
生活与科技的融合使得客户的要求更高,如果他们的期望得不到满足,他们更容易考虑转移业务。这对于软件开发意味着什么?在我看来,这就是推动软件开发中“快速发布、经常迭代”运动的原因。
鉴于这种需求,由“瀑布模型”驱动的传统 SDLC 显然存在不足。这太 尼日利亚手机号码列表 僵化、太线性,而且不够灵活,无法满足新的需求。敏捷宣言提供了一个现成的替代方案,公司热情地采用了它。
随着云和基于 SaaS 的软件交付模式占据主导地位,敏捷变得更加加速并转变为软件的持续交付。现在这种转变已经或多或少完成了。去年 Atlassian 的一项调查发现,77% 的软件开发组织实行敏捷开发,50% 实行持续交付 (CD)。
我曾写过有关软件开发团队如何随着敏捷和 DevOps 的出现而发生变化的文章。流程的改变必然导致团队的改变。软件开发过程变得更加精细,测试现在与开发并行进行,自动化更加核心,业务和领域所有者更加紧密地融入到软件设计中,并且不断努力吸引和集成客户反馈到软件中。
与此同时,软件开发团队变得更加分散和多地点。这使得软件的创建成为一个更加协作的过程。事实上,前面提到的 Atlassian 调查发现,78% 的软件组织正在使用分布式版本控制系统(如 Git)。
我们看到的另一个重大变化是软件的架构方式。独立的整体架构开始为面向服务的架构(SOA)让路,SOA 专注于创建交付业务服务的模块化元素。
现在,它已进一步转变为微服务,从旧的整体架构中分离出更细粒度、可能可重用的服务。除了对速度的需求之外,推动这一变化的还有云和移动的特殊性。现在更加强调小占地面积和更有效地利用资源。另一个巨大的变化是在每个阶段都强调“可用性”。
在早期,人们几乎感觉软件将由“专家”使用,并且注意力集中在功能上。如今,软件的生死取决于用户体验。现在,用户界面和用户体验受到了如此多的关注——它的外观、使用起来有多容易以及学习起来有多直观现在是关键。埃里克·雷蒙德 (Eric Raymond) 说:“最容易使用的程序是那些需要用户最少学习的程序。“
碰巧的是,我们找到了一种更好的软件制作方法,并且编程语言也跟上了步伐。正如我所见,我们现在已经从 C 转向 Java、.Net、PHP、Python 和 Ruby。正如我所见,我们现在已经从 C 转向 Java、.Net、JavaScript、JQuery 和 Angular/React。编码已经变得更接近我们自然表达自己的方式。
伴随这些语言而来的是它们极其强大的库,使编码变得更容易、更快、更直观。与此同时,开源浪潮也随之而来——一些特殊用途、社区贡献的代码片段有助于实现相同的目标,同时也可重用。这是预计会发生很多变化的地方,而这些变化的方式我们甚至可能认为是不可能的。有人讨论开发人员未来可能需要如何成为数据科学家——这是对机器学习和人工智能的预期影响的认可。
|