不得其门入
和大多数刚进大学的新生一样幻想能在大学这个新的起点上崭露头角成为一代牛人。为自己定制了很多计划策划了自己的大学生活尽管很多都夭折了。大一的上个学期整个就傻傻的老老实实的学C语言用一个画图的类库graphics.h 。写了一个很古老的开车游戏。后来那个游戏在换硬盘的时候丢失了。那时候真的不知道自己能做什么。有力却不知道往哪里使胡乱的看了很多书比如VB,VBscript,很多黑客的书(特迷这个),计算机网络,但是很多只是test,demo没有实战也没有交流又由于进了几个社团的职务忙着班干和学习的事很苦闷学习没有什么进展。值得庆幸的是把C语言课本上的知识都尽力掌握好。因为我一开始就想学好计算机编程。我觉得那时候最需要的就是有个人来告诉我如何成为一个很牛的程序员。他应该要建议我1 培养能力。学习知识的能力思考的能力等。他们属于所谓的 元知识 第7小节2 学好基础的课程。比如计算机网络数据结构等等。(他们基本涵盖了整个编程世界各种华丽的高层建筑的必须要了解的基础。)3 特别要学好算法。算法Algorithm是一系列解决问题的清晰指令。我自己觉得编程如果没有了算法和设计模式那就真的是码代码。我记得第一次在班里做自我介绍的时候说我是一个“电脑狂人”同样另外一个人也说过这样的话后来我们两个就真的是班里和年级里编程比较厉害的两个人。2另一个世界大一下学期我们进了学院的“基地”是学院弄的一个大教室自己搬电脑进去在里面不定期开设培训班平时就自己在里面学习。由于水电网费空调都不要钱我们现在还享受其中。在那年的清明前后我们分花了一周学习html,css第二周学习c# 语言和ASP.NET整个下来经过痛苦的开始的学习阶段我们终于能拿别人的CMS 科讯什么的去做一个动态的网站还会自己学数据库链接还封装成了类。现在发现好多人还把连数据库写在 .cs 一个 Button事件里觉得无语。不管我们当时做的有多么陋感谢基地提供了那么好的机会让我们终于打开了编程世界的大门。我们突然发现一切原来如此简单不就是增删查改吗几个sql语句就搞定了返回来数据绑定就好了。然后再学习一下几个内置对象Session cookie 什么的不懂的百度 谷歌就解决了。当时真的觉得很狂。感觉自己想要什么效果都可以搞定。那时我为我们学校做了一个学校的公用房查询系统特别是其中用到的excel导入数据库大大的解放了生产力让我切身的认识到计算机是多么的伟大。。迷茫1语言的选择那时候我们还了解到了PHP和java,那两个我都有接触当时的LAMP组合确实给我们非常大的诱惑。整套的开源极低的企业成本而且是可以去看源代码。还有java也是 J2EELinux 也是一套开源。如果说php的应用范围相对比较窄那么java则是更大的诱惑我另外一个同学就在那时候转去了java阵营。当是他考虑的应该是.NET的封装太厉害了不开源而且一个ASP.NET页面很多的乱码(指的是viewstate 其实可以自定义的).就我个人来说当时没选PHP是因为他的范围窄了仅限web php是脚本语言被迫“开源” 。在java和.NET的选择的时候只是因为学java没有服务器让我架设外面也多少PHP的校内托管的服务器也是不支持JSP的网站的。我希望自己的东西能够被应用就用了ASP.NETAccess的组合做东西。我是实用主义实践者。如果时光倒流我会这样考虑问题1选择技术要参考技术的公司。Delphi就是一个很好的例子下一个是java也许下一个是.NET而谷歌会成为下一代的MS但现在来说MS还是很强势而且会强势足够久。足够久就够了以后管他呢。而C#和MS确实也是蛮有创新的能力频繁的更新多多少少了证明了些。2关注并学习一下动态语言的“动态”,比如JavaScript,ruby 什么的。否则真的会井底之蛙。3不要花过多的时间在语言的选择上只有在深入的实践后才会真正知道什么好什么不好。迷茫2我们无所不能吗想要什么效果在线编辑上传下载?xmlAjax没问题。等等我去百度。我想很多人经历过这个阶段。我们经历这个阶段是有历史原因的1我们没有可以指导我们的老师我们的辅导员不是计算机专业的我们的计算机专业老师都是只管好自己一亩三分地自己的不做项目也不是TRUE程序员他们只是教课的老师。2我们的狂妄也是因为生活在自己的小圈子没有接触到国内的技术社区只是知道做东西。为了技术而技术追求更好的设计模式不管他是否真的必要追求更大的灵活和性能多数据库其实有时候根本没必要滥用存储过程。但是很多东西我都没有很多的思考只是知道copy这段代码这个类就可以解决了其实自己并未理解。很多只是知道what而不知道who更别说why。一句话对技术的理解太肤浅也太浮躁了。如果时光倒流我想我会学得更扎实设定一个技术的底线比如学前台只需要学到 htmlcss而不是用Dreamweaver设计。 C#学到IL就好了。学知识要先知道他是什么WHAT然后是HOW他为什么是这样最后是why。曾经看到过博客牛人的学东西往往喜欢看书、文档而新手则喜欢看视频和实例。停留在只知道几个函数的调用上吹捧几个技术词汇了解也仅限于封装好的调用常常会让人空虚很空虚。3寻找自我大二的上学期开始接手做一个社团的会长和一个部长还有一个公益组织的成员负责网站等技术开学招新无尽的开会。有那么一两个月很少写代码由于之前认为coding is just so so另外按照自己的计划大二我要训练自己学会做团队管理的东西那段时间我在完善了一个档案管理系统。是之前暑假的时候做的用到了我那时候接触到的最“前”最炫的技术那时候我用了很多存储过程Ajax动态反射工厂其实很多根本没必要。一两个月之后带社团也带的比较累了。在学校其他的一些组织也做的很累了。(从学管理转回技术)我也领悟到了技术是我的根本技术是我的核心竞争力。即时我要用技术做跳板或者其他我也要把技术学的更好得到更多的机会。开始渐渐放手让新生做一些事。终于空出了手做自己的事。这时候我开始帮学校的校办做一个网站由于之前的CMS网站是用别人的CMS真的是怕了那些BUG。于是着手自己写了一个经典3层的ASP.NETACCESS的系统不为别的就为自己用着方便想添加什么功能自己动手就算出错自己也知道在哪出的错。用ACCESS是为了数据库的方便如果以后在外面的服务器的话也不用买sql数据库省钱。完全没有采用Ajax不必要。界面倒是请了个美工设计的非常漂亮。这个时候我觉得自己比以前成熟了呵呵感觉实用主义还是不错的。只是我的技术相对落后了好多。我那时候还没理解MVC。没有用O/R不理解AOPIOC。我开始思考以后的路应该怎么走。一个学期就这样过去了。那时候我想我继续我的黑客 梦我觉得那样很酷不想一直做网站系统那么无聊乏味而且会很有钱但是有风险。我本来决定了花几个月的时间学习汇编做木马外挂破解。整个寒假很多时间我都花在从0开始学16位汇编用的是王爽的那本下载很多破解的视频。经常混看雪。我那时候想的是通过学习那些技术去赚钱而且够底层。而最后改变我的是开复自传告诉我的谷歌的有一句话是不作恶后来我听说华为也有一句话叫小胜靠智大胜靠德。我放弃了自己的决定。先做人再做事。开始转会web开发。回到我原定的计划。(从学hack转回web开发)大二的下学期来了我开始认真的混迹博客园我觉得这是成长非常快的一段时期接受了很多的言论和思想。迎来了新的技术迷茫期特别的迷恋技术的堆砌比如多框架的整合什么spring.net,nhibbernate.等等就特别崇拜。就像ASP -webform-mvc的轮回一样。我开始回到崇拜技术的时期了。特别是用了mvc框架发现原来一切变得如此简单居然可以从页面接收对象然后一个updatemode就搞定了更新linq让世界变得如此简单那段时间我简直疯了。一下子接收了那么多提高开发效率的东西真的太兴奋了你可以想象我直接做档案管理系统的时候几十个字段的接收赋值验证sql语句想想都让人发疯。开学的时候我们接了一个主要是cms的网站。这时候我用MVCLinq做的后台。之后要帮做一个东西我疯了似的用上了WPFAEF。现学现卖。现在想想都让人头大。当时还计划学dynamic data 。。后来耽误了到现在都没学了。专注就是强大深入才会了解慢慢了解到。要做什么就要做到极致技术服务于产品客户关注的产品而不管技术半吊子的产品没有一点价值。做cms就做到自己的极致于是在做完那个cms之后我开始用了一个月把自己想法进行优化。那时候我也开始觉得开始认真写博客。于是又了一个系列效率CMS的博客文章。优化之后真的也是确实大大的提升了效率维护也变得更简单云云。。在专注的深入过程我深深的感觉到自己对c#.NET的了解是如此的浅薄这些在博客中都有提及到。几乎是重学了linq和泛型等。到现在还不敢说自己真的会了。于是开始看一些比较深入的书比如c#高级编程。想看IL的书。4Web开发是世界的全部吗答案当然是NO那天我在闪存里说“[life]重新认识了什么是编程什么是程序员。”缘由就是那天我和我们学院的老师交流了一下。他见我们一直在做web开发。建议我们多研究一些算法。多做一些相对更通用更算法的学习。建议我们多学习一下相对底层 通用的东西 和更好东西。比如STL BOOST ACE(??听音是这个念)。如果我们要学习编程为什么不找最好的类库。而C是c#和java的根源。c就是这么一个宝库。不管是设计模式算法他的类库做的都是最好的。而我们的c#和java完全封装了这些算法。我们平时编程没办法了解到他们的细节。而这些我认为也是我们需要了解的。而我也从《代码之美》的序1看到未来的编程世界是整合的世界。我们也是走整合之路对我们新手做web开发这几乎是必然的但我们更应该保持创新和对算法的敏锐。他做了一个很好的比喻。一开始大家的资质都一样只是由于我们选的方向不同有的做算法等的研究有的做高度封装的应用