怪怪 | Nothing, Everything

"有过一个发疯的时刻,有感觉的钢琴以为它是世界上仅有的一架钢琴,宇宙的全部和谐都发生在它身上." - 狄德罗
随笔 - 104, 文章 - 3, 评论 - 2003, 引用 - 44
数据加载中……

从DDD说开去,流行方法论和我们的未来

首先澄清一点, 我这篇文章中菜鸟来菜鸟去叫嚣, 仅仅是为了配合文章主题, 不代表我本人对比我更聪明、 更有能力的人的否定; 只是某些牛人借以成功或者出位的东西, 其价值放到更久远的过去与未来, 其作用放到形形色色的具体环境中去, 究竟几何, 我个人认为必须持谨慎甚至怀疑的态度; 更不论跟我们的生存相关的那些问题了。

既然有那样的人和那样的组织, 可以通过产品、 书籍、 某某大奖、甚至自己的从业经历以及地位等各种各样的方式,行使他们的宣传能力所具有的舆论暴力, 让众多希望凭借掌握某些东西从而获得更好的生活、 更多的心理满足的人们随声附和, 那么我想, 我也应该有在夹缝中惊声尖叫的勇气。



从DDD看方法论的产生与流行

以前大概了解过一下DDD, 也下载了电子书(因为不确定值得一买), 吸收了其中一些想法, 放弃了另外一些。刚才看一兄弟的博客, 看又提到DDD, 顺着他提供的链接, 下载了InfoQ的DDD简版, 打算重温一下。

怎么说呢, 也许是关注点变化了, 我个人认为DDD在交流到分析这一块还是相当棒的, 但是从分析到设计再到实现, 尤其是一些结论, 很多是菜鸟对自身能力不足的屈服。 也许某个不小心点入我博客的人, 正在跟随这些“菜鸟”, 那么您的感受我是可想而知的, 事实上, 我自己也是个菜鸟, 而且我本来决定不再提这些招人厌烦的话了。

我自己是个年轻人, 不是老古董, 在接受新事物上绝无问题。 但是我深刻的意识到一件事, 如果我本人在杂乱的领域知识与最终的设计实现的千头万绪之间, 感到难于处理, 也许我也会屈服。 事实上这就是DDD和很多方法论的核心所在。 我只想说一件事, 包括我自己在内, 这世界哪儿来的这么多没能力还要承担责任的二把刀? 这样的情况会一直持续下去么?

当然, 我并不是再说这个精简版中对“拿C模拟面向对象”的抨击。 我很久没使用C工作过了,也不喜欢C,因为它没有提供足够抽象的, 用于表达的措施; 也不是在反对诸如此类的任何一个说辞,这些话题太具体了。我想说的是: 计算机软件行业发展到今天, 已经提供非常多的手段, 让我们可以采取各种各样不同的抽象。  DDD,或者其它一些方法论的问题在于, 因为某菜鸟大牛和其追随者们不具有掌握其它抽象手段的能力, 或者仅仅是主观的不愿意再花力气对其它抽象手段做出思考, 于是就号称, 这个事最好这样, 最好那样。

同样的,当采取一个他们认为可以掌握的方法进行下去, 碰到问题时, 人的一个非常自然的反应, 不是否认自己, 因为除了自我肯定, 还有很大的一方面是否定既定策略所带来的庞大成本: 重新学习、 思考和实践。 在这种情况下, 顺理成章的, 他们就需要采取可以弥补上一个决定的方法; 这样一步一步走下去, 其中一些聪明人居然也弄出了某种自圆其说的方法论。 当这种方法论的效果处于可接受的范围内, 尤其是更重要的, 他迎合了广泛存在的、盲目和容易满足的菜鸟的时候, 这个方法论就流行开来。

另外, 某些方法论的跟随者, 说起其拥护的方法论的态度是刺激我发表这样的言论的动机之一; 因为他们所拥护的东西, 其提出者甚至也没有像他们这样肯定, 这在我看来是荒谬的。 比如一些方法论的提出者论证他的方法论适合某某类型项目的文章, 本身就已经说明, 其实这些东西在真正值得说服的群体内, 根本就没有得到足够的肯定; 甚某些文章的语气, 让我这样的怀疑者可以看到那么一丝若有若无的不自信。

但也许这就是人类做事的解决之道: 既然我们的社会还不具有一大堆能够将现实世界的问题和真正艰深的科学理论联系起来的顶尖工程师, 也没有出现一群真正的大师拿出对大多数问题解决方案的总结,而事情总是要做的, 那么不如一步一步的来, 让菜菜鸟们跟随菜鸟的优雅, 采取次一等的做法总是要比什么都不做来的好得多。所谓山中无老虎, 猴子称大王, 就说明大王存在的必要性了。

在这里有一个结论, 就是我话虽然说的这么难听, 但是它们是正确的尝试

是明星给出的扶梯,还是我们全体刨出的大坑

既然流行方法论对大多数人来说是正确的尝试,那为什么我又要哗众取宠, 特立独行呢? 难道说扮演小丑真的让一个人获得心理满足吗? 原因有二:

其一, 根本性的, 上面这个结论, 其条件是当前现实环境下。

我们也许可以假设90后, 2000后, 也像我们这么笨, 当他们成为工程师的时候, 情况仍然得不到改善; 就好比相对论已经提出了这么多年, 量子物理的发展也有那么大的进展,连传说中“造黑洞”的对撞机都马上要启动了, 但是大多数人连牛顿说的那点东西都没有学好。 但万一事情不是这样呢?当90后走入社会, 挑起大梁时, 想想我们面对的是什么呢? 再观察一下我们周遭的世界, 我完全相信, 即使在老古董中, 也存在着有足够能力, 采取更好、更正确的做法的真正的高手。

拿我们最最熟悉的数据库应用举例: 假设一个问题实际上被关系模型描述是最佳的解决方案,并在这个方案中, 已经不存在需要其它手段辅助的空间了。 相同的这个问题上,你我采用面向对象, 很可能不是因为你我高杆, 恰恰是能力不足的表现: 因为你我不知道如何提炼出一个正确的关系模型, 同时, 那些菜鸟大牛们也不知道, 于是作为菜菜鸟,我们就愿意跟随菜鸟们的方法, 选取一个你我能够掌控的方式; 但这并不意味着没人能做到。

除此之外, 还有另外一个危机: 随着信息化的扩散,一些问题的解决方案被提炼成一套工具, 人的工作在绝大范围内被取代。从根本上来说,一些工程如果通过自动化来完成其绝大部分, 软件机器的内在运作, 根本无需搞什么与现实的对应,某些其实是帮助菜鸟(如果你愿意, 把这个词换成“高手”也未尝不可)的方法论, 也就变得微不足道了。

在这里, 让我们关注一下关系模型这个领域本身, 想象一下如果没有SQL, 甚至没有数据库, 让你我自己来处理, 能做好的概率有几成?实际上,这里有一个最好的例子, 我们只能趴在数据库上干SQL、对于任何不爽只能等着厂商升级,这一现实说明: 如果让我们自己处理关系模型本身这个领域的问题, 你我根本没有能力做出好的设计和实现。  那么在任何其它领域, 你我有正确抓住事物实质和理论依据,快速创造和正确实现一个用以描述业务的系统和语言, 以更好的贴合业务需求的能力吗?

当然, 不但你我不能, 世界上大多数人也不能。 这就是你我能够放轻松, 并且满足于现状的原因。可我们不要忘了, 有人能: 就是那些没有使用这些方法论, 而是使用了自己方式、发展了独特能力的“落后者”。 “牛”们告诉我们说,软件既人件, 放心, 我们不需要普通人没法读懂的程序。 也许我们暂时安全了: 的确,他们中间的一些将被彻底淘汰, 甚至无法与方法论跟随者向竞争; 但一些人将走到最后, 让所有号称“人掌握复杂度的能力有限, 于是我们应该如何如何”的家伙被机器送回老家种地如果我们家里还有地且还没被机器占领的话。当然, 那会儿方法论的始作俑者就像一切明星一样,肯定是买地买游艇了。

也许某人会说, 独特性的项目成千上万,大多数项目也没复杂到需要做像数据库这么复杂的系统这样的程度, 那样成本太高了。 不过, 在我的观察中, 很少有问题是独特的。 一个人、 一个组织存在的问题, 往往其它组织也存在; 而且随着IT技术越来越多的普及到社会的各个层面, 共同性最终会浮出水面, 导致就某个所谓的“领域独有问题”开发一套类似于数据库系统的东西变得有利可图。

其二,社会性的, 某些方法论的多米诺骨牌, 会造成什么样的效果呢?

即使是那些确实不需要建立复杂系统的问题, 本来可能存在更好的解决方式(比如分析、设计、实现等各个方面), 但这些方式很有可能被埋没了。 考虑我说的不同的抽象手段, 大多数人的第一反应是什么? 我想恐怕是: 其它抽象手段在哪里? 或者是: 哦,XXX啊, 早被证明不灵了; YYY,那也是给人用的; ZZZ, 太不成熟了吧; 至于那啥和那啥, 不符合某某大牛(就是他已经决心跟随的那个菜鸟明星)说的原则。

由于在初期因为各种各样的原因, 获取了更多的关注和资源投入, 流行的东西容易得到加强; 这逐渐在整个社会(甚至影响了根本跟技术无关的圈外人)形成一个正(不是说是好的,而是增强的)反馈, 最后导致坏的(或至少比较勉强的)的方法, 逐渐变成表面上好的,深层次的矛盾被掩盖了; 而针对某一问题更合适的方法却得不到发展。 这对于有志于实验和流行方法截然不同的道路的同志, 变得无计可施: 只要他需要跟别人交流与合作。 (但是有什么东西会被一直压制吗?)

说实话, 我现在开始体会毛主席的教导了: 笔杆子、 枪杆子夺取政权的两杆子。 以前我不知道为什么宣传部门会得到50%的重视,但是看看现在技术圈子中的明星和他们所引领的风潮, 再想象一切暴政之初其组织在人民群众中掀起的波澜, 一切都豁然开朗。比起政治,在开发者社区还有另外一个因素, 大型商业公司的角色是非常暧昧的: 大多数时候是推波助澜(因为新方法论只要不是破坏性的往往意味着进一步发掘市场潜力),一旦上道, 即使以它们的实力, 也无法再左右什么了。虽然大型商业公司并不见的会主观拒绝小众方法论, 但对他们来说, 在某一时期内更好的策略是让流行的那个更流行。

这造成的坏处有几方面: 由于隐藏在深处的问题, 造成从社会到组织再到个人、从分析到设计再到实现的各种浪费; 因为上面所说的这种众人拾柴的效应,所造成的社会资源的分配, 更适合的解决之道其研究和进展所需的空间将被压缩; 另外,随着问题的累积, 补丁的方法开始失效, 有一天爆发了, 多少开发人员会翻船呢?那会儿, 我们还有精力学习本来多少年前就有机会接触的其它手段吗? 是的,从历史来看,结构化 到面向对象, 是一个渐进和升级, 但我们能保证所有的变化, 都是以这种温和的方式吗?

至少有一点是可以判定的, 那就是:即使社会上大多数开发者和商业公司, 跟着一些流行明星瞎吵吵,以至于社会资源的绝大部分分配到对现有开发手段在方法论和产品上的改进(对商业公司保护投资和一般开发者有都好处的),也只能延缓,而不能阻止“破坏性技术”的出现(让一般开发者的岗位甚至商业公司的某一块现有业务消失的)。 注意我括号里的两个说明, 就可以体会做技术行当, 大多数人和组织的恐惧到底出自哪里; 或许, 投靠技术明星, 和火烧布鲁诺, 在根源上并没有什么区别。

当然, 对现有手段的改进本身是好的, 只是对流行方法论的追捧所造成的各种浪费, 至少对于我们个人而言, 并不能解决什么: 50岁饿肚子比30岁饿肚子, 唯一的区别就是那时候我们重新选择的机会要小得多。所以从整体来看, 流行方法论改进的尝试, 仍然值得鼓励, 但我们的热情应该比现在的追随者们谨慎的多: 当成一种临时性的措施, 也许是一种不错的态度。

我们的路在何方?

那我们怎么才能保证自己的安全呢? 说实话, 这个问题我不知道。 我能想出的道路, 也就这么几种: 改行, 世界上还有的是暂时不会被机器取代的活儿;成为应用或应用推广者, 这样每一个变化都只能让我受益; 成为方法论倡导者, 不过想和Fowler之流一争高下也不容易; 成为龟兔赛跑“落后者”, 也许最终的下场更惨。 这又回到了认清自己是干嘛地的这一问题, 也是我曾经提过的职业规划的重要性。 只是上述可能性,无论哪个角色哪种选择, 都不会包括“把技术明星和他们倡导的东西当回事”这一要素。

我倒不会特别抗拒被踢出局那一天的到来, 甚至我们应该欢迎它:正是一些科学怪老头儿的贡献, 让很多没啥独特之处的二把刀坐在这里写程序; 那么一些新的怪叔叔又把这些二把刀轰出门去了又如何呢?我无法掌握自己的命运,毕竟我是这些二把刀其中一个; 如果不那么圆滑而且真小人一点, 顺便做个“我倒霉你也别想好”的提醒,  看这篇文章的你9.9成的也是。 一个简单的判断标准是, 如果你是那0.1成,不凑巧看到本文, 你不会因为我说了什么难受或者生气 :)。

话说到这里, 点到为止, 也许我是杞人忧天、不知所云、愤青、幼稚、浮躁、无事生非也不一定。

更多的想法

事实上, 写到这里, 我已经开始犹豫这篇文章是不是应该发出去了。 我不祈求大多数人理解我说的是什么, 如果一个人心里已经有所选择, 而且扮演菜鸟和菜鸟的跟随者这个选择在未来可见的10年内,让他可以满足于相对于其它行业和本行业菜菜菜鸟的高收入甚至获得价值上的满足感, 让他自我否定基本是不可能的; 尤其如果他是一个见识广博的高手(当然这个高, 只是和我这个永远的初学者相比),已经投资了太多精力的话 。

要说的是, 我首先否认的就是自己, 考虑到这一点, 也许反感我的人就可以稍稍舒服一点。 更多的, 这篇文章可以看做对和我抱有相同疑虑的人的一种鼓励。 对于和我相似的人, 我不希望他们被流行趋势逐渐吸引, 那样我又少了一个伙伴, 如此而已。当然,我可能是错的, 如果我是错的, 我自己首先就是一个受益者; 其次, 如果我的素质决定了我也永远只能是一个菜鸟, 菜菜鸟, 或者菜菜菜鸟, 就像上面说的, 我也只能屈服; 10年之后,也许你会看到我也在鼓吹什么“真谛”也不一定。

不过无论我最终采取的做法是什么,我仍然认为,仅仅知道菜鸟的解决方法是不够的; 知道谁(包括我自己)是一个菜鸟, 并且知道为什么是一个菜鸟, 本身是有益的。无意争执, 听着顺耳的不顺耳的, 一笑泯之吧。

也许这样说更接近于过去和未来已经发生和将要发生的事情: 到80年代为止的计算机科学的成就, 让我们今天可以做到这里参与这个工作,因为这成果还不够好, 需要低水平的人力参与;80年代末到今天,在这些参与其中的人力中间, 出现了一些聪明人, 试图解决二把刀干活不利索的问题; 不久远的未来, 新的成就由于不再需要更多的人力, 最终彻底解决了这个问题。 这不是IT简史, 而是我们身在其中的开发史, 或者说, 我们自己就是活的历史。

最后, 又有多少人记住我们这特殊的一群呢?



鉴于我人微言轻, 提示一下, 在B4我之前, 请想想为啥还存在McConnell这样的作者不像其它“大牛”那样热衷于宣传某一方法论, 也了解一下Joel抽象泄漏的说法, Linus所谓的精神包袱, Knuth对一些流行事物的评价,Gabriel著名的“坏的成了好的”, 等等。这些东西和我的文章虽然不见得有直接关系, 但是如果对这些讨论有所思考, 也许会对理解我可笑的忧虑有所的帮助。

这些资料Baidu不到的,可以在wiki和英文Google上找到。 我相信,主动的获取, 应该比被动接受来的要好。

Update: 1楼真强, 在我关闭评论以后还能发帖, dudu查一下吧。我决心开放评论了, 敢说, 就要敢于挨骂。 不过我不会具体争论某一个方法论的好坏, 那没有意义: 就像我所说的, 作为一个菜鸟, 说不准我自己或多或少就在使用它; 但是如果我只能停留在使用“旨在帮助有限的人脑”的方法论的水平上, 我能不担心吗?
Tag标签: 领域,方法论,DDD

posted on 2008-06-27 05:17 怪怪 阅读(3849) 评论(53)  编辑 收藏

评论

#1楼    回复  引用  查看    

1楼应该是灌水机所为。

最近的回复中有很多这样的水帖,貌似博客园的评论机制被破解了。
2008-06-27 05:42 | Angel Lucifer      

#2楼    回复  引用  查看    

真不知道你想说什么,没有意义
2008-06-27 06:54 | wql。net      

#3楼    回复  引用  查看    

原来在忙活自己的文章呀,我的分页控件页升级了,提点意见呀。

-------------------

弱弱的问一下 DDD是什么?就像上会有人说 DAO,我只是听说,具体是做什么的不知道呀,也许是我太菜了吧,这么流行的词都不知道是什么意思。

-------------------

其实怪怪的知识面非常广,掌握了好多种编程语言,无论是“古老”的还是“前沿”的,都有所研究。

上次数据访问函数库的创建子类的问题,就是怪怪帮忙解决的。使用的方法我都没有听说过,厉害呀。

2008-06-27 06:58 | 金色海洋(jyk)      

#4楼    回复  引用    

data driven development?
2008-06-27 07:55 | 读后感 [未注册用户]

#5楼 [楼主]   回复  引用  查看    

@wql。net
可能你是我说的那种世外高人吧...

@金色海洋(jyk)
@读后感
Domain Driven Design,领域驱动设计。 相比之下,DataDD要实际的多。
2008-06-27 08:08 | 怪怪      

#6楼    回复  引用  查看    

还没有睡觉哇。
2008-06-27 08:13 | 金色海洋(jyk)      

#7楼 [楼主]   回复  引用  查看    

@金色海洋(jyk)
没有。 这篇是我近期对各种方法论流行到底是好与坏的一个总结, 最近不会再说这种废话了, 所以看看有啥没说清楚的, 多改几遍。

另外, 对路过的说一句抱歉, 我实在是没时间, 写不出更短更清晰的文章了。
2008-06-27 08:16 | 怪怪      

#8楼    回复  引用  查看    

我的分页控件(新的)看了吗?怎么没有上msn?
2008-06-27 08:23 | 金色海洋(jyk)      

#9楼    回复  引用  查看    

行云流水,读懂仁兄的文章确实得有仁兄的知识面才行。支持一下
2008-06-27 08:26 | 炭炭      

#10楼    回复  引用    

同感
现在很多开发人员对方法论不加选择的吸收,如宗教般崇拜...

#11楼 [楼主]   回复  引用  查看    

@金色海洋(jyk)
还没时间细看, 等过段时间我擦屁股的事情做完了, 你也试验的差不多了, 再跟你细细讨论。

@炭炭
呃..., 不敢, 撒泼罢了..

@张大磊(Ray Zhang)
本来我是等着挨砖的...
2008-06-27 08:44 | 怪怪      

#12楼    回复  引用  查看    

至今还没弄明白 领域驱动是啥样子的,我本人是做业务软件的,纷杂的业务让我很头痛,一直想在业务和技术之间找到一个平衡点,看了 EE那本领域驱动设计,以为找到了救星,看完后还是一头雾水,也许是没上升到那个层次,呵呵。

PS:现在方法论太多了,不知不觉对这些所谓的XX设计感到有点反感,一点没有来点实际技术,模式之类的实际,也许还是应了那句话:我们生在一个幸运的时代,也生在一个不幸运的时代。

想想那些曾经的大师,在DOS和Linux下,用汇编或C挥洒汗水的时候,他们是多么的纯真。

乱说了,不好意思,呵呵,LZ每一次的文章都有点震撼的感觉
2008-06-27 08:45 | 横刀天笑      

#13楼    回复  引用    

那菜鸟们怎么办,学习老子无为而治,还是深山修炼世外高人呐?
即使都有了那样的担忧还不是让菜鸟明白不行就等死啊。
2008-06-27 08:47 | jacky.W [未注册用户]

#14楼 [楼主]   回复  引用  查看    

@横刀天笑
我比较可鄙, 凡是让我感觉“我没上升到哪个层次”的理论, 我就准备以“大生意应该是一句话说清楚的”否定掉 :)

不过,如果仅仅是书太厚了, 看起来费劲, 还想从他那里找找思路的话(任何东西都会有亮点, 流行也许就是因为某一个), 可以先看看我上面提到的简版作为一个引导, 然后再有地放失的到原书中找你需要的。

如果从实用主义出发, 也不用太担心让多余的话给忽悠了。

@jacky.W
我重新编辑了最后那段我们怎么办, 关键还是认清角色,职业规划。 菜鸟在此文中,只是一种语文上的用词, 别太在意; 更何况, 技术上“菜鸟”, 不代表我们的人生不能成功。
2008-06-27 08:54 | 怪怪      

#15楼    回复  引用    

DDD并没有排除其它的编程泛型,比如关系泛型或者是规则引擎等。
某些共同的复杂的业务逻辑问题不一定能通过oo的方式解决,但可以提供
oo的方式调用也行啊,但现在这样的东西形成框架的比较少,是应该有一些
分析模式中说明的问题的解决框架了。
2008-06-27 08:58 | jacky.W [未注册用户]

#16楼 [楼主]   回复  引用  查看    

@jacky.W
:)

我并没有说DDD一定怎么样,只是拿它“说开去”。 而且我自认也没资格跟专家深入探讨DDD的方方面面, 只是着眼于对这些方法论的态度问题。 我一直比较反感和担心的是我所谓的宣传和舆论的暴力。 对有经验的人员这也许不是问题, 实际上越是新手越容易被毒害。

倒不是说我多么关心爱护, 只是不自觉的就要愤青一把~

当然, 文章都发了, 我也不必太过圆滑, 我不认为提供OO方式的调用一定是正确的想法, 也不认为框架是最终的解决之道。 我只把它们看作一种改善, 而且现在更让我警惕的是误用而不是如何用的问题。
2008-06-27 09:04 | 怪怪      

#17楼    回复  引用    

个人观点(大白话):
(1)你觉得好的就用,用了就总结一下经验。何必在意叫什么名字,何必在意别人怎么看。
(2)不要全盘接受,也不要全盘否定。好不好实践了才知道。
2008-06-27 09:09 | qmxle [未注册用户]

#18楼    回复  引用  查看    

怪怪兄, 我觉的这就是 人玩机器,还是机器玩人的问题。说别的没用。

实践某方法论的时候要先搞清楚自己的状况,没有万灵丹牌的方法论。

对于那些盲目崇拜者 ,老兄苦口婆心的劝戒 ,希望能有受用者,

社区需要像老兄这样的性情中人 ^_^
2008-06-27 09:10 | 戏水      

#19楼    回复  引用  查看    

http://www.codeplex.com/dddpds

http://www.infoq.com/interviews/domain-driven-design-eric-evans

http://www.infoq.com/interviews/Architecture-Eric-Evans-Interviews-Greg-Young

.NET 的基础环境很不好 而DDD是需要TDD ORM (至少要有个领域模型吧)
如果没有领域模型的话 是体会不到DDD的好处的 还不如就ADO.NET呢

UMLCHINA的 领域驱动模式。。。

POJOS IN ACTION中文版:用轻量级框架开发企业应用
2008-06-27 09:13 | hxm      

#20楼    回复  引用  查看    

看不懂
2008-06-27 09:18 | 装配脑袋      

#21楼    回复  引用  查看    

方法论这东西我一直认为并没有最好一说,如果仅为工作,就只能在某些广泛使用的方法论中找到合适自己的部分
2008-06-27 09:25 | 坏人      

#22楼    回复  引用  查看    

几个方法论甚至可以合用,只要不冲突,为什么不可以?
2008-06-27 09:25 | 坏人      

#23楼 [楼主]   回复  引用  查看    

@hxm
呵呵, javaeye你应该经常去, 对于体会到好处,上面有结论吗? 唯一一个结论是那个Robbin说,Java基础环境很不好, 还是用Ruby吧。 (令人抓狂),这想必你也看见了。Java VS .NET这个话题就不要再打开了, 要么是.NET不好, 要么是.NET开发人员太嫩, 最后谁在裸泳, 还不一定呢。

关于orm与DDD的问题, 上次你给我看的那篇文章, 我感觉EE对某些做法是很有微词的。 TDD也是一个很大的故事, 讨论的时候在掺和起来说, 达到一个参与者没法在网络上理清前因后果的状态, 实际上是不利的。 毕竟, 无论哪个大牛, 正交性还是要讲的。

关键还是@qmxle老兄说的, 一切从实际出发比较好。 另外, 我发这篇文章的初衷就是, 咱们不要老盯着这几位明星和他们的东西了。 有能力也试试自己找一些解决办法, 也许更适合手头的项目也不一定。

@戏水
我也不是为了劝诫, 更多的是一个自我总结。 其实我这篇文章到最后, 方法论已经不是关键了, 还是落实到角色、 规划这些问题上, 有了这些做指导, 很多问题自然就清楚了。
2008-06-27 09:30 | 怪怪      

#24楼 [楼主]   回复  引用  查看    

@坏人
有些东西是非常根本的,比如在DDD和其精简版之中, 已经把解决问题的方法划定在OO之中了, 一下就把可采取的手段缩小到极其有限的一个范围内,基于非OO的抽象手段的方法论就变成了和它只能相互替代的关系。

我没资格说EE这样的人是视野太小,也不是针对DDD,只能说提醒一下对任何划定一定范围的方法论, 我们首先不要以为除此之外没有别的路了, 其次是给有疑惑的兄弟一个我个人的看法做参考。

最后, 还是上面说的, 其实我这篇文章的主旨, 并不在方法论, 而只是由方法论引出这个讨论。

@装配脑袋
你不用看懂这个, 你的路不一样...。

如果你想知道我在干嘛, 其实我是在“欠招”.....
2008-06-27 09:36 | 怪怪      

#25楼    回复  引用    

我只想写任何文章的时候,在开始应该注明到底是什么东西,比如DDD,前面为什么不解释一下呢?我这种菜鸟看得莫名其妙.最近很多文章都有类似的问题啊
2008-06-27 09:51 | FCD [未注册用户]

#26楼    回复  引用  查看    

楼主的文章我总是看不懂......
2008-06-27 09:52 | 狼Robot      

#27楼    回复  引用    

先说明要解决什么问题?
然后怎样做?
看起来费劲
2008-06-27 10:03 | sfsaf [未注册用户]

#28楼    回复  引用  查看    

是的,怪怪,我也不是重点讨论DDD,其实我对DDD并不了解。。。
2008-06-27 10:07 | 坏人      

#29楼    回复  引用  查看    

我只是想表达其实方法论之间的依存关系,并不一定是绝对的对立,我们也无需把某种方法论贡为神论;
2008-06-27 10:08 | 坏人      

#30楼    回复  引用  查看    

并且,我们完全可以尝试去理解每种方法论的基本原则,把原则性的东西和实质性的东西区分开来,再做对比
2008-06-27 10:09 | 坏人      

#31楼    回复  引用  查看    

很抱歉,这边网络有限制,只能一段段发。。。
2008-06-27 10:09 | 坏人      

#32楼    回复  引用    

这些方法论不是对立的,不存在说用了这种就不能用哪一种。个人可以根据需要选择合适的并做适当的裁剪,然后应用之,做到这一点,足够了

PS:博客园似乎形成了一股风气,以鄙视一些知名理论及其布道者为荣...
2008-06-27 10:14 | o(∩_∩)o [未注册用户]

#33楼    回复  引用  查看    

什么方法论都有缺陷,就目前人类的程度,没人能搞定所有的问题。
谁都希望一统江湖,所以就会在现有方法论中去试图解决各方面的问题。
这也就导致了像TDD这样的东西。但是不要忽视这种行为,它让人看清了它的缺陷。
我喜欢别人提出一些新的东西,这些流行,也有其可取之处,并非都是宣传。


我觉得无所谓这样的争论。也无所谓定义孰好孰坏。
2008-06-27 10:21 | bmrxntfj      

#34楼 [楼主]   回复  引用  查看    

@o(∩_∩)o
那劳烦你解释一下我如何一边应用DDD,一边使用非OO范式的手段吧, 纯种FP也可,GP也可; 请问算法与数据分离的思想, 与合并的思想, 你如何剪裁应用之? 不要说这里用DDD、那里用XXX这种三岁小孩都能说出的方法, 而是说在同一个目标上同时得到两种好处。

既然我这个小人是当定了:)不客气的说, 你的说法并不能显得你高人一筹: 连EE自己都含含糊糊的地方, 你就掌握了? 如果说你做到了, 要么你是独孤求败或者东方不败, 要么就是你击倒的是一只蚂蚁而已。

另外,哪个明星不是让人涮的? 没争议才说明没价值,这就是我对EE们认可的方式。 纵然拿布道者开涮不是什么好事, B4一个群体则更加无耻。 再者, 我也没有B4谁, 只是降降温而已;一些理论不是我说它必须怎么样, 恰恰是追随者把它逼到那个位置上。

最后就是, 我一人做事一人当, 你不要扩大打击面, 不然不好听的话我也有一箩筐。 至少我愿意去了解DDD,你愿意去了解犄角旮旯里的各种其它理论吗? 谁是塞住耳朵, 高喊“不听不听”的小气鬼, 还不一定呢。
2008-06-27 10:28 | 怪怪      

#35楼 [楼主]   回复  引用  查看    

@sfsaf
@FCD
@狼Robot
我的错。

我要指出的问题:
1. 流行方法的宣传暴力。
2. 改进式的方法不足以避免我们职业生涯的终结。

解决:
1. 我解决不了, 只能试着胡说八道,混淆视听 :)
2. 进行自我认知和职业规划。

其它的都是为了1而大放厥词的多余的话, 不看也罢 :P

@bmrxntfj
你说到点子上了。 不过有负责升温的, 就得有负责降温的。

@坏人
没错, 关键是方法之下的实质, 总有可取之处。 比如DDD中的一些手段, 不是不能变幻形式, 应用在其它编程范式之内。 只可惜它们的追随者不这么想。
2008-06-27 10:33 | 怪怪      

#36楼    回复  引用  查看    

不论内容如何,楼主的思考精神就值得支持。博客园这一类有思想的文章比例真的很低。严重支持一下。

楼主的知识面看来是有点广大的,很希望楼主给出最后说的一些文章的链接,我想很多人没有看过,:)

技术方法论这东西,和其他任何东西一样,都是一个东西,呵呵。我想说的是,通常一样流行的东西能够流行,有很多原因。不见得流行的就是最好的,但大多时候流行的东西是有用的东西,没用的东西一定不会流行。

社会是个复杂的事物,我们就在现实的社会之中,我们深受社会的影响,但反过来也影响了社会。对广大人民群众来说,通常都会追随社会的大潮流,但每个人还是会有不同的反应,这就是老百姓过的日子呗。

貌似说了一堆与楼主无关的话,但从另一个角度想,技术也是这个社会的一部分,技术人员是老百姓的一部分,每个人都会对自己用的技术做思考的,或多或少而已。要想上升到更高层次,从历史来看必然会落到某些人的头上,或许就是你我中的一员,自己努力即可。

最后用一首歌表达一下心情,最近听到的

我知道我要的那种幸福
就在那片更高的天空
我要飞得更高飞得更高
狂风一样舞蹈挣脱怀抱
我要飞得更高飞得更高
翅膀卷起风暴心生呼啸
飞得更高
一直在飞一直在找
可我发现无法找到
若真想要是一次解放
要先剪碎这有过的往
我要的一种生命更灿烂
我要的一片天空更蔚蓝
2008-06-27 10:36 | andy.wu      

#37楼    回复  引用  查看    

@o(∩_∩)o

从本文字句来看,我倒没看出bs的smell
2008-06-27 10:39 | andy.wu      

#38楼    回复  引用    

引用robinn的一段话:关于贫血模型的讨论,上周末几个朋友吃饭,也谈到了这个问题。由于徐昊现在进了 ThoughtWorks工作,所以他透露了一点有意思的内幕。

ThoughtWorks现在做项目使用的框架也是Hibernate+Spring+Webwork,徐昊说在ThoughtWorks内部邮件列表里面这个问题也吵翻了天,大家都在问老马,你批评我们用Hibernate的实体类贫血,那么我们现在该怎么做,才能不贫血?老马到现在也没有给出解答,把这个问题放进了自己的TODOList。

所以别管老马怎么说,我们该贫血照贫血!他老人家信口开河了一把,现在自己都收不了这个场。出处:http://www.javaeye.com/topic/16728
ps: 感觉马丁同志也很大嘴啊
2008-06-27 11:17 | zhchch518 [未注册用户]

#39楼    回复  引用  查看    

句子太长了,修饰词太多了。看起来很费劲。意思倒是理解了。欣赏一下。
估计是你的大脑的逻辑思维能力已经高于我的好几个档次了。一句话我竟然要像看英文的复杂句一样分析一下才看得明白。
~ ~
2008-06-27 11:27 | 暗香浮动      

#40楼    回复  引用    

@怪怪

“DDD”本来就是传统OO 范型的探索和升华版,你说不用OO你用啥,我所说的裁剪并不是指嫁接,是指对书中介绍的一些设计基本元素进行取舍,有一些并不符合自己需要,不能生搬硬套
2008-06-27 11:30 | o(∩_∩)o [未注册用户]

#41楼    回复  引用    

好文章!

我竟然没有难受和生气,看得还挺爽,原来自己连二把刀都算不上

还没看完,不够怪怪你能不能用些更通俗点的语言,把一个本来就有点复杂的问题用你这种充满文学色彩的语言描述出来让读者更难理解了
2008-06-27 12:07 | hook [未注册用户]

#42楼    回复  引用  查看    

这篇文章解决了我的好些疑惑,都在说.NET基础环境不好,但.NET下不乏好应用,推广一下可以说MS平台下不乏好应用,而微软也往往不太吃大牛们的那一套

整天跟着大牛(或者说文中的菜鸟)走,满脑子那些个原则、模式、方法。面对问题,说这样做不OO,那样做Martin不赞成,对我们程序员是不是很致命?

我敢说怪怪将成为未来的大牛(现在至少也是小牛了),他与那些大牛的区别在于,Martin们告诉我们说,你要这么做;而怪怪则说,你别老听Martin的,你还可以尝试这样。相信这样的大牛更有意义!

总之,我已彻底皈依怪怪流,希望能成为那特殊的一群中的一员。
2008-06-27 12:13 | Anders Cui      

#43楼    回复  引用  查看    

@ Anders Cui
兄弟,长夜漫漫,不小心掉下来,顺便叫你起来尿尿。
2008-06-27 12:27 | bmrxntfj      

#44楼    回复  引用  查看    

--引用--------------------------------------------------
bmrxntfj: @ Anders Cui
兄弟,长夜漫漫,不小心掉下来,顺便叫你起来尿尿。
--------------------------------------------------------
我可是认真的哈
2008-06-27 13:10 | Anders Cui      

#45楼    回复  引用  查看    

没有觉得DDD有多热,以前看过这本书,也不是Fans
前面的Ubiquitous Language和模型驱动写的还不错,后面部分没有什么能让人继续看下去的东西了
2008-06-27 13:57 | 紫色阴影      

#46楼    回复  引用    

对真实世界的抽象我们做了几千年了,成果如何。对于那些复杂的系统我们连定性都有问题,不要说定量了。
怪怪是个好同志,没有怀疑精神是搞不成科学的。
2008-06-27 14:20 | 五陵 [未注册用户]

#47楼    回复  引用  查看    

用菜鳥和大牛做區分本身并不合理,如果我們所走的路客觀上來說是錯誤的,大牛也就是多錯了那么一點而已。

真正有用的是思考,我們得能正確判斷價值,時刻明白自己在做什么、必須付出什么樣的代價。
當我們努力推動.net技術的發展的同時,必須接受大量像我們一樣或者還不如我們的二把刀充斥各種工廠/作坊跟我們競爭,同時知道我們在更快更少代碼下完成工作的同時已經距CPU越來越遠。在我們潛心編寫Linq的同時也應該知道那些被鼓吹的天花亂墜的代碼離開C#編譯器一文不值。

另外也有一條路,就是不過分相信技術,專注與需求和設計滿足需求的過程,技術,只當作在無數條差不多的路中隨便選擇的一條,anyway
2008-06-27 15:50 | 昊子      

#48楼    回复  引用  查看    

每次看博主的文章都很累
又多又说得很隐晦,可能是我太菜了吧....
2008-06-27 17:53 | 小智      

#49楼    回复  引用  查看    

还想说说中国计算机科研
提出方法论其实已经达到了科研的范畴,老外提出的这些理论都是源于某些项目的实践,说明他们比较注重从实践到理论的总结,这也是国外自由的科研环境的结果,而在我国,看看绝大多数高校,什么硕士博士,硕导博导,都是为了论文而论文,没有论文不能答辩,没有三大索引论文就没有学位,就不能升职称,不能当博导,所以很多所谓成果都是脱离实践的,基本上一篇论文下来,实践的东西少之又少,要么是抄,要么是延续上届学生的一点点实践继续下去,也许在别的学科可以忽悠过去,但在软件工程就没那么容易忽悠了,因此可以看到,我国在软件工程领域基本上没有流派可言,也没有什么能拿的出手的方法论。
而我们这些软件开发的实践者又缺乏凝聚力和空余的实践,只是为了项目能收到钱而不断努力,这样结果就是我们只能用“拿来主义”,这样下去我们永远都只能跟着别人的屁股走,惟利是图的理念让我们和老外的差距越来越远,可悲啊~~~~
2008-06-27 23:22 | spgoal      

#50楼 [楼主]   回复  引用  查看    

@andy.wu
:)

@zhchch518
Fowler是个能人, 不过比起真正的大师,境界上差点。

@暗香浮动
别客气, 写的差是我的问题。

@o(∩_∩)o
明白了 :)

@hook
呃, 把文章写好很难的,我努力吧...

@Anders Cui
怪怪流 -__- ,网上流传的“女友下面的味道怪怪的”, 是不是咱们的广告呀 :P

你有收获, 是因为你自己的思考, 无需归功于任何人, 而且我还差的远呢。

@紫色阴影
有可能是我对其上升趋势过于敏感了,但是我还是要再说一遍,其实此文重点不但不是DDD,也不是方法论...

@五陵
成果有啊, 秦始皇焚书坑儒用的那个列表, 就是第一个关系模型, 现在居委会老大妈仍然在用, 我的第一篇长文就说了这个现象, 用以反思OO是否像其倡导者所说的那样,更贴合普通人的思维。

@昊子
你说的可能是一个正确的态度 :)

@小智
主要还是我立意不明确, 唉..

@spgoal
:) 主要是经验重用时, 有一个谨慎态度会好一些, 介绍经验的人往往忽视了其经验最重要的一个环境: 他自己本人的一切。 这是其它人不可能具备的。 也许他使用某一手段解决问题是快, 暂且不提其它条件的变化, 换一个人就未必了。 这是我们这些经验接收者必须要慎重的。 某某号称他干好过什么事,如何干好的, 于是我们就竖起大拇指并决心按照这些来实践, 那我们就忽视了这些东西与严谨的科学多么的不同。

事实上, 中医作为一门经验科学, 是有万年不变的目标的, 所以这种经验可以积累上千年。 而软件则不同, 且如果一个经验真的变成可以重复的, 在我们的领域完全可以在或多或少的程度上自动化, 我们也就没有重复这个经验的机会了... 我们之所以还有机会听某些人忽悠这个事实本身, 就说明了他们的经验总结往往是次好的, 甚至第三流的,未必抓住问题实质的。

当然,事情也不会完全的这么严峻,而且既然我们也不是第一流的, 所以部分借鉴还是可能的, 对我们的工作来说是有一定价值的。 只是我们的态度如何, 包括个人和全体开发社区, 是值得商榷的。

味道, 有啊, “怪怪的” :P
2008-06-28 07:31 | 怪怪      

#51楼    回复  引用  查看    

晕,我把原来的评论给修改了,重新开机居然还是原来的缓存
2008-06-28 10:25 | spgoal      

#52楼    回复  引用    

不错啊

#53楼    回复  引用  查看    

@怪怪
魔兽里面有意识流、操作流、抽筋流、sky流、吹风流,我想不妨把你的这种风格称为“怪怪流”,楼上有位老兄说中国没有流派可言,也许是对的吧,至少我还没听说过
大家一起努力一下,说不定怪怪流将成为第一个有影响的流派:看似不羁,实则尊重事实、力求严谨,剥下种种“流行”的商业外衣 :)
2008-06-28 20:56 | Anders Cui      

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-06-27 09:48 编辑过


相关链接: