最近看了传智播客(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. iOS 逆向之ARM汇编

    最近对iOS逆向工程很感兴趣. 目前iOS逆向的书籍有: <Hacking and Securing IOS Applications>, <iOS Hacker's Handboo ...

  2. securecrt 连接vmware ubuntu

    折腾了好几天,我只想说shit,吃一堑长一智,和大家分享. SecureCRT连接Linux是使用Ubuntu下的SSH服务,ssh包括客户端和服务端即openssh-client,openssh-s ...

  3. Debug with jdb

    原文地址: http://www.javaworld.com/article/2077445/testing-debugging/debug-with-jdb.html Q: How do you u ...

  4. cdoj 1136 邱老师玩游戏 树形背包

    邱老师玩游戏 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1136 Desc ...

  5. Codeforces Round #280 (Div. 2) D. Vanya and Computer Game 二分

    D. Vanya and Computer Game Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contes ...

  6. Codeforces Gym 100342C Problem C. Painting Cottages 暴力

    Problem C. Painting CottagesTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/1 ...

  7. HDU 1077Catching Fish(简单计算几何)

    Catching Fish Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  8. Java多线程模式(二)

    Guarded Suspension Pattern      该模式描述的是当一个线程在执行某个操作时,但由于其他资源还没有准备好,需要等待,那么就等待资源准备好才开始自己的操作.我们直接看代码例子 ...

  9. sublime自定义snippet代码片段

    相信很多人喜欢sublime编辑工具有两个原因:第一sublime很轻巧方便:第二sublime提供很多自定义拓展功能,包括很简单且和很好用的代码片段功能snippet文件. 今天,在这里就介绍下su ...

  10. [Ramda] Compose and Curry

    Curry: The idea of Curry is to spreate the data from the function. Using Curry to define the functio ...