软件技术发那些专业比如微软微信分享开发平台台……都学写什么?

微软软件实现技术之一20
上亿文档资料,等你来发现
微软软件实现技术之一20
声明:本系列授课笔记是综合各相关资料整理而成,仅;MicrosoftProductCycleMod;一、微软产品开发周期模型;微软产品开发周期通常分为五个阶段:;1、计划:主要是做市场分析,看市场有无此软件产品;2、设计:主要是软件要达到哪些功能,解决用户什么;3、实现:就是依据设计写代码,并同时让测试人员找;4、稳定:刚写的代码肯定存在诸多问题,稳定就是找
声明:本系列授课笔记是综合各相关资料整理而成,仅限于个人学习、研究或欣赏使用,引用转载请注明出处。如用于商业用途,必须经享有著作权人之许可。顺此对微软工程师的精彩授课深表感谢!)Microsoft Product Cycle Model Training一、微软产品开发周期模型微软产品开发周期通常分为五个阶段:1、计划:主要是做市场分析,看市场有无此软件产品的需求,以及竞争对手有哪些。2、设计:主要是软件要达到哪些功能,解决用户什么样的问题。细的方面包括选择什么语言来写代码,所支持的平台以及开发所用的模型。3、实现:就是依据设计写代码,并同时让测试人员找Bug。4、稳定:刚写的代码肯定存在诸多问题,稳定就是找出这些问题中的大部分,然后进行修正。5、发布。微软所有的开发团队在开发软件产品时都要遵循这一开发周期,但是每个团队又可能会略有差异,不同的团队在不同的阶段中所用的时间可能是不一样的。产品开发周期如下图1所示: 还有另外一种直线表示的视图如图2所示: 在微软上面的两副图是非常有名的,每个新员工来都要接受此开发周期流程的培训。每个开发经理都会给下面的开发人员讲这一流程。在直线图中,M1、M2代表实现阶段中不同的里程碑。二、不同的小组及其职责微软公司软件产品部门内设置了三种主要职位,分别是程序经理、开发人员、测试人员。其中程序经理是微软中一个特殊的职位,并不一定是真正的经理,下面也不一定有下属。程序经理是对所做工程最了解的一个人,他的工作是项目组内部综合管理职能的延伸。在软件开发过程中,程序经理不亲自编写代码,但他对按时、保质地向客户提交正确的产品负有全部责任。一般说来,程序经理需要通过自己的努力工作赢得项目组成员的认可和尊重,赢得项目组内的组织权、协调权及与开发相关的决策权。一些人认为只要拥有了出色的程序员,就可以开发出优秀的软件产品。这种看法是片面的。一方面,一个完整的商业软件产品涉及文档、代码、用户界面、测试和发行等多个方面;另一方面,如果没有有效的组织、协调和管理,当项目组开发规模较大时,即使再出色的程序员聚集在一起,也很难形成合力,不能开发出真正满足商业市场需求的合格的大型软件。这也正是在1984年之后,程序经理逐渐登上软件开发管理的舞台,并不断发展壮大的原因。目前微软公司已拥有了5000多名程序经理,这一数字几乎占了微软公司员工总数的十分之一。程序经理主要职责的具体内容包括:1、程序经理应拥有宏观的、整个产品范围的视角,负责编写产品的功能说明书。2、程序经理应跟踪并推动项目组的每一项工作,依据产品功能说明书的要求,保证项目组的工作成果和产品目标完全吻合。3、跟踪和管理项目进度。4、组织项目会议,评估和管理已发现的Bug。5、对项目中需求进行调整变更的问题做出决策。6、与项目内外的相关人员保持交流和沟通。用一句话概括就是:程序经理是项目的领导者,是项目资源的调度者,是项目的协调人。
优秀的程序经理必须具备非常全面的技术知识,要有很强的软件架构设计能力。要熟悉某一行业,做某一项目就要对此项目的背景很熟,比如XBOX的程序经理就需要对整个游戏产业很熟,对PS2等竞争对手很熟。要了解竞争对手有哪些,竞争对手强项在哪里,不足之处又是什么。要有良好的人际关系和书面、口头、正式和非正式的交流沟通能力。要有客户需求意识,要时刻关注客户的需要。开发人员的主要职责是写出良好健壮的代码。但仅会写代码是不够的,开发人员也需要有设计能力,以及调试程序和修正错误的能力。一位优秀的开发人员首先要有非常扎实的计算机技术基础,特别是对于算法、数据结构的掌握是一位好的开发人员所必须拥有的。要有很强的写代码能力,很强的调试能力,能在很短的时间内查出程序的问题所在。要对新技术充满热情,对于新生事物要有强烈的求知欲。测试人员的主要职责是制定详细的测试策略和测试计划,书写翔实准确的测试报告,以及编写性能优异的测试工具。在设计阶段要起到监督的职能,实现阶段要看代码是否最理想最符合设计,同时还要检查程序的文档说明书。一位优秀的测试人员要有广泛的技术知识,对不同的平台、开发语言和开发技术都要有很深的了解。要善于用非常规的方式思考问题,不要局限于一个框框,要能跳出某种框框去想问题。比如微软在招聘测试人员时经常会问一个问题,就是如何去测试一支钢笔。首先肯定是应该能写字,写字的时候不漏水,笔盖能套紧等,但是你是否想过一支笔放在口袋里是否装得下,放在太阳底下会不会晒化,类似于这些我们应该想到更多的东西。曾经有一位很强的测试人员,在20分钟之内写出了50多条测试钢笔的方法。要不断分析和总结软件开发过程中可能出错的环节,应该尽可能多地参加软件测试项目,在实践中学习技能、积累经验。另外,任何一个产品完成以后,第一个使用的客户就是测试人员。因此测试人员必须把自己放在普通的、对计算机知识所知甚少的消费者角度来测试软件,而不是一位有多年计算机经验的人员。微软公司产品部门组织结构如图3所示。 微软公司的产品部门通常负责某一类或某种产品的研发工作,产品部门内部除了总经理外,一般下辖三个职能部门:程序经理部门、开发部门和测试部门。当产品部门根据具体产品的开发需求建立实际的项目组时,将会根据项目对不同职能人员的要求,从三个职能部门中调配合适的人选共同组成项目组来完成项目开发工作。要补充的是,如图3中所示在测试人员中分为两种,一种是Tester,另一种是SDE/T。Tester通常做一些比较枯燥的测试工作,而SDE/T通常不做具体的测试,专职于写测试工具。当然Tester的工作是非常重要的,自动测试工具的能力还是有一定的限度的,往往最难、藏的最深的Bug都是Tester找出来的。微软除上述的职位之外,还有很多辅助性的职位,如市场策划人员、销售人员、专职的产品计划人员、硬件的设计人员、专职的用户帮助文档书写人员、本地化人员(如汉化人员)、美工设计人员、售后服务人员、公关部门人员以及法律顾问等。三、产品生命周期的最佳实践[1] 计划阶段任何软件的开发工作都必须以市场为导向,即市场上所存在的明确或潜藏的商机是软件产品立项的先决条件。在先期所做的大量市场分析基础之上看准商机,由公司管理层主持制定宏观的商业计划。技术人员在此时可以为管理层提供技术层面的建议,供他们在决策时参考。[2] 设计阶段在设计阶段,项目组完成项目的所有规划工作,包括编写功能说明书、完成概要的设计、编写工作计划、制定费用预算和制定进度表等。在设计阶段的早期,项目组分析客户需求并将其书面化。随后,项目组开始设计整个解决方案,并编写产品的功能说明书,这一过程对于保证客户需求与产品特性之间的对应关系极为重要。项目组必须确保产品的特性能够准确、完整地体现客户需求,并能帮助客户实现业务目标。在功能说明书中应该详细阐释软件每一个特性的功能和执行方式,以及所有特性的组合关系和整体架构。同时还应该依据市场需要的紧迫程度和该特性在产品架构中的地位等因素确定产品特性的优先级,并由此获得资源预算、进度预期和风险预期等信息。功能说明书是所有项目组成员同步工作的基石,它让开发人员、测试人员和其他项目组成员明确了每个产品特性的功能、操作方式和接口等信息。当功能说明书完成之后,项目组就可以开始详细的项目设计了,包括开发设计、测试设计、安全设计等等。在所有设计不存在明显矛盾或冲突之后,它们将被汇集成一份项目总体设计书,项目组的各成员则依此估计各自的工作时间并编制工作进度表。[3] 实现阶段实现阶段的主要工作是完成产品中所有组件的开发工作(包括代码和文档),此外还包括审核设计文档、安装并配置开发环境、代码检入工作、每日产品生成以及管理Bug数据库等。
其中要说明的是,文档说明书在此阶段中是非常重要的,软件项目如果没有合格的文档,就会出现沟通上的困难和传承上的脱节。首先它是测试人员的重要参考资料;其次现在的公司人员流动量很大,如果某个核心程序员一旦离开项目组以后,留下的仅仅是一堆代码的话,下一个来接手的人要掌握此程序设计的思想、精要就非常的困难,这样的事情对项目的影响通常是致命的,微软WMI中的snmp provider就是这样一个典型的例子。在微软要使用一个统一的数据库管理源码、文档等资源,并保存和跟踪资源的不同版本。每天开发结束后,开发人员都要把自己计算机上最新的源码和文档更新到数据库中,这个过程被称为检入过程。此外,在微软公司的软件开发项目中最成功的经验之一就是每日产品生成,即每天都编译代码并生成完整的可执行版本,并对每一个生成的程序版本进行快速测试,以确保产品的每一次改动和每一次检入都不会破坏产品的整体结构,在最大程度上保证整个产品开发过程可管理、可预期,以及增强产品的稳定性。管理Bug数据库的工作主要包括为每个产品都建立一个集中的Bug数据库,产品中的Bug一般包括代码缺陷和不完美的产品特性,大多数的Bug记录都是由测试人员添加的。程序经理负责每天审查Bug数据库,并为开发人员分配Bug修改工作,开发人员修正Bug并将结果发回给测试人员。测试人员使用每日生成来检验Bug是否已经修正,若确定已更正,则修改Bug记录并关闭该项Bug。[4] 稳定阶段稳定阶段的主要任务是对产品进行测试,这一阶段测试的重点是在真实环境下的使用和操作测试,确认整个解决方案已经完成并可以发布。这一阶段的工作内容包括产品特性冻结、代码完成、用户界面冻结、Beta版本发布。产品特性冻结意味着除非有特殊原因,否则项目组不再为产品增加新的特性或修改已经确定的特性。代码完成意味着开发人员完成了所有的编码任务,测试人员开始做系统的集成测试。程序经理每天评审Bug、监控和分配Bug修改工作,而开发人员则需不断的修正Bug。用户界面冻结意味着用户界面的样式不再发生变更,界面上的提示信息不再发生变化。专职的用户帮助文档工程师开始编写联机帮助和用户手册。如果需要进行改动则必须经过程序经理的审核通过,并且对每一个变更都必须仔细跟踪和管理。在该阶段中,微软有一种工作叫Dogfood。大家知道在做狗食的时候,由于狗不会讲话,所以会有一个人去吃这个狗的食物,然后来判断此种食物的口味。微软借用了这种工作方式,在每一种产品完成之前,内部的员工必须先进行试用。虽然此时的软件还充满了Bug,并可能随时导致系统崩溃,但是员工们都还得继续Dogfood,这样就等于有几万名的测试人员在测试软件。Dogfood的目的不仅仅是为了找到Bug,还有一个作用就是帮助改进界面、操作的设计。[5] 发布阶段发布阶段是整个项目生命周期的冲刺阶段,主要的工作内容包括到达零Bug日期、发布候选版本、正式发布版本、签字认可等。零Bug并不意味着产品中没有Bug,它的意思是都对已发现的产品Bug进行了有效的管理和控制,改正了影响产品使用的Bug。对不影响产品使用,且因资源有限无法及时修改的Bug进行跟踪和记录,确保产品中所有已发现Bug都在项目组的控制范围之内,都可以在适当的时机得到修正。发布候选版本(RC0~RCx)意味着所有已知的优先级高的Bug都已被修正,不太重要的Bug可能被推迟到下一版本中再修正。开发人员应在24小时内修正新发现的重大Bug,在Bug修正后将发布一个新的候选版本,且新的候选版本必须通过完整的回归测试。正式发布产品版本的方式有两种,有基于盒装的产品发布(RTM)和基于Web的发布(RTW)。测试人员为最终正式发布版本签字,程序经理也需要签字确认。产品发布之后,通常都要开个庆祝会,看场电影,好好玩一玩! 包含各类专业文献、行业资料、应用写作文书、专业论文、中学教育、各类资格考试、高等教育、幼儿教育、小学教育、微软软件实现技术之一20等内容。
 微软软件开发技术二十年回顾_IT/计算机_专业资料。让我们再次追随Windows的踪迹,...它是第一个基于 NT 技术的纯 32 位的 Windows 操作系统,实现了真正意义上的...  微软软件开发技术二十年回顾
收藏 近 20 年来,随着技术和应用的...这是微软开发的第一个独立的 32 位操作系统, 并实现真正意义上的图形用户界面...  微软软件开发技术二十年回顾-API篇_IT/计算机_专业资料。微软软件开发技术二十年...在事件驱动机制之上的,系统各部分之间的沟通也都是通过 消息的相互传递而实现的...  微软银光技术的10大技术革新_计算机软件及应用_IT/计算机_专业资料。号称“Flash杀手...但是,美工所使用和实现的资源通常与开发者使用的工具是不相同的。通常情况下, ...  校园软件正版化项目是实现最优性价比的项目: 校园软件正版化项目包括所有属于学校...安全扩展等各种技术支持;例如:把微软最新推出的产品进行技术处理,加入到平台上。...  微软技术模版 - 软件详细设计报告微软技术模版 - 软件详细设计报告隐藏&& 错误!...是整个软件的功能实现,实现软件 的分析功能,其接口要求分别如表 1,表 2,表 ...  计算机专业文献翻译-微软的新技术.NET_计算机软件及应用_IT/计算机_专业资料。微软...3.非常可靠的服务器有.NET 企业服务器和微软 Windows 全额实现。 在.NET 帮助...  微软公司软件开发模式简介_IT/计算机_专业资料。微软...逐个分配一组特性,规定出特性的细节和技术上的相关...程序经理承担开发一组特性或函数,实现从说明经测试、...  微软技术模版 - 软件标准规范_IT/计算机_专业资料。微软技术模版 - 软件标准规范...用一个非结构化的程序设计语言去实现一个结构化的构造。 在某种可以改善而不是...4041人阅读
“学海泛舟”系列文章之微软ASP.NET技术“乱谈”2014新年了,顺手写的一点文字,主要谈谈我对当前微软ASP.NET技术的看法,比较随意,大伙儿随便看看吧。1 当前微软Web平台技术全貌从2002年发布.NET 1.0和Visual Studio.NET,到2013年.NET 4.5.1和Visual Studio 2013发布时,微软.NET平台己有11年的历史,其Web技术几经变迁,当前演化为以下的主要技术子领域:&一张图了解微软Web平台技术全貌&时至今日, ASP.NET底层的基础架构基本没太大变化,诸如使用HTTP处理管线处理HTTP请求,使用HTTP Module对原始HTTP请求进行“加工“,使用HTTP Handler生成发给浏览器的HTML代码等核心运作机理也没有变化,所有变化的都是上层技术。下面就简要地聊聊当前ASP.NET技术家族的各项成员:从1.0就有的Web Forms是当之无愧的“创业元老“,有关它的话题后面要重点说,此处先不提。ASP.NET MVC是后来的但迅速成长为当前最核心的微软Web开发技术,所有学习或使用微软Web技术开发的人,现在还不学习MVC,那实在是件很让人奇怪的事。有趣的是,现在Web Forms开始越来越多地引入MVC的特性,这在ASP.NET 4.5中看得非常明显:比如强类型的数据库绑定,用户友好的URL等等。打个可能不太恰当的比方:MVC可看成是“米国”,Web Forms可比成“天朝”,“两国”往来密切。Web Api是针对移动互联时代的需求而设计,相比那复杂无比的“WCF怪兽”,WebApi设计得相当轻巧,它主要负责与手机等智能移动设备交换信息,底层直接使用HTTP,API具有REST风格,数据交换格式使用Json和Xml,这种格式的数据具有良好的跨平台能力,能方便地被Android和iOS设备所解析。Web Api能方便地与Web Forms和MVC相互集成,使之成为微软平台开发移动互联应用服务端Service层的理想选择。基于MVC/Web API,开发现在比较流行的“单页面应用(SPA:Single Page Apps)”很方便。基于微软平台开发这种类型的应用,可使用MVC提供页面模板,Web Api提供各种数据服务,前端页面使用各种Web框架(比如Angular、knockout等以AJAX方式访问服务端的Web Api服务,动态地更新页面的相应区域,响应用户操作)。另一项技术Web Pages采用类似于PHP的开发方式,直接在页面使用Razor集成C#代码,与MVC相比,它属于“轻量级”技术,比较简单易用,当然,付出的代价是没有MVC所提供的诸多内置功能,对于功能简单的小网站,Web Pages很合适。&&&&&&& 这里谈到PHP,说些题外话:诸如PHP、JSP之类微软之外的其他Web开发技术,与ASP.NET其实有诸多重合之处,每种编程技术都有多种框架可选。你可以先学PHP/JSP,再学ASP.NET,或者反之。不过我个人感觉,如果先学ASP.NET再学其他技术,开始会略感不适,因为原来很多你己经习惯的“自动化”的东西,在许多其他技术中必须由程序员手动实现,是谓“由奢入简难”。但毕竟都是Web应用,还是有很多都是一样或类似的东西,转型并不困难。&SignalR是ASP.NET家族中一个全新的成员,它其实是一个Web开发框架,能开发“实时”的Web应用。所谓“实时”,其实就是在服务端与客户端之间建立“双向”信息通道,允许服务端主动向客户端发送信息,回调客户端代码。SignalR底层依据各种情况会自动选择诸如HTML5 WebSocket这样的技术实现客户端与服务端的双向数据通讯。这项技术挺有意思的,以后有机会再详细聊聊它。在现有的ASP.NET技术家族成员中,Web Forms是“元老”,MVC是“新贵”,两者都是微软Web技术中最引人注目的焦点,下面就专门地聊聊它们。2 MVC vs Web FormsWeb Forms是老家伙了,在MVC出现之前,它是微软Web技术领域内当之无愧的“一把手”(其实是因为没得选,它是唯一候选人),有大量的Web项目使用它开发,其中许多项目一直跑到今天,而且看起来还会继续跑下去,到底要跑多久,谁也不知道。因为在实践中,大家都有意无意地遵循这样一个原则:If it’s not broken, don’t fix it.这就是说,对于老的使用Web Forms开发的项目,如果它还运转正常,就不要去动它。但是,如果要开发新项目,就需要仔细考虑是否仍然采用这种拥有十多年历史的“老”技术了。John Ciliberti在其《ASP.NETMVC 4 Recipes》一书中对Web Forms的优缺点作了比较全面的总结,原文内容不少,我粗略地转述如下(同时加上了一些个人观点):Web Form的好处:开发起来确实方便!招人容易。当前玩得转ASP.NET MVC的人并不算多。使用上手非常容易的类似于VB的开发方式。仅需要开发者懂一点HTML和JavaScript,就可以开发出“像模像样”的网站,相关的技术细节被Web Forms框架“细心”并且“紧密”地封装了起来,而且很明显设计者并不希望使用者去“解开它”。拥有“一堆”功能强大易用的服务端控件,并且能在大多数浏览器中正确运行,浏览器兼容性(特别是对老的浏览器)不错。其用户控件很好用,易于开发,同时又能大幅度地减少重复代码。数据验证功能由相应控件进行封装,相当方便,开发者几乎不需要手写JavaScript验证代码。拥有一套自己的JavaScript框架,实现了AJAX功能,并且能与其他Web服务端控件无缝地整合。Web Forms缺点——让人只知其然,不知其所以然一、引诱程序员写出“把所有东西混杂在一起”的Web应用。Web Form采用Code-behind方式,虽然分离了页面模板代码和后台的C#代码,但实际上有很多程序员在后台C#代码中书写大量的业务逻辑代码,并且把这些代码与页面上的控件直接绑定(因为在高度智能化的Visual Studio中,这么干太容易了),这会给网站的长期维护带来麻烦。另外,如果不是在一开始就在架构上有所考虑,几乎没有办法对一个Web Forms项目进行单元测试。二、成也控件,败也控件。Web Forms开发中,控件是页面开发的核心。Web Forms服务端控件是重量级的控件,它拥有自己的一套运作机理,比如控件有自己的生存周期,在不同的周期触发不同的事件;Web Forms提供了不少数据验证控件,虽然能完成大多数常见的数据验证任务,但其可扩展性和性能比不上现在使用的诸多JavaScript库(比如jQuery Valiation,不依赖于服务端生成的ViewState,运行速度更快,使用方便灵活)。许多Web Forms服务端控件,虽然随着ASP.NET新版本的发布而不断更新,但仍然有不少使用“老”的页面生成技术,比如有些控件仍然使用table元素完成布局,当需要使用手机等访问这些网页时,其使用体验惨不忍睹。ASP.NET 4.0以前版本的Web Forms控件在生成HTML代码时,其ID值相当地“变幻莫测”,这会给JavaScript代码编写带来麻烦,当然,4.0以后版本对此有所改进,现在可以指定ID了。Web Forms的许多服务端控件必须要使用ViewState和Control State,一些特殊的控件,比如GridView,生成的ViewState数据量可能会很大(高达数M),如果不显式关闭,那这些数据会在Web Server和Client间来回传输,占用过多的网络带宽,降低了响应速度。Web Forms控件关联着一个DLL,并且可能在内部使用了多个JavaScript脚本文件,这会导致浏览器收到的最终页面中会出现一些诸如&script src=&/ScriptResource.axd?d=JzFjHNVTNSRvxnyOuI_HmzgpeGgm-le_2DeNc7ub5pZUcy9A8M9scHh3p580Af72CFevs-15tBuSlQYGR8Y6jhCLDnQaQ1K84GPCFXjTaKWxU1eVzt8qVZ8mueqHNb4FDLOkRw2&t=ffffffff8a8533f5&
type=&text/javascript&&
&/script&之类的“神奇代码”,而且只要你往页面上加了一个控件,它们就会不请自来。对于这些代码,你只能祈祷它工作正常,一旦出了问题,跟踪相当困难。&&&&&& 总而言之,Web Forms控件高度封装的特性使用开发者调整它所生成代码的手段很少很有限,这限制了开发者的自由和发挥余地,也给页面优化带来困难。三、 下面重点说说WebForm的另一个问题——过度封装&&&&&&& 最初WebForm的设计思想是模仿VB的开发方式,用拖放控件的方式设计Web页面。但Web应用与桌面应用毕竟有重大差异,强求统一,必然需要对Web应用的底层机理进行深度地封装,方才可能创造出与桌面应用开发一致的开发体验。Web Forms的封装甚至到了这种程度:你不需要了解HTTP协议,也能通过拖拖拽拽的方式构建Web应用。&&&&&&& 这样一来,基于WebForms开发简单是简单了,但远离了Web应用的本质,Web Forms框架完成了太多的事,你必须照着它规定的套路来,留给你自由发挥的余地不多了。同时,由于WebForms把HTTP协议给包得几乎”看不到了”,制造了一个“Web网站开发并不复杂,就是这样“的第一印象,这其实是一个”假像“,如果不能意识到它点,仅会用Web Forms的Web开发者,离开了Visaul& Studio,几乎无法在其他Web领域找到工作,因为你己“认假成真”被“洗脑“,必须”清空内存“,重新学习与了解Web应用的”真像“。&&&&&&& 相比WebForms,ASP.NET MVC要好得多了,它并未向使用者隐藏Web应用的本质,虽然学习曲线比较陡,涉及到技术和Web开发相关背景知识比较多,但能玩转它的人,其学习能力和平均开发水平往往都还不错。3 微软技术影响下的程序员&& & && 最后说说微软技术特点对程序员生涯和技术发展所带来的一些影响:&&&&&&& 微软技术的最大特点之一就是”易用“和”开发高效“,这是优点,但对于程序员而言,如果对此没有清晰的认识,则会受到不利的影响。&&&&&&& 微软技术为了易用,包了很多层,并且许多并不开源。当你尝试去探索其底层技术实现时,会困难重重。&&&&&&& 另一方面,由于程序员自身开发经验与能力的限制,过度的封装也阻止了程序员对深度探索技术内幕的热情。&&&&&&& 与Windows相比,Linux不易用;与C#相比,Java不易用,C++尤其不易用;与Web Forms相比,JSP和PHP都不易用,……,但这些不易用,却迫使程序员去学习很多东西,调动了其积极性,程序员们收获到了自身能力与素质的提高。&&&&&&& 人的天性是懒的,易用、开发高效且高度封装的许多微软技术,严重削弱了很多程序员的技术探索欲望。所以我看到,在微软技术领域,只有那些意志坚定并且对技术本身有着浓厚兴趣的人,才能坚持这条深入探索技术之路,并在这一技术探索过程中收益良多。而这样的人,在微软领域之外,也会是一把好手。&&&&&&& 当然,针对微软技术“催生懒汉“这种现象,板子不能打在微软技术身上,而应该打在人身上,这是人本身的问题,技术本身是中性的,是“无辜”的。&&&&&&& 需要指出的是,微软技术走向开放的趋势日益明显,当前重量级的一些技术,比如ASP.NET MVC、Entity Framework等,都是开放源代码的,有时间读读这些项目的源码,定有所得。&&&&&&& 最后谈一点,由于学习掌握某个技术会耗费程序员大量的时间、精力甚至金钱,没有人希望自己下大功夫掌握的技术没有用武之地,因此,门户之见相当突出。经常会看到许多程序员会为各种技术的所谓“优劣”争得面红耳赤,恼羞成怒者甚至开始对对方进行人身攻击,在网上,“黑“微软技术者尤其常见。&&&&&&& 其实,应该“把技术当成工具,但不要成为宗教信仰”。&&&&&&& 我赞同“实用主义”原则,别浪费时间去争论哪个技术好、哪个技术坏,而应该关注的是哪个技术最适合于解决哪类问题。在不同的场景选择合适的技术,别试图用一种技术去包打天下,“多学几手,脚踏两只船”。&&&&&&& 当然,想“脚踏两只船”,这要求程序员要有足够的学习能力和扎实的计算机专业基础知识和基本技能,而且“船很多”,人却只有两只脚,加上人的时间精力也是有限的,所以要针对众多的“引人”的技术勇敢地说“不”。有所不为才能有所为,追求“一专多能”,努力精通一项技术,对其他的技术做到需要时能快速上手并对付工作任务即可。学习能力再强,也不要指望能“快速”地成为另一领域内的”高手“,这既不可能也无必要。在实际开发中,也许你不精通某项需要用到的技术,但一定有人精通这个技术,大家相互合作,取长补短就好了,双赢!&
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2024176次
积分:24684
积分:24684
排名:第112名
原创:253篇
评论:6813条
(1)(1)(2)(1)(1)(2)(2)(4)(1)(3)(1)(1)(1)(1)(1)(1)(1)(2)(1)(2)(2)(2)(1)(8)(20)(3)(4)(1)(1)(1)(1)(7)(3)(1)(3)(8)(3)(10)(10)(6)(6)(6)(7)(6)(4)(2)(5)(3)(1)(7)(8)(1)(3)(2)(2)(4)(2)(2)(3)(6)(1)(3)(3)(2)(1)(1)(2)(3)(5)(2)(2)(2)(2)(1)(1)(1)(2)(4)(9)(2)(2)

我要回帖

更多关于 微信开发平台 的文章

 

随机推荐