我只想写代码
从源代码控制管理,到构建工具,再到软件测试,最后部署,这种管理开发工具链的复杂性现在已经超过了开发人员的能力,很难得到真正的实现。
像大多数开发人员一样,我因为喜欢创造东西而爱上编程。不是任何东西,而是让其他人觉得有用的东西。我喜欢不断的解决问题,我喜欢看到在我的脑海中存在很长时间的抽象概念转变成现实存在的东西。在为创造而工作的过程中,在第一次成功运行测试时,我会有种特别的快乐。它是一种混合创造和消费的感觉,直到最后,终于,我可以测试新的功能,验证它是否正确工作,并感受到内心瞬间欣喜若狂,血脉贲张。
所有的开发人员都知道这个快乐。而且,当然,他们知道耐心,纪律,和长久工作才可以获得这种快乐。那些日子,大浪汹涌的喜悦和对前期工作的满意已经变成非常难忘的经历。
但现在,所有方向都指向错误:每天的工作是不堪重负的非编码活动;因此,欢乐的高潮点,不仅罕见,相隔也相对较远。欢乐之间的事情感觉像苦差事。私人项目中,我不断听到自己的咒骂,“我只是想编写代码。”
很长一段时间,我已经将这种无奈归因到今天软件的复杂性。很久以前几百行C++的简单程序早就从我的经验中消失了。骑自行车的经验已经等效于大型喷气式客机旅行的经验;充满延误,检查,对个人选择的限制,和突然不明原因的取消 – 所有这一切导致成本的显著提高。哪里容得下快乐p>
但事实上,病因不是软件项目本身固有的复杂性 – 尽管它肯定是一个促进因素 – 在软件开发中使用工具造成了大量的开销。一个简单的项目 – 例如您自己的开源移动应用程序。比方说,比较您走过的距离和它的直线距离。例如一个概念十分简单的东西,就像容易开发,但有足够的挑战从而使它有趣的软件。首先,您将需要选择一个源代码控制管理方案。如果您想要任何 会团体参与,Git肯定是最好的选择。使用Git麻烦的是,它是建立在自己的小世界里的。您可以使用教程,学会让您从一个最小的A点到B点。但是,如果一个潜在的贡献者要fork您的代码,您最好理解pull请求,分支和合并,以及一系列其他的操作的概念,可能有,也可能没有您用过的其他的代码管理系统的概念。即使他们在概念上类似,Git也用不同的动作来完成同样的行为。
我们还远远没有完成。您将需要部署应用程序。然后您将不得不在某些设备上进行测试。假设您想清除这些障碍 – 没有一个微不足道的障碍 – 您需要一个bug跟踪机制。同样,如果您想别人参与,您需要使用一种常用的缺陷跟踪工具,而不是给自己的笔记或电子表格。最后,如果您想让别人使用应用程序,那么您必须首先获得各种供应商店的批准。这还有趣么甚至还没有开始写代码。
项目开销,即使是简单的项目,也是如此的沉重,这是一个奇迹,任何人都可以找到时间编写程序,但很难从中获得原来的那种快乐。软件开发已经成为大多数业务活动,而不是创造性的活动。这里的根本问题不在于应用程序的复杂性,而是工具的复杂性。在过去十年,因为追逐可扩展性,全面性,性能以及除简单的一切,工具已经失去控制。大多数工具都有自己的API,许多工具拥有自己的DSL。您要么学会一个新的子语言,您要么对它们进行编程来二次开发。在每一个方向,复杂性是一个难以避免的现实,它带您远离核心开发活动:编码。
一个可用的最简单例子是一个移动应用程序例子。如果我选择了一个Web应用程序,我们需要增加因处理语言的多样性要求,部署栈元素,时间碎片分析,NoSQL数据库而造成的开销。我们甚至没有触及云的其他复杂性。我肯定我自己不是唯一对这种情况感到疲惫和无奈的程序员。下周,我将讨论开发商和 站如何解决此问题。同时,如果您已经开始处理这个问题,请分享您的方法。
— Andrew Binstock
主编
alb@drdobbs.com
Twitter:platypusguy
Google+
文章翻译自:http://www.drdobbs.com/tools/just-let-me-code/240168735
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!