在我们的职业中,圣战非常普遍。 不同生态系统的支持者很难就哪种方法,学科,语言,操作系统和工具集达成一致。
我们对我们不熟悉的生态系统的判断在很大程度上受到先验知识和经验的影响。 为了欣赏我们不使用的东西的优势,通常不足以进一步了解它们,而且接受不同的观点和方法并从这些不同的观点来判断这些系统。
多年前,我在学习TDD时就意识到了这一点。
最初,TDD似乎是荒谬,不合理且不切实际的软件开发方法,但是今天,只要有机会,我都会立即使用它。
了解TDD的技术知识完全没有花时间,但是那不足以让我看到它的优势。 对我而言,与众不同的是,对需求分析以及开发过程中的测试和重构的重要性有了更深入的了解。 一旦了解了这些内容,TDD就会自然而然地成为盒子中最犀利的工具。
当我最终坐下来学习函数式编程时,我也有类似的经历。 与TDD不同,FP中有很多东西要学习。 但是,当我最终掌握了不变性和函数的概念,函数诚实的重要性以及函数式编程和面向对象编程之间的关系时,FP才成为我的重要工具。 为了有效地使用函数式编程,您需要以不同的方式处理问题。 完成后,功能编程工具将帮助您解决问题。
我开始接受这个想法是为了说服您,大约一年前,当我踏上Java之旅时,我为这场顿悟做了真诚的准备。
我有多年使用.Net(C#)的经验。
在那些年里,我学会了欣赏整个生态系统的力量:语言,库,工具和成熟度。 我发现它使我能够专注于手头的工作并帮助我快速编写高质量的软件。 .Net还与时俱进,在不增加现有代码复杂性的情况下增加了新功能,使我可以从生态系统本身了解最新的工程实践。
.Net确实是工程学的杰作。
我对Java也并不陌生。 但是直到一年前,我还没有将Java用于任何商业项目。 多年来,我一直在观望.Net和Java社区之间的圣战。
Java社区声称它的生态系统比.Net广泛使用,至少与.Net一样强大。 Java具有与操作系统无关的另一个优点,并且得到了一个活跃的大型开源社区的支持。
我一直有我的疑问。 从我对语言的了解来看,它的功能远少于C#,并且按我的喜好,该生态系统似乎过于复杂。
但是现在我毫不怀疑。 旅程开始的一年后,我可以说顿悟从未发生过,对我而言,困境已经过去。
Java语言很弱。 生态系统,特别是Spring Boot的生态系统,脆弱且难以维护。 做一件事情的方法太多了,通常只有一种方法(如果有的话)起作用,从而使开发人员在拼命寻找解决方案的过程中反复应用反复试验。
在文章底部的链接中,我解释了使我得出这些结论的原因。
但是还有一点值得一提。
我以开放的心态来学习Java。 在每一个选择和交界处,我都会咨询专家,研究在线课程并在线阅读帖子。 我试图使所有决策与Java方法保持一致,而不是与.Net的习惯保持一致。
我来到罗马向罗马人学习。
请通过以下链接阅读更多内容:
https://drive.google.com/file/d/1Z8rsBh-xNA3uHfR1V9CHO9V2jWIu2yuY/view?usp=sharing