zoukankan      html  css  js  c++  java
  • .NET世界的M型化原文作者奚江华

    自从.NET 3.0之后,在.NET的世界里,技术M型化正在产生



    自从.NET 3.0问世之后,以这个时间为分水岭,出现了一堆新世代技术,例如:
    1.WPF
    2.WCF
    3. WorkFlow
    4. Silverlight
    5. Visual Studio 2008
    6. LINQ
    7. Entity Framework
    8. MVC Framework
    9. Data Services
    10.Dynamic Data
    11.
    其他许多。。

    但一个基本问题是,它们在你的日常工作中是必要的吗?这个答案也许因人而异,但就.NET 1.x.NET 2.0仍占据着许多主流正式项目,或者仍为你公司正式软件的基础前提下,答案已很明显了,也就是大多数人不一定得最用新的技术就能完成日常项目,那对他们而言又何须在每天公司工作精疲力尽之后,再去追求那些外表华丽的新技术呢?

    对于追求新技术与坚守旧技术二者之间,今天我并不是要评析二者之间的优缺点,或是未来的潜在机会,而我今天要谈的是~".NET世界技术的M型化"是几乎已经确立了!而技术M型化的原因有很多,来自很多方面,例如:
    1.
    微软美国总部在一年多前就确立一个基本政策,就是在18~24个月一定要推出一个新的产品升级。也因为这个理由,所以各位在短短的不到两年,可以发现微软每个版本都推出升级版。
    2.
    因为升级的动作很快,技术或产品采用者往往还没来得及适应,就有下一代新的技术或产品Beta版的推出。
    3.
    因为过短的技术生命周期,使人丧失了无穷追求新技术的热忱,即便你能全天候研究新技术而不必工作,我想讲的是。。上面所列的新技术你可能仍无法学习及精通过半。在这种超量的技术或知识负荷下,人们很容易就直接放弃而不学,因为反正也学不完。
    4.
    再者新技术的推出,有时必须思考一下新技术的目标族群是谁?先就.NET程序语言部分,在.NET 3.0之后其实是~泛型+LINQEntity Framework。但诸立可以想象这种难度有多高?对绝大多数80%程序设计师而言,那些技术意境太高,也太过抽象,注定很难普及到市井小民。
    5.
    微软各个.NET技术开发团队的专家们,他们的程度与对软件思维的水平,注定要比普通程序设计师来得好,讲白一点就是专家的观点与常人是有分别的,他们觉得泛型+LINQEntity Framework很容易,但对市井小民而言太难了,讲ORMLINQ做什么?我用ADO.NET送出SQL指令就可以搞定了,用SqlDataSource就能够勾勾选选了。。为什么要学那些艰涩难懂的技术?实在无法理解。。

    基于以上种种原因,甚至是许多未列出的理由,这篇文章只是想表达一个观点,就是"技术M型化"的确立,愈往后面走,各位将来愈能发现那种明显的分水岭,M型代表着什么?以下是举例:
    1.
    原本的M型是讲中间阶层向下沉沦,被迫往M型的两端发展。形成富者与贫者的两种极端世界,当然您想富者与贫者的比例谁多?当然是富者居少数,贫者比比皆是。
    2.
    M型理论的现象投射在.NET技术研究上(其他技术也适用),所谓的中间阶层向下沉沦意谓着什么?也就是中间阶层的大多数技术人员,基本上已不好好念书或读技术文件,有系统地培养技术知识及认知,多半在Google上捡拾零碎的解答或知识,因此整体就会往技术富者与贫者两端靠去,形成极端的对比。
    3.
    在技术富者那肩,努力学习.NET新技术的人还是有一定的比例,也许20%~30%,对他们而言,所能运用的技术筹码是愈来愈多,也比较能领略新技术究竟是所为何来,能应用在什么层面;反之在技术贫者另一肩的人,这些人比例上占多数,多到我个人觉得至少占了50%强,此一族群抱定.NET 1.x2.0,在一般项目中仍然能够靠旧技术获得解决,所以他们主客观并没有积极想弄懂新技术。
    4.
    再着新技术的学习成本很高、抽象、较为艰深、且绝对必要性理由仍不够强,在诸如此类的种种,在一般人与积极型两大族群之间就划下一道很深的分水岭,且太难的技术可能让多数人在初次接触后就打退堂鼓,再也没有多大兴致去多玩、多接触、多理解。
    5.
    最后M型仍将持续扩大,因为微软RD团队及.NET技术的研发不会停止,进化仍会持续,而这些专家所开发的技术都朝向更为高级或意境层次比较高的方向在前进,因为若您的水平或思维不是和这些专家属同一国的,您很可能会觉得那些技术用不到,也离你愈来愈远,然后您对它的恐惧感愈深,抗拒心愈强。。但这仍阻止不了再下一代技术又更抽象、更难,至少在短期几年内不会改变。

    故在此不是要谈论学不学新技术的问题,也不是要评论哪类人才是比较优秀,而是.NET技术M型化的产生,在最基本认知上会产生明显的差异,一如富人觉得一个包包30万元很便宜,还抢到缺货,小市民却觉得3000元的包包都太贵,而ORMLINQ技术在专家群的反应还不错,但没接触过的程序设计师却不认同它的必要性,再来开始连研讨会谈的理念都不一定能Catch到了。。这还真的是技术M型的.NET二分法世界正在形成,M型的世界总隐藏着令人不安之对立感呀。

    后记:
    .NET 4.0
    还会有更多的新技术推出,是一次重大的升级。。。届时的技术差距还会进一步拉大呀!

     

     原帖  http://blog.sina.com.tw/dotnet/article.php?pbgid=4907&entryid=581207

    以下是评论

    我觉得说得很对

    对小喵个人而言,小喵是需求论的

    因此当一个技术出现的时候
    小喵最先想要了解的是,这个新技术的特色是什么,有什么好处,是否已经是成熟的技术,然后去判断这些好处对于小喵的益处有多少,最后才去决定是否要学习他。

    因此,有些技术小喵只会停留在初体验阶段,体验过后如果不适用于小喵的工作上,就不会花费太多心力再专研下去。

    毕竟不论什么技术,使用者目的就是要能够解决工作上的需求。

    所以技术不断演化,小喵乐观其成,但是不见得会最快的采用他。直到观察到这样的技术可以帮助目前的问题,那么用这样的技术的时刻也就到来了。
    ^_^

    版主回复:
    对。。所以你会评估哪些新技术可以对现有工作产生效益,然后你才会投入,甚至是学习。而这样子就是一个新技术的评估使用策略,特别是在新技术很多,学也学不完时,这样子的策略就更能将自身有限的时间与精力等宝贵资源投入在刀口,以产生最大的效益。

    基本上我很认同这样的实务想法及做为的。

    目前微软推出的技术,其它阵营早就已经有类似的东西了。像是MVC FrameworkRuby on Rails之前就已经是这样的概念了,而Entity Framework,在Java阵营也有Hibernate,我的想法是,微软推出这些技术其实更突显基本功的重要性。例如泛型,C++很早以前就有了,这东西对于问题的抽象思考很有帮助。Entity Framework也是,学到后来发现,我不会设计数据表、不懂怎么规划系统,那学这东西其实帮助不大,只是可以在数据存取上可以省一些功而已,不过杀鸡非得用到牛刀吗?其实都是看需求啦。

    版主回复:
    呵~技术历史,其实我也知道不少,像MVC根本就不是SUN,IBM,Oracle的东西。。。最早的MVC也只是Guideline,根本没有所谓的MVC Framework,后面的实作都是各家厂商加油添醋创造出来的东西罢了。。

    MVC
    这个Framework最早是在1992年由S. Burbeck这位作者所描述,其是用在SmallTalk-80 v2.0语言之上,它是给SmallTalk程序设计师的一个指导原则规范,以前我也写过MVC这篇文章:
    http://blog.sina.com.tw/dotnet/article.php?pbgid=4907&entryid=5977

    不过呀。。我提的仅限于微软自己和自己比,在先前的技术范畴不曾出现过,.NET程序设计师没学过或用过,再来有新的微软自己的Framework实作,要重新学习。。故对多数人而言,其自然可称得上新世代。

    而像Hibernate最早出现过没错,而微软做自己的ORM解决方案Entity Framework,我们要检视是否有所创新,或者效能及功能上有特殊之处。。。如果有的话,我想这对.NET程序设计师是好事。。。总比手工NHiberate去手工定义XML Mappings要来得强得多吧。。。再者LINQ to Entity的加持下。。使用EF意义也会不同。。。但不过度讨论。

    此外,像Entity Framework的出现不会令你可以省掉设计数据表、规划系统学习功夫,因为那是一个信息人必修的功夫,就好比一台汽车的出现,不会让你不需学习就能开车,更不可能让你瞬间知道如何开车。。这些都是自己必须条习的基本功。

    再来Entity Framework我在文章已提它的种种,它不一定适合每个人用,因为它是ADO.NET中最高级的,也是最不好懂的。。。如果你有需求,懂ORM的意境。。看看EF,也许你才能领略它究竟在干什么。。。

    所以是你所说~看需求,没有错。

  • 相关阅读:
    设计模式-抽象工厂模式
    设计模式-工厂方法模式
    设计模式-简单工厂模式
    设计模式-代理模式
    Retrofit原理学习
    Google Flutter的学习与使用
    Robolectric结合Android Studio的使用
    Android中app的启动步骤
    汽车系统实现--增加数据和删除数据
    vue--实现跑马灯效果
  • 原文地址:https://www.cnblogs.com/woanon/p/1386896.html
Copyright © 2011-2022 走看看