最近看了传智播客(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. POJ 3671 Dining Cows (DP,LIS, 暴力)

    题意:给定 n 个数,让你修改最少的数,使得这是一个不下降序列. 析:和3670一思路,就是一个LIS,也可以直接暴力,因为只有两个数,所以可以枚举在哪分界,左边是1,右边是2,更新答案. 代码如下: ...

  2. android中的Cursor类

    转载: 使用过 SQLite 数据库的童鞋对 Cursor 应该不陌生,如果你是搞.net 开发你大可以把Cursor理解成 Ado.net 中的数据集合相当于dataReader.今天特地将它单独拿 ...

  3. application/xml和text/xml的区别

    XML有两个MIME类型,application/xml和text/xml,它们之间的区别是: text/xml忽略xml文件头中的关于编码的设定(<?xml version="1.0 ...

  4. 【JDBC】百万数据插入

    使用JDBC连接数据库时,如果插入的数据量大,一条一条地插入数据会变得非常缓慢.此时,我们需要用到预处理. 查阅Java开发文档,我们可以看到: 接口 PreparedStatement 表示预编译的 ...

  5. PostgreSQL的 initdb 源代码分析之二十五

    继续分析: make_postgres(); 展开: 目的是创建postgres数据库. cmd是:/home/pgsql/project/bin/postgres" --single -F ...

  6. Hyper-V故障转移群集

    Hyper-V故障转移群集配置完成后,在故障转移群集管理器中新建虚机:角色-虚拟机-新建虚拟机 如果直接在Hyper-V管理器中新建虚机,则不是高可用,需要在故障转移群集管理器中将其添加进来使其成为高 ...

  7. leetcode第一刷_Count and Say

    水题. 描写叙述的还挺麻烦的,实际上就是纸老虎,用两个string,一个存上一轮的结果,一个用来更新出这一轮的结果,每次扫描上一轮,统计一个字符出现的次数,然后把这个次数和字符增加到这一轮的字符串中就 ...

  8. Android 监听屏幕锁屏,用户解锁

    在做一个程序的时候,需要时刻保持某一服务是启动的,因此想到了通过监听屏幕SCREEN_ON和SCREEN_OFF这两个action.奇怪的是,这两个action只能通过代码的形式注册,才能被监听到,使 ...

  9. 定义member【C++】cstddef中4个定义

    最近研究定义member,稍微总结一下,以后继续补充: size_t size_t corresponds to the integral data type returned by the lang ...

  10. python的一些总结5

    上面4都是水的 恩每篇都一点知识点 用来写给不耐烦的人看..哈哈这篇 争取不水. 上面4篇如果 掌握 基本上是 80%常用的代码了. 1.下面讲一下 比较常用的代码: macro(jinja 上的功能 ...