《专栏声音》谁动了我的奶酪? (有感dotNET入世后的Windows developers)

类别:.NET开发 点击:0 评论:0 推荐:

 

《专栏声音》谁动了我的奶酪?

 

             (有感dotNET入世后的Windows developers)


 

小气的神 2001-11-30

 

   

    不久前看到一本叫《谁动了我的奶酪》的书,很薄的一本书却很有意思也令人深思。它告诉我们“就像奶酪会变质一样,我们对生活的要求以及周围的生活环境都会不知不觉的变化。最重要的是我们必须承认这种变化,并对它保持警惕,只有这样我们才不会在变化突然袭击的时候感到茫然无措。只要你了解奶酪的本质以及它在我们生活中所扮演的角色,变化就应该被看成一件好事。而奶酪不是单纯的食物,它可能实际上隐喻我们内心真正的渴望、代表爱情、健康、财富或人生理想。”

 

    当然我不想作什么书评,对于这本被称为“速食时代的商业寓言”,看完之后,我会联想起我们身边的一些境域,是否可以加以对照和引用,毕竟“速食时代也需要抚慰焦虑的行动指南”。

 

    之前我们都自称自己是“Windows developers”,用着VBVCDELPHI、或是C++ Builder等等,靠着各种IDE的开发环境奔走在Windows的平台上,老实说最后我们会喜欢上这个平台,尽管它一直不是很稳定和让人满意。历经克林顿时代痛苦的反垄断打压之后Microsoft在布什元年推出了dotNET的概念(2001年可谓是Microsoft新世纪的第一个产品年,发布新产品和新计划之多;而2000年,是Sun保持着这个记录)。也就是在不久,8个月前一些变化开始明显了,Microsoft改变了Windows平台的技术底层。在犹豫和徘徊中,我们发现陌生的东西越来越多,除了WindowGUI还是我们熟悉的,其他的也许需要我们重新认识它了。

 

对于一个开发人员,无论VB还是C++的,你会发现:COM不见了,ADO不见了,指针没有了,内存管理没有了,VB Win32's API声明没有了,IUnknownIDL没有了。你会说还好VC在,还没有变太多,不过打一开始MS称它为“Managed C++”,目前VC.NET中保留的应用和功能已经显得有些鸡肋了。我们熟悉的“奶酪”是否已经在减少或是开始变质了。

 

    而当我们还在为dotNET进行各种讨论和推测,特别是纠缠于VBVB.NETC#DELPHIC#JavadotNETJ2EEASP.NETJSP等等等等的比较和辩驳时,David Chappell在另一个半球发表着他的观点:

 

"If you can't change, get out of the software business." “reset your defaults regularly,他认为每一个开发者必须承担对变化反应迟缓的苦果,而每个开发人员的重点应当转移到对目前环境的评估和变化上,同时最重要的是你将如何看待你自己,是将自己看作专业的开发人员或编程专家还是公司的一个雇员或Sales,如果是后者那么你可以仍然将你目光的焦点放在股票变化上,而如果你认为自己是前者,那么转变是必然的,甚至比以前从DOSWindows的转变还要深层、巨大、痛苦和孤独。

 

    "The C++/VB debate is over,",现在该是考虑如何成为一个“CLR developers”的时候了。他预言C++会成为一种“marginal”的语言,但对于非dotNET和非Framework的应用来说,它将变得更重要和核心。在他的概念中更强调“experience”。(也许我们太热衷与争辩语言的优劣了,也但愿我们还没有浪费太多的时间)

But here's what Chappell had to say about your experience as a developer: experience is only useful if the future is like the present (yep, another maxim). Naturally, he thinks your experience could prove a detriment if you rely on it too much. So if you're just getting started, you actually may have advantages over the old-timers who come to .NET with their old coding ways and expectations.

 

No matter how smart you are, don't worry: there are others smarter than you. That's why everybody needs an edge (maxim again). Specifically, Chappell encouraged developers to become an expert in specific matters, because .NET allows specialized expertise:

  • Understand key aspects of the .NET class libraries
  • Do ADO.NET like a wiz
  • Become a managed C++ expert ("unmanaged code" is anything before .NET)
  • Master .NET security and .NET controls
  • Dig into the CLR

Of course, Chappell did concede that Microsoft "has to ship this thing in a timely fashion, and it must work without bugs." In short, execution is everything (his final maxim). But you have to learn it because ".NET is the biggest change in our lifetimes."

 

      我看到这些文字已是3个多月前的事了,当时也许不会有太多的感受,不过这一刻我似乎闻到了一种变质的味道(奶酪变质haha)。我不知道你是否做到Chappell在上面所说的或获得可能的“experience”,我想这之后甚至很长的一段时间里你还应该比上面做得更多和更好,具体的说下面这些方面(各条均是我个人观点):

  • 完全掌握WebServices的概念和原理并亲自实践过它
  • 完成C#VB.NET的起步,并试着精通它们。对ReflectionGarbageCollectionSerializationDelegates&EventsThreadingPlatformInvoke等做到了如指掌
  • 除了自己熟悉的编程语言外,多学习和掌握一种。例如PythonPerlScript语言
  • 熟悉和掌握ADO.NETASP.NETWinForm以及VS.NET中相关的技术。
  • 努力学习XMLXPathSchemaXSD相关的知识,无论是在dotNET或是Java平台,你有一套自己的XML的处理函数和XML编程经验
  • 理解SOAP规范,并且不再简单的局限在使用SOAP的相关程序包和工具,对SoapExtensionSOAP streams有所理解,学会用XML的方式应用SOAP
  • 了解和分辨MS RemotingMS WebServices的不同,并且掌握Remoting的知识和编程经验。
  • 熟悉Passport,了解dotNETWebServicesFramework的安全概念和原理
  • 针对目前三层结构,你需要有“新的改良型的”应用程序体系结构概念和模型。
  • dotNET的视角重新审视和评估你以前的应用或程序的数据结构、编程方式、开发方式和部署分发方式。
  • 学习Microsoft® .NET My ServicesUUDI的有关知识 (顺应未来市场和商业化的需要,也许My Services会使一种新的软件销售(或服务)方式成为现实)
  • 接触诸如XML Message Interfaces (XMI)等新的概念和技术,并且永远不要害怕任何新的技术和名词。
  • 最后依然是XML,无论如何永远不要放弃对它的研究和深入,并成为这方面资深的专家(至少你自己这么评价),直到你成为XML的高手(起码别人这么评价)

还可以提及另一个人,Don Box是让人钦佩的,这位COM权威欣然的选择了变化,在表达了他对COM一贯的喜爱之后他也坦言将不再在MSJ的专栏上发布有关COM的文章了(dotNET推出4个月后,当然这个时间从MSJ上推算而得,并未经Don Box本人证实或MSJ考证)。我想他一定是一个“奶酪美食家”和“The Matrix迷”,听听他的看法,这位COM大师,也还会是我们dotNET领域的好老师和权威。

First he described what we're leaving behind: Win32, C++, COM, DCOM, and the notorious MSVBVM60.DLL runtime. He seemed pretty glad to be rid of them all.

"The C++ compiler doesn't respect you," he said, because it takes away the beauty of your code and turns it into spaghetti code, leaving none of your software ideas behind. In fact, it's evil. As he amusingly put it, "the C++ compiler allows you to pass any drug test with your DLL." That isn't good enough; people want to glean a programmer's intention from the code s/he writes.

VB hasn't been free of problems either, of course. The VB runtime has been the bane of Microsoft's existence because everyone knows that somewhere in it lies Bill Gates' ancient code from the 1970s. Indeed, "Keep VB Running" might as well be Microsoft's mission statement.

What of the alternatives? JUMP ("Java Users Must Pay") "will suck," Box said. If JUMP ships, "you'll be able to write 'Hello World' on it." Likewise, Sun's answer to .NET, called Sun ONE, will suck. Face it, it's in neither party's interest to make Java.NET work.

As a facetious aside, Box claimed that "everything you need to know about .NET can be gleaned from watching The Matrix over and over again." After all, software developers create worlds that become other people's realities. (Take his comment as you wish; I only report the news.)

So how does .NET fit into your worldview? If you can give up a certain level of control for the sake of productivity, you'll love .NET, Box maintained. Once upon a time you had to relinquish kernel-mode programming, where you controlled physical memory and interrupts, in order to gain the benefits of native-mode programming, where you took advantage of virtual memory and threads. Now it's time for managed-mode thinking, where you handle the three new currencies of programming: types, objects, and values.

"There's a flood coming and it will wash away all those who don't make the transition," he concluded.

      看到变化需要眼光,而适应变化却需要身体力行的勇气和毅力。面对要“消失或变质的奶酪”,一般会有三个层次的反应:

第一个层次是 假装或不相信一切会变,对发生的变化毫无觉察或故意忽视;

第二个层次是 感受并遭遇到变化却不愿意面对,而宁愿呆在自己以前熟悉的环境中;

第三个层次是 愿意面对变化,但不能及时或无法有效的调整自己适应变化,从而在正确的方式下得到成长和收获。

那么我想每个人都会希望自己可以成为超越这三个层次之后的开发人员。抛开语言优劣;平台之见,也许几年之后再看,这些很自然的已经是成为一个“Windows developers”和优秀开发人员最基本的条件和素质。老手的程序员一般都不愿意将自己固定在一个平台上,新手的程序员一般都不会满足自己只会一种开发语言;不过如果要做一个“Windows developer”,可能首先要愿意变,让自己跟得上Microsoft的变化;然后还要能适应每次的变化,渐渐习惯每一次变化。Windows developers”,永远都是新手。(这可能是Windows系统Bug多、不稳定的主要原因haha

      大凡有关如何变化的话题最后都不会有什么固定的结论,我想这一次也一样。

 

      下面是原书突出的一些语句,不是什么美味的奶酪,但可以作为这个周末一份不错的甜品带给你,最后祝周末快乐。

  • 奶酪对你越重要,你就越想抓住它
  • 如果你不肯改变,你就会被淘汰
  • 如果你无所畏惧,你会怎么做呢?
  • 朝新的方向前进,你会发现新的奶酪
  • 在迷宫中搜寻比停留在没有奶酪的地方更安全
  • 陈旧的观念不会帮助你找到新的奶酪
  • 当你发现你会找到新的奶酪并且能够享用它时你就会改变你的路线
  • 尽早注意细小的变化,这将有助你适应季节来临的更大的变化
  • 变化总是会发生(他们总是不断地拿走你的奶酪)
  • 预见变化(随时做好奶酪被拿走地准备)
  • 追踪变化(经常闻一闻你的奶酪,你就会知道,它什么时候开始变质)
  • 尽快适应变化(越早放弃旧的奶酪、你就会越早发现新的奶酪)
  • 改变(随着奶酪的变化而变化)
  • 享受变化(尝试冒险,去享受新奶酪的美味!)
  • 做好迅速变化的准备不断地去享受变化(记住:他们仍会不断地拿走你的奶酪)
  • 谁动了我的奶酪?

 


特别说明:

此文非CSDN官方专栏文章,所以文中观点只是作者本人有感而发,不代表和反映其他人观点。

本文署名原创,CSDN首发,如非经过作者授权其他人请勿用于新闻或商业用途。

文中有关《谁动了我的奶酪?》一书书评参见经济参考报(11.26

有关英文选段取自www.devx.com,文章作者:Stefan Grünwedel

最后斜体中文取自《Who Moved My Cheese?》中译本(中信出版社)

The Matrix 是电影可惜不是大话西游而是我们也还算熟悉的21世纪杀人网络或叫骇客帝国

文章提及David ChappellDon Box可去http://www.chappellassoc.comhttp://www.develop.com找到相关介绍。

如有其它疏漏不再一一注明。

 

本文地址:http://com.8s8s.com/it/it46218.htm