20年前,我是一名手工技术专家,十年前转向管理,现在再次成为顾问。我惊讶于某些变化,并对他人感到惊讶。这是几乎造成了早期消亡的基本破产。
在80年代和80年代早期,在昂贵的UNIX工作站上开发了许多专业软件,如Sun Sparc或Next Station。到了90年代,Wintel接管了,每个人都在Windows上编码了MS Visual Studio等大供应商的工具,或者像Eclipse这样的一些开放产品,而Linux仍然是桌面上的有点爱好者。
我在2001年开始启动,一个唯一的开发人员使用了Linux,不得不挣扎而没有任何访问源代码管理(SCM)工具和Outlook电子邮件。他曾经通过电子邮件发送电子邮件,并要求我们为他检查。我记得我用xemacs回来 - 是的,经典时代。
快进到现在。 UNIX是一个非常受欢迎的开发平台 - 特别是由于其UNIX核心的MAC - 以及Windows上的Linux也存在(WSL)。这是一个容易回到的一个领域。有趣的是,我的一些年轻同伴几乎不知道如何使用Windows,并且在Linux / Unix上更强大!
回到当天,分支,合并和解决冲突是一个可怕的工作,有时需要发布经理的专业知识。回到戈利亚SCM Clearcase很受欢迎时,它采取了一支巨大的团队来维护和管理分支,合并和发布(至少根据我2002年的HP经验)。
自我管理的拉出请求(PR)的概念实际上是相当新的,显然来自Linux Dev和新的分布式SCM浪潮,如Bitkeeper和Git。能够在工作流中进行合并的要求是旧系统,如ClearCase,CVS,SVN和Perforce并没有真正拥有。您有一个repo所有者或发布经理,他们可能已经完成了这个或每个开发人员自己。这真的简化了并赋予了用户自己合作的。
我首先通过肯特宣言的创始人之一和极端编程的创作者来了解单元测试和连续集成(CI)。这是20年前的革命性,但花了一些时间来实现流行工作流程的当前标准化。
我发现很难在敏捷和克拉姆里更加强调的是,但很高兴看到它在这一点上相对较好。
我是在一个软件开发会议上,回忆在小组讨论单元测试的舞台上的Java Collections作者Josh Bloch。他说,“谢谢(敏捷或JUnit)进行测试性感。”
如此真实。在过去的日子里,写作测试很无聊和不受欢迎,所以Orgs聘请了QA工程师致力于找到你的所有错误!哇,真是一种简单的生活......
单位测试和CI几乎消除了对黑匣子QA测试仪的需求,因为开发人员现在拥有测试写入和CI基础架构运行并报告测试。它确实使软件更加可靠,更快地循环。它还导致程序员在测试更友好的方式中思考更全身性和编写代码。
容器,即Docker,在将代码移动到生产中,丢包和减少了相关的env相关问题(以牺牲一个好的Devops工程师设置Docker Ecosystem)。
在过去的日子里,您将在一个完全不同的系统中开发比部署的系统(即,在Windows上的代码和部署到UNIX),这总是导致错误和更多在每个测试和发布周期的工作。
此外,在过去,释放,QA或Devops工程师将从SCM标签中获取代码并弄清楚如何编译,测试和迁移它 - 并且通常揭示一系列硬编码路径和变量或丢失的库和文件需要重新加工或攻击工作。
Docker真的简化了该过程,并通过再次赋予程序员来构建和测试它来允许CI和连续部署(CD)。
今天在这个OSS世界上有这么多选择。我正在建立Jenkins并希望集成到Bitbucket,并且Plugin搜索“Bitbucket”产生400多个选项(许多开源)。
好的部分是您几乎不需要构建基础架构和工具 - 您只需找到正确的基础架构和工具即可重用。
20年前,建立基本图书馆和数据结构是一种“有趣”。今天,每种语言都有框架和图书馆,使得99%的开发人员应该永远不会编写B树,HASHMAP或甚至OAuth连接器。
虽然敏捷20年前(敏捷宣言追溯到2001年),但其广泛的采用更近期 - 即使是外部软件有时是有时扭曲的方式。它已成为执行CXO流行语(“您的企业必须敏捷”)。
我记得相当长的释放周期(只要在启动时长达三个月)。在参加规范会议以了解要求线路逐行了解后,开发人员可以去他们的办公桌并玩游戏几周,而无需在他们的位置发出可怕的更新。现在,你每天都有一个立场和两周的冲刺,所以没有更多的松懈!
BA的作用也与敏捷也减少,因为开发人员现在直接面对用户或产品经理。你不能再掩饰而不是说话。因此,沟通技巧比过去更重要。
敏捷使得发展速度迅速。 这不仅仅是Scrum惯例和每日立场。 该工具如此简化,JIRA板,拉请求,以及CI / CD都让您更快。 当天到日常工作有点忙碌,但它也非常令人欣慰,让东西完全越来越多地。 如果你正在考虑类似的旅程,请祝你好运! 我很乐意清爽我的技能(虽然它几乎被压碎了)。 SWE基本面是一样的,所以我想我可以生存,但工具已经大大改变,这极大地影响了生产力。 您在本文中可能感知的一个主题是,今天的开发人员具有比20年前更广泛的任务。 它们代码,管理SCM,与用户交谈,测试其代码,构建和部署容器等。它可能是令人难以置信的,但至少你不必再写链接的列表了。