根据我多年的经验:
- 语言已经改变(通常相对缓慢)。
- 可以实际解决的问题范围已经扩大(快一些);
- 解决方案的规模和复杂性已经增加(相对较快);
- 有些东西是
flavor of the day
(有时好,经常是坏的)。
正如在有关模式的讨论中所指出的那样,四人组没有发明模式。他们提出了已经应用的解决方案的术语和模板。
与许多其他领域不同,还有许多不常见的做法。我已经看到了很多尖端的东西来去去。其中许多是对已经在实践中使用的技术的改写,并且通常在某种程度上是成功的。其他人则或多或少地消失了,大部分都在采用新方法。(最近有人见过第五代语言吗?)
我见过的最有效的程序员可以选择并将成熟的组件组装到可行的解决方案中。这很少涉及任何前沿技术,通常会增加项目风险。基于已经完成的工作的能力使我们能够扩大可能的范围。
编程语言往往属于相对较少的家族。熟悉家庭中的一种语言会使使用类似语言变得更加容易。了解以该语言提供的库并加以利用可以极大地提高生产率和可靠性。通常,我会选择带有适当库的较旧语言,而不是没有适当库的较新语言。
在应用新技术时,重要的是要避免 Because We Can
综合征。添加新技术是因为它是当年的风尚,因此往往会带来更多无法解决的问题。知道这项技术何时将解决实际问题,以及何时仅增加复杂性是一项有用的技能。
一个真正优秀的程序员将解决新问题,并使用其余的现有解决方案。很少有公司需要尖端技术,而所有公司都需要可靠的解决方案。
我通常会后悔滑下剃须刀。我不记得曾经后悔使用成熟的技术。但是,许多描述new
是对现有内容的重新包装。通常,这种重新包装使事情更容易理解和适当应用。