最近看了传智播客(http://net.itcast.cn/)的.net培训视频,感受颇深,忍不住要把感受写下来跟网友分享一下。

  我从接触.net到现在已经至少过去了三五个年头,用.net也已经做了若干个大大小小的项目。在看培训视频之前我还在努力地学习.net的各种新的框架和控件(如Telerik UI,AJAX Control Toolkit,各种ORM框架等),一边硬着头皮学一边也在心里抱怨着IT技术更新太快。曾经还会为熟练使用.net自带的一大堆服务器控件和Linq To SQL而颇有成就感,现在却要面对一波又一波技术的更新浪潮,随着岁数的增长,也渐渐地感觉学起来越来越费劲了。

  然而一看传智播客网站上的杨中科老师的.net培训视频,还没看完就有了一种醍醐灌顶的感觉,感叹这几年来真是被微软给惯坏了。为什么这么说呢,自打.net出了2.0以后我就开始关注和学习了,刚开始自然是找本书来看,那时候的书籍上记载的都是大篇幅阐述各种服务器控件的使用。其实在接触.net之前我都是用ASP来做网站项目的,当时使用ASP的感觉是写代码麻烦(几乎啥都要自己去实现),前端和后台的代码混杂起来致使阅读和维护不便,最大的缺点还是调试困难,不过现在看来最大的好处是做出来的网页干净(当时没觉得,虽然当时客户跟我反映说网页打开速度比好多知名的大网站还快,我也没去想那么多)。.net的出现带来了一大堆的封装好的服务器控件以及CodeBehind、ViewState、AJAX Extension控件等神奇的技术。当时微软号称ASP.net是ASP的升级版本,我也是举双手认同,从此开发和调试都方便了很多,因为开发网站可以像开发桌面应用程序那样拖控件,而调试也可以在后台代码里下断点来实现了,于是我从此开始放弃了ASP的进一步学习和使用。在实际的项目实践中,一开始由于项目需求并不是很复杂,开发过程进展总体来说比较顺利,开发调试效率都比以前用ASP提高了很多,这段时间持续了至少有两三年。但是随着项目规模的增大和对性能要求的提高,遇到的困难也越来越多,而且解决起来都感觉无从下手,因为我已经渐渐地形成了“拖控件改属性响应事件”的开发模式,遇到实现不了的需求就去网上搜控件的用法或找更好的替代控件,遇到渲染出来的客户端网页上ViewState内容太多也是束手无策,客户也渐渐发现了问题,不断跟我抱怨说还不如以前的项目(用ASP做的)做得功能强大且打开页面快。其实在看培训视频前我也已经开始质疑微软的.net,不过我想到的是出于.net本身的问题而不只是服务器控件的问题,因为用Web Form开发太久,当我想转到微软新推出的MVC开发模式时已经感觉很不习惯了,感觉太难学,因此我都已经开始动摇了对.net的信心,准备投靠目前更火热的PHP阵营。看了培训视频后,我总算明白了我的问题出在哪里了,原来是我被微软惯坏了,我已经不会用传统的Web开发模式来开发网站了,原来一直以来我都是在用开发WinForm的模式来开发网站,而且更要命的是我都没有深入研究和理解那些服务器控件和aspx页面渲染的原理。刚学会.net的时候还自以为很牛B,拖几个控件就能做出网站来,人家问我AJAX代码的问题,我直接说我不用写这些代码,直接用什么UpdatePanel控件就行了。现在想来太可笑了,正如杨老师所说的,这些服务器控件又难学又不好用,真正做项目的时候用这些控件的确很痛苦。

  技术不断在更新,然而其底层的技术却多年来未曾改变,不管微软推出多少服务器控件和多少框架,像我这样的开发者们,千万要保持清醒的头脑,万变不离其宗,不应该盲目地花很多时间和精力去学习人家封装好的东西,而应该尝试自己去实现,做Web开发的朋友不要忘记了Web“请求-处理-响应”的本质。别人做出来的东西终究是别人的,哪怕开源的也好,维护起来还是很困难很痛苦,真正的高手应该学会自己写框架写控件,并且有选择性地使用别人封装好的东西。

  联想到程序员自身的提高和发展问题,在学习技术的过程中,有好的老师提供正确的引导是多么的重要,少走几年弯路就意味着多赚几万块钱。总是听到不少老师在网上给学员培训时说诸如“没必要去学习原理,只要会用就行”之类的话,这就跟我当年刚学会拖控件就以为精通了.net一样可笑。都说IT行业技术发展迅速,其实真正迅速的还是在于应用层的东西,而这些东西我们真的没必要都去学。切记,封装是一把双刃剑,滥用者必然没有好下场。从今天起,做一个聪明的.net程序员。

做一个聪明的.net程序员的更多相关文章

  1. 如何成为一个优秀的java程序员

    Java程序员有许多应遵循的守则或最佳实践方式.本文概述了每个开发者最应该遵循的10条守则或戒律,如果不遵循它们,将会导致灾难性后果. 1. 为代码添加注释(Add comments to your ...

  2. 做一名合格的程序员(learning of a previous team)

    合格程序员的基本素质 作一个真正合格的程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该具 有的素质.  1 团队精神和协作能力 把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备 ...

  3. 一个优秀windows C++程序员的知识体系

    思考一个优秀windows C++ 程序员该有哪些知识,可最终发现什么知识都不能少, 看下图: 除了上面知识,程序员还要不断学习, 保持对新知识的热情. 转自http://www.cppblog.co ...

  4. 一个优秀windows C++程序员的知识体系[转]

    转自:一个优秀windows C++程序员的知识体系 思考一个优秀windows C++ 程序员该有哪些知识,可最终发现什么知识都不能少, 看下图: 除了上面知识,程序员还要不断学习, 保持对新知识的 ...

  5. 转:一个优秀windows C++程序员的知识体系

    转自:http://www.cppblog.com/weiym/archive/2012/06/10/178287.html.根据自身的经历,觉得作者总结的很好. 思考一个优秀windows C++ ...

  6. 一个十年java程序员的心得

    展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告 走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的1 ...

  7. 转 一个典型的 C++ 程序员成长经历:

    1.  完整的学一遍 C++ 所有语言特性,典型书籍 "The C++ Programming Language" Part1, Part2, "C++ Primer&q ...

  8. 一个普通底层.NET程序员关于职场瓶颈期的思考,辗转自我提升/跳槽/转行之间

    徒有工龄,没技术没学历没平台没家底,工作几年,无车无房无存款还前景不明. 时常有身边的亲友问怎么学开发怎么转互联网,说起IT行业都说工资高,动辄月薪上万动辄年薪几十万. 再看看自己,我可能是假的程序员 ...

  9. 一个10年Java程序员的年终总结,献给还在迷茫中的你

    我越来越担心我作为一个Java程序员的未来. 恍然间,发现自己在这个行业里已经摸爬滚打将近10年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作 ...

随机推荐

  1. JFinal搭建时,提示着不到contextpath

    出项类似html截断现象 原因:此处是由于html不识别contextPath上下文所造成.其根本原因是html中使用contextPath与configHandler中加载的不一致造成(basePa ...

  2. 创建类模式(一):工厂方法(Factory Method)

    定义 此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦.复用和方便后期维护拓展的目的. 定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心 ...

  3. 正整数的n次方求和

    引理: (Abel分部求和法) $$\sum_{k=1}^{n}a_{k}b_{k}=A_{n}b_{n}+\sum_{k=1}^{n-1}A_{k}(b_{k}-b_{k+1})$$其中$A_{k} ...

  4. Windows 7 bug: nonexistent Java Runtime Enviroment

    When I tried installing atunes and TED, I got the message “The registry refers to a nonexistent Java ...

  5. MEF 编程指南(六):导出和元数据

    声明导出解释了部件导出服务的基础知识和价值观(Values).有时候出于种种原因,导出关联信息是非常必要的.通常,用于解释关于功能公共契约的具体实现.允许导入满足约束要求的导出,或者导入所有可用的实现 ...

  6. [cocos2d-x3.0]Xcode 升级到5.1后,cocos2d-x3.0 编译64bit出错解决方案

    转自:http://blog.csdn.net/blucenong/article/details/21198089 把Architectures --->Other 改成 $(ARCHS_ST ...

  7. Telnet端口测试

    $IP ="220.181.111.142"$Port ="801" Function Port-Test ($IP,$Port){ $Timeout = 10 ...

  8. WinDbug之DUMP蓝屏分析

    Microsoft (R) Windows Debugger Version 6.2.8400.0 X86Copyright (c) Microsoft Corporation. All rights ...

  9. Ping批量函数

    function pingm ($file){ $ips = gc $file foreach ($ip in $ips) { $cmdline +="ping " + $ip + ...

  10. Codeforces Gym 100500F Problem F. Door Lock 二分

    Problem F. Door LockTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100500/at ...