Interesting deliberations. I have always felt that with time we are over engineering our systems with all the patterns flying around. An extra layer of abstraction means more failure in understanding in future. My personal approach is to keep things simple and only introduce complexity if it is required. Decouple if decoupling is required. Many of the design requirements do flow in systems because we blindly put in requirements document that it should be maintainable, reliable and all *able. It's also necessary to understand the degree in which we want these *ables and more importantly how they impact our budget and business values both in shorter and longer term.
One important aspect is always to keep a very tight focus on business requirements, at every stage, both in terms of functionality and budget.
I completely agree that the newer breed of developers appear to be very knowledgeable when it comes to design patterns and the latest buzzwords like hibernate, jason, nant, ajax etc. In the other hand I have found that even the best among them, those who can be considered star programmers appear to have limited understanding and knowledge of what is really happening under the hood.
I had a several conversations in the past with young guns who were viewing spring as a major innovation trying to convince them that what this framework is providing us through reflection consist the evolution of things like IDL, type libraries, COM and CORBA.
When it comes to design patterns and the terminology introduced by the gang of four, we all know that their proposed architectures have been used for decades before and a senior developer was using them almost intuitively without knowing the formal differences of a regular factory versus an abstract. There is no doubt of course that the formalization that was introduced by the movement of DP was beneficial for the industry although the recognition and successful implementation of patterns still (and probably always) rely in the experience and talent of the developer since this process is impossible to become a purely mechanical and deterministic.
An additional point I have to make regarding newcomers to the field of SD is their inclination to spread their skill set very horizontally, trying to cover as many technologies possible as opposed to deeply concentrate in a specific domain and master it.
发布评论
评论(2)
有趣的审议。我一直觉得,随着时间的推移,我们的系统设计过度了,所有的模式都在飞来飞去。额外的抽象层意味着未来更多的理解失败。我个人的方法是让事情保持简单,只在需要时引入复杂性。如果需要解耦,则解耦。许多设计需求确实在系统中流动,因为我们盲目地将其放入需求文档中,认为它应该是可维护的、可靠的和所有可用的。还有必要了解我们对这些能力的需求程度,更重要的是它们如何在短期和长期影响我们的预算和业务价值。
一个重要的方面是始终密切关注每个阶段的业务需求,无论是在功能还是预算方面。
Interesting deliberations. I have always felt that with time we are over engineering our systems with all the patterns flying around. An extra layer of abstraction means more failure in understanding in future. My personal approach is to keep things simple and only introduce complexity if it is required. Decouple if decoupling is required. Many of the design requirements do flow in systems because we blindly put in requirements document that it should be maintainable, reliable and all *able. It's also necessary to understand the degree in which we want these *ables and more importantly how they impact our budget and business values both in shorter and longer term.
One important aspect is always to keep a very tight focus on business requirements, at every stage, both in terms of functionality and budget.
我完全同意,新一代的开发人员在设计模式和最新流行语(如 hibernate、jason、nant、ajax 等)方面似乎知识渊博。另一方面,我发现即使是其中最好的开发人员,那些可以被认为是明星程序员的人似乎对幕后真正发生的事情了解和了解有限。
过去我与年轻人进行了几次对话,他们将 Spring 视为一项重大创新,试图说服他们这个框架通过反射为我们提供的内容包括 IDL、类型库、COM 和 CORBA 等事物的演变。
当谈到四人组引入的设计模式和术语时,我们都知道他们提出的架构已经使用了几十年,并且高级开发人员几乎直观地使用它们,而不知道常规工厂与抽象工厂的形式差异。当然,毫无疑问,DP 运动引入的形式化对行业是有利的,尽管模式的识别和成功实施仍然(并且可能总是)依赖于开发人员的经验和才能,因为这个过程是不可能的变得纯粹机械化和确定性。
关于 SD 领域的新人,我还必须指出的一点是,他们倾向于水平地传播自己的技能,试图涵盖尽可能多的技术,而不是深度专注于特定领域并掌握它。
I completely agree that the newer breed of developers appear to be very knowledgeable when it comes to design patterns and the latest buzzwords like hibernate, jason, nant, ajax etc. In the other hand I have found that even the best among them, those who can be considered star programmers appear to have limited understanding and knowledge of what is really happening under the hood.
I had a several conversations in the past with young guns who were viewing spring as a major innovation trying to convince them that what this framework is providing us through reflection consist the evolution of things like IDL, type libraries, COM and CORBA.
When it comes to design patterns and the terminology introduced by the gang of four, we all know that their proposed architectures have been used for decades before and a senior developer was using them almost intuitively without knowing the formal differences of a regular factory versus an abstract. There is no doubt of course that the formalization that was introduced by the movement of DP was beneficial for the industry although the recognition and successful implementation of patterns still (and probably always) rely in the experience and talent of the developer since this process is impossible to become a purely mechanical and deterministic.
An additional point I have to make regarding newcomers to the field of SD is their inclination to spread their skill set very horizontally, trying to cover as many technologies possible as opposed to deeply concentrate in a specific domain and master it.