<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Anders Liu的.NET空间</title><subtitle type="text">传播知识源于掌握知识，但又高于掌握知识。我要做一个掌握很多知识的传播知识的人。</subtitle><id>http://feed.cnblogs.com/blog/u/15560/rss</id><updated>2011-05-04T09:43:01Z</updated><author><name>Anders Liu</name><uri>http://www.cnblogs.com/AndersLiu/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/AndersLiu/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/15560/rss"/><entry><id>http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-16.html</id><title type="text">编程十年 (16)：后记</title><summary type="text">编程十年 (16)：后记本文地址：http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-16.html作者：Anders Liu也许您在看这个小文的时候，会觉得“这个家伙一直在跑题啊，和编程有毛关系啊”；而当您看到《宿命，程序员》的时候，可能会觉得终于回到正题了，要高潮了。但是，贱贱地我笑了，不，已经结束了。为了避免虎头蛇尾之嫌，并表明这是一次深思熟虑的犯贱，特撰后记一篇以示之。关于写作此文这些文字我写了将近四年。也就是说，从我刚走上程序员的岗位我就开始动笔了，一直到今天我站在了另一个十字路口。最初的起因是</summary><published>2011-05-04T09:40:00Z</published><updated>2011-05-04T09:40:00Z</updated><author><name>Anders Liu</name><uri>http://www.cnblogs.com/AndersLiu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-16.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-16.html"/><content type="html">&lt;div class="al-body"&gt;&lt;p&gt;&lt;strong&gt;编程十年 (16)：后记&lt;/strong&gt;&lt;/p&gt;&lt;div class="al-copy"&gt;&lt;p&gt;本文地址：&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-16.html"title="编程十年 (16)：后记"&gt;http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-16.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;作者：&lt;a href="http://andersliu.cnblogs.com" title="Anders Liu"&gt;Anders Liu&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;也许您在看这个小文的时候，会觉得“这个家伙一直在跑题啊，和编程有毛关系啊”；而当您看到《宿命，程序员》的时候，可能会觉得终于回到正题了，要高潮了。但是，贱贱地我笑了，不，已经结束了。&lt;/p&gt;&lt;p&gt;为了避免虎头蛇尾之嫌，并表明这是一次深思熟虑的犯贱，特撰后记一篇以示之。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;关于写作此文&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这些文字我写了将近四年。&lt;/p&gt;&lt;p&gt;也就是说，从我刚走上程序员的岗位我就开始动笔了，一直到今天我站在了另一个十字路口。&lt;/p&gt;&lt;p&gt;最初的起因是在2007年，开心就好同学发表了博文《三十一岁祭》，使我深有感触；适逢我刚刚完成到程序员的转型，于是我也打算写一篇文字，总结一下我从学习编程到从事其他行业，再到最终走上程序员之路的历程。&lt;/p&gt;&lt;p&gt;一开始的时候，我直接打开了博客园的后台管理页面，开始输入文字。我认为这样一篇随笔应该可以在一两个小时里搞定，也没有必要打草稿。但是慢慢发现，当初做讲师给学员吹牛逼时讲的我的经历，竟然还真有那么一点有意思（至少自我感觉良好）；而且东西越写越多，竟隐隐有写成系列的趋势。&lt;/p&gt;&lt;p&gt;于是我只好将浏览器里的文字复制出来，丢到Live Writer里慢慢写。但不久我就经历了一次惨痛的系统崩溃，格式化了系统盘，虽然D盘上的文档都有所保留，但鬼知道Live Writer里的东西存在哪。&lt;/p&gt;&lt;p&gt;不过丢了也好，当我重拾这些文字的时候，就不是当初那种有感而冲动了。我开始打草稿、写提纲。于是，您看到了一篇有组织有预谋的装逼文字。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;关于题目&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这个题目是在刚开始写作此文时就定下的，那个时候的我满打满算也就不到三年的工作经验，但这个时期又是拼命想积攒资历的时候，于是生拉硬拽把学习编程的过程也凑了进来。这就是本文最开头处欲盖弥彰的解释的来历，但四年来我一直保留着这段文字，因为即便到今天我也没攒够十年的编程经验……&lt;/p&gt;&lt;p&gt;这也就注定了本文必定跑题。但是这不重要。题目只是一个名字，并不代表内容。这话也是韩寒说的，借用而已。&lt;/p&gt;&lt;p&gt;说道跑题，我还要澄清一下，现在您看到的文字，已经是最接近题目的了。在我最初的设计里，本文有三条线索，编程为主线，而还有两条副线分别是对音乐的业余爱好、爱情及家庭；此外，还包括了对几次创业尝试失败经历的描写。而且我真的按照这样的思路写了很多东西，本文的规模一度膨胀到七八万字。后来发现一个是自己的写作能力根本应付不了如此复杂的结构，再一个是我实在懒，写那么多字会死人的。&lt;/p&gt;&lt;p&gt;于是我忍痛割爱，大刀阔斧地进行了修剪，只保留了与编程有关的内容。&lt;/p&gt;&lt;p&gt;另外一个就是，我并不想把本文写成回忆录。有句谚语，当你开始回忆的时候，你已经老了。我不想变老。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;关于结尾&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;人们常说时间是把杀猪刀。但我觉得时间对于记忆来说更是一把雕刻刀，剔除无关紧要的，留下刻骨铭心的。在本文前半部分的内容里，虽然有些记录是不准确的，但看上去很有意思。而到后来，随着时间距离现在越来越近，记忆也越来越清晰，反而无法分清重点。段落越来越长，但看点越来越少。尤其是从事职业程序员的经历，我在本文的最初版本里也写过不少，但有一次我在更新工作简历时悲催地发现，这TMD还是文章吗，整个就是一个人履历……&lt;/p&gt;&lt;p&gt;于是我打算结束这篇文章，把这段记忆留给时间去继续雕琢，等到下一个十年，如果我还有能力写作，再和大家继续聊。&lt;/p&gt;&lt;p&gt;（全篇完）&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/19/programming10years.html" title="老刘连载：编程十年"&gt;回到《老刘连载：编程十年》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-15.html" title="宿命，程序员"&gt;上一篇《宿命，程序员》&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/AndersLiu/aggbug/2036832.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-16.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-15.html</id><title type="text">编程十年 (15)：宿命，程序员</title><summary type="text">编程十年 (15)：宿命，程序员本文地址：http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-15.html作者：Anders Liu慢慢地，讲课变得轻车熟路，富余的时间也越来越多。于是我开始“不务正业”。一开始是讲故事，给大家讲Windows历史、COM和.NET发展史、编译器大战等等，基本上都是从网上搜罗来的，不过经过我人为YY过之后，再绘声绘色地表达出来，那效果，“真就不一样”（注：引用微软正版推广广告词）。讲完故事还有时间的话，就讲自己的故事，就是吹牛逼，就是这一系列文章到这一部分之前的那些内容。</summary><published>2011-05-04T08:35:00Z</published><updated>2011-05-04T08:35:00Z</updated><author><name>Anders Liu</name><uri>http://www.cnblogs.com/AndersLiu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-15.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-15.html"/><content type="html">&lt;div class="al-body"&gt;&lt;p&gt;&lt;strong&gt;编程十年 (15)：宿命，程序员&lt;/strong&gt;&lt;/p&gt;&lt;div class="al-copy"&gt;&lt;p&gt;本文地址：&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-15.html"title="编程十年 (15)：宿命，程序员"&gt;http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-15.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;作者：&lt;a href="http://andersliu.cnblogs.com" title="Anders Liu"&gt;Anders Liu&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;慢慢地，讲课变得轻车熟路，富余的时间也越来越多。于是我开始“不务正业”。一开始是讲故事，给大家讲Windows历史、COM和.NET发展史、编译器大战等等，基本上都是从网上搜罗来的，不过经过我人为YY过之后，再绘声绘色地表达出来，那效果，“真就不一样”（注：引用微软正版推广广告词）。讲完故事还有时间的话，就讲自己的故事，就是吹牛逼，就是这一系列文章到这一部分之前的那些内容。&lt;/p&gt;&lt;p&gt;但是，很快我就感觉，技术越讲越少，故事越说越枯燥，牛逼越吹越大，心越来越虚。一个从来没参与过商业软件项目的人，就靠着看过不少技术资料、写过一些只能称之为玩具的程序，凭什么去教这些将来要指着编程吃饭的人？不行，我需要实际地参与一些软件项目。而且，在讲课的过程中，我对于编程产生了很多自己的想法，亟待验证。&lt;/p&gt;&lt;p&gt;于是我向老板提出“我想做些项目”，可能是我没有解释清楚我要做的是“软件项目”，结果老板一句“讲课也是项目啊”就把我打发了。此刻，我“趣意萌生”（注：援引自CSDN一同事离职前夕的QQ签名）。我打算换一个以编程为主的工作了。&lt;/p&gt;&lt;p&gt;前面说了，这只是诱因而已。最让我受刺激的是现实，是钱。&lt;/p&gt;&lt;p&gt;先是学员捧我。因为我敢于在课堂上真刀真枪地带着学员一起写程序，敢于直面惨淡的BUG，所以学员都以为我是个水平高超的编程隐士，以为我为什么不当程序员而选择教编程，就像罗永浩为什么不去外企而选择教英语一样。甚至有学员直接问我，老刘，你在这教书，一个月得挣一万多块吧？其实自己有多少水儿自己知道。不过细想下来，感觉自己虽然水平有限，但应该还能值更多银子。&lt;/p&gt;&lt;p&gt;然后就是不少学员找到工作后回来找我问问题，问题解决之后少不了闲聊，闲聊之余发现这帮人还真是顺风顺水，不少人找到了很不错的岗位，还有一些甚至拿到了7、8K的高薪，也许这个数字说“高薪”有点牵强，但对于编程初学者来说，应该是值得别人羡慕的了。至少我很羡慕。我觉得，如果我靠写程序吃饭，应该也能到这个水平吧。&lt;/p&gt;&lt;p&gt;之前说过，我只是希望把编程当做爱好，不希望它成为养家糊口的工具。但攀比之心人皆有之，看着同龄的计算机专业人才，不管是培训中心的学员，还是同出自科班的大学同学，都靠编程挣着可观的工资，我还是心动了。做自己擅长的事，OK，就是这句话。&lt;/p&gt;&lt;p&gt;于是我再次选择了离职，并且开始四处寻找程序员的职位。和我最初设想的不一样，但和任何跨行业跳槽的情况一样，这个过程并不顺利。&lt;/p&gt;&lt;p&gt;我并不认为这样一次跳槽算是转行，因为我一直没有脱离编程这个领域；并且我认为通过当技术编辑和讲师的经历，我已经掌握了很多理论知识和细节上的编程技巧，这次选择当程序员，应该算是厚积而薄发，应当是顺利的甚至轰轰烈烈的。&lt;/p&gt;&lt;p&gt;但连续三次面试都被拒了，给我当头泼了一盆冷水，让我不得不重新审视自己，认识到自己在程序员这个行业还是个新手，一切都应该从零开始。然后在一位微软的朋友推荐下，我去了一家创业型的小型网络公司，亲眼见证了一个公司从10个人发展到近百人，并且成功被中国万网收购，后来又被纳入阿里巴巴旗下。&lt;/p&gt;&lt;p&gt;不过，在万网收购公司之后不久，我就离开了公司。主要原因还是因为钱，因为是以新手程序员的身份加入公司的，所以工资并不高，而且收购并没有使组织结构发生变化，看不到升职的希望；在那个金融危机的大环境下，等待公司上市也不是个好办法。更重要的是，这个时候老婆已经快生baby了，我得准备奶粉钱啦。&lt;/p&gt;&lt;p&gt;我选择的出路是外包行业。其实之前在做技术编辑的时候，我对外包行业还是很有成见的。我曾认为外包工作是一种缺乏创新、剥削严重的工作。但后来慢慢发现，其实对欧美的外包还是很自由的，并不像对日那样有着严格的限制，虽然不一定能接触到最核心的技术，但在自己所负责的那一部分里，还是能够最大限度地发挥自己的创造力的。而且，在经历过几家公司之后，我发现其实为企业打工，剥削情况都是差不多的；在社会主义国家里，你可以认为这是你享受公司给你的一个可以发挥自身价值的平台所需付出的代价。&lt;/p&gt;&lt;p&gt;当然了，前面说过，最主要的原因是钱。当时正好有个做猎头的朋友在撒大网，有个赴微软的机会，给的钱差不多赶上当时工资的两倍了，这对我简直是一个巨大的诱惑，本着有奶就是娘有钱就是爷的革命理念，我很快做出了决定。而且，赴微软也是一个极大的诱惑，那个时候的我还是一个任何人都伤不起的对微软充满憧憬的孩纸。&lt;/p&gt;&lt;p&gt;于是带着对软件巨人的无限敬仰和对赚大钱的无限憧憬，我头晕眼花地一头扎向外包的汪洋，并且一泡就是近三年，而且还在泡。&lt;/p&gt;&lt;p&gt;自从真正从事程序员这个职业以来，我慢慢变得成熟，不管是技术上还是年纪上还是生活上，也有了更多（但不一定更深）的思考。但我此时无法表达，期待下一个十年吧。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/19/programming10years.html" title="老刘连载：编程十年"&gt;回到《老刘连载：编程十年》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-14.html" title="毁人不倦2"&gt;上一篇《毁人不倦2》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-16.html" title="后记"&gt;下一篇《后记》&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/AndersLiu/aggbug/2036710.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-15.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-14.html</id><title type="text">编程十年 (14)：毁人不倦2</title><summary type="text">编程十年 (14)：毁人不倦2本文地址：http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-14.html作者：Anders Liu2005年底，我离开了CSDN，来到了E君推荐的公司，老板也是一名老牌MVP。这家公司位于西直门交通枢纽西北方，在一处商住两用楼里。我按照公司在网站上的地址，摸索着找到了办公地点，敲开大门后见到的是一位面容俊秀的女孩子，她的眼中明显透出了一种诧异。因为公司已经搬到12层了，而这里是老板的住所、原先的临时办公地点。没想到的是，这样文静的一个女孩竟然是这家公司的CTO，因为也负责</summary><published>2011-05-04T06:42:00Z</published><updated>2011-05-04T06:42:00Z</updated><author><name>Anders Liu</name><uri>http://www.cnblogs.com/AndersLiu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-14.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-14.html"/><content type="html">&lt;div class="al-body"&gt;&lt;p&gt;&lt;strong&gt;编程十年 (14)：毁人不倦2&lt;/strong&gt;&lt;/p&gt;&lt;div class="al-copy"&gt;&lt;p&gt;本文地址：&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-14.html"title="编程十年 (14)：毁人不倦2"&gt;http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-14.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;作者：&lt;a href="http://andersliu.cnblogs.com" title="Anders Liu"&gt;Anders Liu&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;2005年底，我离开了CSDN，来到了E君推荐的公司，老板也是一名老牌MVP。这家公司位于西直门交通枢纽西北方，在一处商住两用楼里。我按照公司在网站上的地址，摸索着找到了办公地点，敲开大门后见到的是一位面容俊秀的女孩子，她的眼中明显透出了一种诧异。因为公司已经搬到12层了，而这里是老板的住所、原先的临时办公地点。&lt;/p&gt;&lt;p&gt;没想到的是，这样文静的一个女孩竟然是这家公司的CTO，因为也负责讲课，我们都亲切地叫她H老师。后来我们聊天的时候她告诉我，当她见到我第一面的时候，就决定要录取我。因为我是唯一一个约好面试后，不用打电话确认地址就找到地方的人。&lt;/p&gt;&lt;p&gt;面试安排在12层的一个会议室里面，先后和H老师以及负责人事行政的阿姨各聊了一个来小时，然后就基本确定要录取我了。H老师最后给了我一套PPT，让我回去用一周左右的时间“备课”，准备复试。复试就是给他们讲一节课，看看效果如何。回到家中，我刚从邮箱里下载完PPT文档，就接到H老师的电话，她问我能否两天后就来进行复试，还问我是不是能在一周之内把所有这些PPT的课全部备好，还希望我能在一周内办好离职手续，一旦复试通过直接上岗开讲。&lt;/p&gt;&lt;p&gt;那个时候的我很有点初生牛犊不怕虎的感觉，竟然满口答应下来，其实我连PPT都还没有打开过呢。之后我赶紧浏览这些PPT，发现这是一门完整的Windows Forms讲义，而这恰好是我的强项，于是我更加胸有成竹了。&lt;/p&gt;&lt;p&gt;第二天我就向编辑部主任提交了离职申请，这份新的职业我志在必得。第一次面试的时候我并没有向CSDN提交离职申请，所谓骑驴找马，我得确定好下家后再行动。主任简单地表示了一下挽留和遗憾之后，答应了我的申请。本来按照合同，离职是应该有一个月的交接期的，不过主任很爽快地答应了我一周之内完成交接的要求。我当时很感激，不过后来慢慢明白了，对于我这种草根级员工，交接期越短公司越有利。&lt;/p&gt;&lt;p&gt;两天后我如约进行了复试。效果很不错，一是因为微软的PPT做得很棒，已经把时间因素考虑进去了；二是一年的工作经验让我成熟了许多，不像大学时代那么莽撞了，在备课的时候认真演练了好几遍。复试讲完后，H老师给我提了很多建议，从用气讲话的技巧，到课堂气氛的掌握，虽然言语不多，但对我今后的成长有着巨大的帮助。&lt;/p&gt;&lt;p&gt;复试之后直接签了合同，并约定第二天就去培训中心进行试讲，试讲成功后再下一周就要去培训中心担任讲师了。而在担任讲师之前的周末，公司还将安排我参加一个TTT（Training To Trainer）培训，学习如何做职业讲师。&lt;/p&gt;&lt;p&gt;其实培训中心和这家公司之间就是一种外包关系，培训中心有自己的资质和培训场地，而这家公司向其输送.NET讲师资源。这家公司同时还接受其他外包项目，以软件开发为主。所以在签订合同时我也提到，我热爱编程，希望在讲课之余也能参与一些软件项目。这些公司都满口答应了，不过后来都没兑现过，使我很有挫败感，也成为我再次跳槽的原因之一，不过这都是后话了。&lt;/p&gt;&lt;p&gt;不出所料，在培训中心的试讲成功过关。不过过程还是很惊险的。就在我刚讲完第一张PPT的时候，扮演学员的培训中心校长竟然低头打起了瞌睡，当时我心里一紧，完了，肯定是讲得太罗嗦了。幸好后面很快就有Demo部分，而我因为不满微软教材里中规中矩的示例程序，自己重新编了一个更有趣的程序，所以顺利地赶走了校长的瞌睡虫。后来我从H老师那里知道，校长的瞌睡只是一种试探，主要是看看讲师对课堂气氛的把握。而我因为对自己编写的Demo情有独钟，过于投入，完全忽视了他的存在，侥幸过关。如果硬着头皮往下讲，自己都觉得无聊，那估计就没戏了。培训中心不比学校，学生犯困老师还能批评他，在这里如果学生不喜欢老师，完全有权利退课——并且退钱。&lt;/p&gt;&lt;p&gt;试讲之后的周末参加了TTT培训，讲师是一位有着20多年讲龄的资深培训师。不过讲的内容都没有超出H老师给我的建议，只不过她是展开了讲的，更加详细一些，但感觉没有H老师来的简洁有力。&lt;/p&gt;&lt;p&gt;再接下来的周一，我就走进了讲堂，成为了一名职业讲师。&lt;/p&gt;&lt;p&gt;在准备面试讲师的同时，我也在考虑改变自己的形象，毕竟要为人师表了嘛。从上大学开始到工作的第一年，我一直的形象就是披肩长发加宽松的运动服牛仔裤，因为我觉得这样既颓废又符合编程高手的风格。我觉得首先需要改变的就是衣着，于是去商场买了一套正装，白衬衫黑西裤，外加老人头的毛坎肩和鳄鱼皮鞋。为了换洗方便，我买了两套一模一样的……&lt;/p&gt;&lt;p&gt;然后是发型，我实在是舍不得这一头飘逸的锈发，尤其每当冬天来临，干枯毛躁的发丝结合静电，产生的雄狮状爆炸发型。于是在女同事的提醒下，我尝试着用皮筋把头发梳起来，果然清爽了很多。第二次面试的时候，H老师甚至对我的做法大加赞赏，说这样看起来更专业。于是这一发型一直保留到现在，圈子里的朋友可能不知道我主混哪个领域，也可能不知道我写过什么东西，但一定能一眼认出我这一头大辫。&lt;/p&gt;&lt;p&gt;第一天走进教室，果然这造型引来不大不小一片惊讶。由于这一课在面试和试讲的时候讲过很多次了，再加上自己倾注心血编写的Demo，感觉相当良好。事实也表明我并没有高估自己，课后很多同学表示我讲得比前面几位老师好很多。在我讲WinForm之前，他们刚刚学习过SQL、C#和ASP.NET，这些课程的讲师都是照本宣科，既没有生动的Demo，也不会带领学生一起写代码。甚至有同学提出要求我重讲前面几门课。我当时没有往心里去，以为只是他们捧我，给我戴高帽呢。不过后来老板不断地找我谈，要增加我的课时，说是学生们已经反映到校方了。&lt;/p&gt;&lt;p&gt;就这样，我一开始只教WinForm，然后加上了C#，后来又加上了SQL、ASP.NET、Web Service，等于除了最后的实习，我担任了全部的讲师工作。这家培训中心开设了两个.NET班，而到最后我们只需要提供两个讲师，我负责讲前面的课程，然后另外一位讲师接手实习课，与此同时我开始另一个班的课程，两个班的进度交替进行。&lt;/p&gt;&lt;p&gt;一开始的时候，我基本上还能中规中矩地用微软官方的教程进行授课，但很快我就觉得这样做意义不是很大，一期培训只有三个月，扣出将近一半的实习阶段，我必须在不到两个月的时间里讲授.NET中几乎所有的知识，虽然我能讲完，但学员也接受不了。于是我开始为授课内容划分优先级。优先级最高的是常识性的知识，不学会都不好意思跟人家打招呼那种；其次是面试必备知识，因为花大价钱来这里参加培训的人都指望找个好工作尽快回本儿；再次就是我熟悉或者感兴趣的，这部分我可以讲得很坦然；最后就是我不熟悉或者不感兴趣的，罗列点资料自己学去吧。&lt;/p&gt;&lt;p&gt;这样一来，时间就大大空余了。多出来的时间干什么呢？前面我提到过“大量重复”对学习的帮助，与其填鸭式地给学生塞知识，不如通过大量的复习让他们把常识性的东西和面试要用的东西牢牢记住。那个时候我感到最有成就、最得瑟的就是在复习时，我可以在一块白板上以脑图（思维导图）的方式画出.NET中所有的知识点——不用准备、不用看教参。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/19/programming10years.html" title="老刘连载：编程十年"&gt;回到《老刘连载：编程十年》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/03/programming10years-13.html" title="毁人不倦1"&gt;上一篇《毁人不倦1》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-15.html" title="宿命，程序员"&gt;下一篇《宿命，程序员》&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/AndersLiu/aggbug/2036500.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-14.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/AndersLiu/archive/2011/05/03/programming10years-13.html</id><title type="text">编程十年 (13)：毁人不倦1</title><summary type="text">编程十年 (13)：毁人不倦1本文地址：http://www.cnblogs.com/AndersLiu/archive/2011/05/03/programming10years-13.html作者：Anders Liu我的母亲是一名中学语文教师，从大学毕业一直到退休，足足干了30多年。而且其中20多年都在担任班主任和年级主任，正好覆盖了我从出生到结婚生子的整个时期。和其他老师一样，每当我犯错时，我的母亲都会拿出多年的教育经验对我进行谆谆教导。我对这种迅猛的攻势经历了畏惧、反感、不以为然、欣然接受的全部心理阶段。也许是骨子里流淌着教师的血液，也许是常年耳濡目染，我就好给别人讲个东西，而且永远</summary><published>2011-05-03T13:51:00Z</published><updated>2011-05-03T13:51:00Z</updated><author><name>Anders Liu</name><uri>http://www.cnblogs.com/AndersLiu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/AndersLiu/archive/2011/05/03/programming10years-13.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/AndersLiu/archive/2011/05/03/programming10years-13.html"/><content type="html">&lt;div class="al-body"&gt;&lt;p&gt;&lt;strong&gt;编程十年 (13)：毁人不倦1&lt;/strong&gt;&lt;/p&gt;&lt;div class="al-copy"&gt;&lt;p&gt;本文地址：&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/03/programming10years-13.html"title="编程十年 (13)：毁人不倦1"&gt;http://www.cnblogs.com/AndersLiu/archive/2011/05/03/programming10years-13.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;作者：&lt;a href="http://andersliu.cnblogs.com" title="Anders Liu"&gt;Anders Liu&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;我的母亲是一名中学语文教师，从大学毕业一直到退休，足足干了30多年。而且其中20多年都在担任班主任和年级主任，正好覆盖了我从出生到结婚生子的整个时期。和其他老师一样，每当我犯错时，我的母亲都会拿出多年的教育经验对我进行谆谆教导。我对这种迅猛的攻势经历了畏惧、反感、不以为然、欣然接受的全部心理阶段。也许是骨子里流淌着教师的血液，也许是常年耳濡目染，我就好给别人讲个东西，而且永远拿别人当傻子，非要讲透彻不可。&lt;/p&gt;&lt;p&gt;高中后期担任物理课代表的时候就以给别人讲题为乐趣甚至为己任，负责得不得了。还收了三个女徒弟，弄得跟唐僧似的。高考的时候，本来打算只报一个志愿，后来还加了个首师大做第二志愿。&lt;/p&gt;&lt;p&gt;第一次真正接触讲师这个行业就是在大三和E君一起做CSTC的时候，他给我讲了他在微软技术相关的各种大会上做讲师的经历。还有一次，工大分校邀请他回去给同学介绍如何应对四级考试，他叫上我一起去的。在会上，我领略到了只凭五张PPT讲解一个小时英语考试并且现场掌声笑声不断的境界。&lt;/p&gt;&lt;p&gt;在这个时期，我还亲自体验了一把做讲师的感觉。2003年，E君做了一件在我看来惊天动地的事情。那会儿微软每年除了TechED之外，还会在大学中举办一个Campus TechED。这一年在E君的努力下，微软决定在北工大召开Campus TechED，而E君负责联系所有的会务工作和讲师。&lt;/p&gt;&lt;p&gt;近水楼台先得月，我很早就知道了这一消息并自告奋勇和E君一起做会议准备工作。自然而然，E君向我提出要我讲一场，题目可以自己定。当时C# 2.0刚刚发布alpha版，但语言规范已经确定并正式发布了，我刚好第一时间下载到了语言规范并翻译成中文，放到了自己的博客里。所以我决定讲一场C# 2.0的课程。C# 2.0虽然是一个划时代的版本，但新的语言特性并不是很多，所以很快我就做出了课程提纲。不出所料，很顺利地通过了审查。&lt;/p&gt;&lt;p&gt;之后的日子我将大部分精力都放在了PPT的准备上，并且每天晚上睡觉前，我都会在脑子里YY着讲课的场景。日子就在忙碌和期待中悄然而去，Campus TechED如期召开。&lt;/p&gt;&lt;p&gt;事实证明，仅靠YY而没有实际演习是不行的。事实还证明，任何第一次都是很紧张的。我的会场安排在信息楼北侧一层的阶梯教室中，这个教室简称“信北阶”，平时有很多专业课都安排在这个教室里。刚入学时听说要去“信北阶”上课，还以为学校里有条路叫“信北街”呢，心说这学校可真够大的。&lt;/p&gt;&lt;p&gt;虽然教室很熟悉，但视角是全新的。从前在下面或仰视或平视或俯视老师，心想有朝一日我要站在前面，可绝对不能像这个老头子似的，必须能和学生打成一片。今天我站在这里了，面对绝对不能用黑压压去形容的人头，或仰视或平视或俯视他们，我突然觉得大脑一片空白，连水分都不知道被什么玩意儿抽干了，嗓子一阵发紧，难以启齿。&lt;/p&gt;&lt;p&gt;我终于明白为什么要准备一个PPT了，也知道了为什么哪怕只有四五页，也必须准备一个PPT了。在面红耳赤口干舌燥地介绍完自己——其实也就说了一句话——之后，我赶紧将PPT翻过封面，进入目录。看着一行行熟悉的小标题，我心里终于有了点底，马上像念课文似的把各个标题读了一遍。人在紧张的时候其实并不是说不出话，而是缺少起承转合——这话不是我说的，是《围城》里学来的。我自己都觉得这几个标题念得很突兀，基本上就是“题目一，然后是题目二，然后是题目三，然后是……”&lt;/p&gt;&lt;p&gt;这种情形搞得好像不是我在讲课，而是被罚到前面读课文。要说也不是没被罚过读课文，但是心态是不同的，挨罚的时候心态很轻松，爱咋咋地，甚至有点自豪；但讲课——至少是目前——我还没有这种心态。&lt;/p&gt;&lt;p&gt;讲课前没有实际演练过也给我造成了很大麻烦，我一丁点准备讲义的经验都没有，所以在制作PPT时我将全部精力都放在了内容准备上，并没有规划各部分内容占用的时间，只是想着把C# 2.0的东西全部塞进PPT，千万不要有遗漏。结果，前面不到1/5的内容我已经耗掉了15分钟的时间——整个课程只安排了一个小时。&lt;/p&gt;&lt;p&gt;这还不是最坏的结果，因为我很有先见之明地借了一块手表摆在讲台上——我就知道我不可能像E君那样准确地操控时间。但手表也只能告诉我进度出了问题，并不能帮我均匀地分配时间。于是，本来已经渐渐被压制住的紧张卷土重来，而且大有愈演愈烈之势。本来紧张的时候就容易讲快，再加上我怕完不成进度，使劲地赶，结果在40分钟的时候，我就讲到倒数第二张PPT了……&lt;/p&gt;&lt;p&gt;在这期间，我的一个同学——被我硬拉去捧场的——听我声音沙哑实在是痛苦，特地出去买了瓶冰红茶给我递上讲台；另一个不认识的听课的同学，看我双腿发抖几乎站不住了，还以为我是带病坚持讲课呢，说，老师，您要是实在太难受就坐着讲吧，我们理解您。我被感动得一屁股就摁在了讲台后面的折叠椅上。&lt;/p&gt;&lt;p&gt;现在提前这么久就讲完了，我更是大囧至极。突然脑子里灵光乍现，想起E君在我刚开始准备内容的时候就教给我的一记绝技——如果不小心讲快了，就让大家提问，会的就讲，不会的就课后私下探讨。本来我根本就没考虑过时间的问题，也就没太在意这句话。现在它竟然自己跳出来，我兴奋得差点从椅子上蹦起来。得到了法宝我也就不紧张了，索性翻过最后一页PPT，然后冠冕堂皇地告诉大家，其实C# 2.0比起1.1，并没有太多新东西，我们就讲到这里，下面大家有什么问题吗？&lt;/p&gt;&lt;p&gt;结果我很傻眼，争相提问的场景并没有出现。也是，学校的导向就是对.NET不冷不热，所以很少有同学学习C#，既然不懂，自然也就不会有什么问题了。这下坏菜了，E君虽然告诉过我可以用提问回答来耗时间，可没告诉我如果没人提问怎么办啊。这时我只能发扬自我创新精神来解决了，我打算跟大家说，如果没问题我们就到这里了。因为我心目中的好老师都是要提前下课的。&lt;/p&gt;&lt;p&gt;结果，那个让我坐椅子的哥们儿又一次挽救了我。在我刚要张嘴，脑细胞发出的信号还没传到面部肌肉时，他突然举手，问，老师，您刚才讲了C# 2.0提供了泛型，这和C++里的模板有什么区别？我嘞个去，老子讲C#你提什么C++，这不是要亲命了么。还好之前学过一阵C++，模模糊糊还有点印象，我赶紧让大脑高速运转，搜索仅存的一点C++知识，然后装作胸有成竹的样子侃侃而谈了十几分钟。&lt;/p&gt;&lt;p&gt;课程结束后，我从教室里落荒而逃，从此不敢出宿舍见人，躲了一周有余，生怕被别人认出来。但是，虽然这个第一次是如此紧张难堪，我还是对讲师这个行业产生了浓厚的兴趣。我开始幻想着下一年度的Campus TechED还能做讲师，甚至幻想能在TechED上讲上一场半场的。不过后来因为学校并不重视同微软的关系，2004年的Campus TechED没有在工大举办；到了2005年，我已经是CSDN的技术编辑了，以媒体的身份参加了在北航举办的Campus TechED；但是两年后，我果然登上了TechED的讲台，在一个分会场上讲解Windows Mobile开发知识，这要感谢当时老板的大力举荐。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/19/programming10years.html" title="老刘连载：编程十年"&gt;回到《老刘连载：编程十年》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/02/programming10years-12.html" title="阅尽天下.NET文章无数"&gt;上一篇《阅尽天下.NET文章无数》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-14.html" title="毁人不倦2"&gt;下一篇《毁人不倦2》&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/AndersLiu/aggbug/2035903.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/03/programming10years-13.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/AndersLiu/archive/2011/05/02/programming10years-12.html</id><title type="text">编程十年 (12)：阅尽天下.NET文章无数</title><summary type="text">编程十年 (12)：阅尽天下.NET文章无数本文地址：http://www.cnblogs.com/AndersLiu/archive/2011/05/02/programming10years-12.html作者：Anders Liu博客的出现让我的虚荣心又一次得以膨胀，那一段时间里，我极其热衷于守在一篇刚发布的博客前等待回复，并且耐心地回答回复中提到的每一个问题。即便是一个简单的“顶”，我也要...</summary><published>2011-05-02T14:24:00Z</published><updated>2011-05-02T14:24:00Z</updated><author><name>Anders Liu</name><uri>http://www.cnblogs.com/AndersLiu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/AndersLiu/archive/2011/05/02/programming10years-12.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/AndersLiu/archive/2011/05/02/programming10years-12.html"/><content type="html">&lt;div class="al-body"&gt;&lt;p&gt;&lt;strong&gt;编程十年 (12)：阅尽天下.NET文章无数&lt;/strong&gt;&lt;/p&gt;&lt;div class="al-copy"&gt;&lt;p&gt;本文地址：&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/02/programming10years-12.html"title="编程十年 (12)：阅尽天下.NET文章无数"&gt;http://www.cnblogs.com/AndersLiu/archive/2011/05/02/programming10years-12.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;作者：&lt;a href="http://andersliu.cnblogs.com" title="Anders Liu"&gt;Anders Liu&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;博客的出现让我的虚荣心又一次得以膨胀，那一段时间里，我极其热衷于守在一篇刚发布的博客前等待回复，并且耐心地回答回复中提到的每一个问题。即便是一个简单的“顶”，我也要报以由衷的“谢谢”。&lt;/p&gt;&lt;p&gt;就在我不厌其烦地浏览着每一条回复时，有一条的内容让我一惊：你也是北工大的吗？有空聊一聊？&lt;/p&gt;&lt;p&gt;我的贵人出现了。嗯，怎么称呼他呢？我并不知道他是否喜欢自己的名字出现在这里，和绝大多数牛人一样，他的经历也是毁誉参半的，恐怕写出来还会引起口水战，所以姑且称之为E君吧。E是一个我很喜欢的字母，仅此而已。&lt;/p&gt;&lt;p&gt;最初看到这个回复的时候，我以为只是一个同校的粉丝而已，但仔细读下来又不像。“有空聊一聊”，这分明是上级对下级、长辈对晚辈的一种邀请。于是我怀着好奇心，给他写了一条私有留言，注上了我的邮箱和手机号。没想到不到两个钟头我的手机就响起来了，号码是正常的手机号，但是并不在联系人中。我毫不犹豫地接了这个电话，更没想到的是我们竟然在同一个宿舍楼里，于是约定了在我们宿舍见面。&lt;/p&gt;&lt;p&gt;详聊得知，E君大我一届，但并不是北工大本校的，而是在廊坊大学城的分校里上学。他这一年大四，在本校联系读研的事情，并且混到了一个宿舍床位，在这里暂住准备考研。他给我介绍了工大很多与计算机社团有关的东西，既有本校的也有分校的。我还从他这里知道微软有个MVP奖项，而他已经是连续两届还是三届的MVP得主了。不过主要的话题并不是这些，而是他和分校那边的几个哥们一起也建立了一个计算机方面的网上社区，名叫CSTC，是Computer Science &amp; Technology of China的缩写，博客论坛文档库一应俱全。他希望我能为CSTC写些东西，并且承担一些工作。&lt;/p&gt;&lt;p&gt;我毫不犹豫地答应了，因为他给我开出的条件是我对自己的文章拥有绝对的创作权，除了放在CSTC之外，还可以自由地发布在我的博客上或者投稿给杂志；此外，还让我担任CSTC论坛.NET版块的大版主，享有删帖、置顶、屏蔽用户等一切至高无上的特权。虚荣心再次作祟，从此很长一段时间里我的个人介绍里都会有“CSTC专栏作家、.NET版块大版主”的称号，即便是CSTC已经停掉许久之后。&lt;/p&gt;&lt;p&gt;是的，CSTC毕竟只是一帮子大学生自娱自乐的技术网站，搭建在E君一个舍友的电脑上，性能有限，而且极不稳定。在我加入之后没多久，E君就宣布停掉CSTC了。不过，这段经历让我对网站的搭建和运营有了一些基本的了解，同时也更深入地掌握了一些网络知识。以至于后来尝试创业时，我自告奋勇承担了组建网络的重任，并乐此不疲地出入于北京安贞桥边的IDC机房。&lt;/p&gt;&lt;p&gt;CSTC给我带来的另外一个收获就是，让我更深刻地体会到了编辑的工作内容，使我感觉到我离编辑的工作并不是很遥远，我可以驾驭它。而且，我也很喜欢做编辑工作，这能迫使我更认真地读大量技术文章，不仅要理解它们，还要找出其中的错误。这不仅提高了我的技术水平，还提高了语文方面的水平——很多技术很强的人写作并不一定在行，语法问题层出不穷，加之主要精力放在了技术上，文字错误也在所难免。&lt;/p&gt;&lt;p&gt;后来，在我退学前夕，我曾找E君聊过一次，我说你在CSDN认识那么多牛人，能不能到时候推荐我过去工作啊。他说没问题，但也只能给个机会，能不能去还是要凭自己。我说这当然。&lt;/p&gt;&lt;p&gt;其实在我上大学专门学习计算机没多久，我就认定自己要做程序员了。但没有经验的我一直奉行着这样一种理念，不要把自己的爱好当成工作，这会让你对其失去兴趣，工作只是养家糊口的手段而已。所以，在退学时我毫不犹豫地选择作为技术编辑，而把编程作为爱好。&lt;/p&gt;&lt;p&gt;于是，在E君的推荐下，我在办完退学手续的第二天就去CSDN面试了。当时我提交的简历只有不到一页A4纸，主要内容除了个人资料外就是在大学做过的作业，不过为了能争取到编辑的工作，我大肆渲染了在CSTC担任网络编辑和版主的经历。&lt;/p&gt;&lt;p&gt;面试官有孟迎霞、孟岩、刘如鸿、蒋涛。孟迎霞当时是编辑部主任，她对我退学的事情看得很开，还告诉我之前《程序员》有一位记者熊节（没错，就是《与熊共舞》和《软件工艺》的译者）就是退学生，不过一直做得很好。孟岩则对我的简历很感兴趣，问我为什么敢于留这么大片空白，其实我是无知者无畏，但我还是告诉他，我是一个实事求是的人，现在的我就是一片空白。刘如鸿则是《MSDN开发精选》的技术主编，今后我会主要在他手下工作，他主要和我聊了我在博客里写的一些东西，感觉不错，希望我今后能努力。蒋涛是杂志社的副社长、CSDN的老板，他问了我三个问题，一是你认为你最大的缺点是什么，我毫不犹豫地回答“懒”，然后我们相视大笑；二是问我对薪水如何要求，我说“越多越好”，结果我拿到的是和本科毕业生一个级别的工资；三是问我什么时候能上班，我答“随时”，于是第二天我就坐在工位上开始办公了。&lt;/p&gt;&lt;p&gt;我加入CSDN时，恰逢一期《CSDN开发高手》已经组稿完毕，于是我担任起校对的工作。这时我才知道，原来一期杂志做到后期，要校对至少4次。一次是电子稿，用PageMaker打开美编排好版的文件，在电脑屏幕上进行校对。然后用打印机打印出来纸样，再校对一次，这次如果出现问题，只能用笔圈出，然后再到电脑上改。这之后就可以把排好版的文件发给出片公司制作胶片了，拿到胶片还要再校对一次。这一步是最痛苦的，胶片是透明的，即便在下面垫上白纸，看上去也很费力。如果是黑白页，还比较轻松，每页只有一张胶片；而如果是彩页，则每页有四张胶片（CMYK每种颜色各一张）。等胶片也校对好之后，就可以送给印刷厂了，但印刷厂不会直接付印，会首先印出一套小样，对小样还是要校对一次，而且这是最后一次修改错误的机会了。&lt;/p&gt;&lt;p&gt;这样，这本杂志上的每篇文章，甚至包括封面、目录和封底，我都看了至少4遍……后来，除了校对我还要组稿、审稿，审稿还分一、二、三审，这样每篇文章差不多要看上10遍。真是过足了看文章的瘾啊。&lt;/p&gt;&lt;p&gt;在我参与的第一期《CSDN开发高手》出版之后，主任找我聊了一下，说我做得还可以，决定让我负责下一期的全部工作。我感到很诧异，就算我真的做得不错，你们也不应该让整个杂志的重任落在一个毛还没长全的大学肄业生手里吧？不过所谓初生牛犊不怕虎，我在迟疑了两秒钟之后接下了这个任务。&lt;/p&gt;&lt;p&gt;之后的一个月过得昏天黑地。先是一个个地给知名作家打电话、发邮件约稿，然后再一个个催稿，其间还要筛选大量良莠不齐的投稿。之后按照各个栏目的既定比例组稿、审稿，最后就是重复上个月的事情。&lt;/p&gt;&lt;p&gt;但在审稿后期，我拿到了金旭亮老师的卷首语，我心中的疑问有了答案，原来《CSDN开发高手》要停刊了……合着这本杂志早就准备放弃了，就当给我练手了。金老师的卷首语写得很含蓄，但我知道肯定是市场的原因，太专注的技术杂志虽然很受开发者欢迎，但肯定不好卖。&lt;/p&gt;&lt;p&gt;做完最后一期杂志，主任又找我谈了一次，说我做了两期杂志应该有足够的经验了，决定让我参与《MSDN开发精选》杂志。本来我就对微软技术情有独钟，这么好的机会当然不能错过。而且还得到了巨大的实惠，为了让我熟悉这本杂志，主任很爽快地给了我一套这本杂志从创刊号开始的每一期。以前想看买不起，现在能免费看了，真欢乐。&lt;/p&gt;&lt;p&gt;《MSDN开发精选》的文章大部分来自于微软的MSDN英文网站，但该网站当时还没有对最新文章提供RSS，所以我每天的任务就是到MSDN上找新发表的、在中文网站尚未出现的文章，把适合放在杂志上的选出来。另外一部分文章来自于MSDN Magazine杂志，那个时候这本杂志还没有提供多语言版本。公司为了方便选文，专门订了一套MSDN Magazine，这让我有机会接触到了优秀的外文技术期刊。&lt;/p&gt;&lt;p&gt;文章选择好以后，需要交给主编审核，然后交付专门的翻译公司翻译，我们拿到中译稿之后，重复做中文杂志的流程。当然，也有部分文章是国内专家自主编写的，这需要我们专门约稿。另外，有些其他来源的英文文章也会收录，但这些文章翻译公司并不受理，需要约国内的独立译者翻译。而我老婆当时就是这样的译者之一，当然，那时候我只是闻其名而未见其面，她正在读研究生，业余翻译。以前都是主编直接联系她约稿，我这个小弟来了之后，这种工作自然由我完成。没想到，后来这位我印象里的牛人也加盟CSDN了，我们成了同事；再后来，我们分别离职各谋高就；再后来，我们重逢在微软TechED，促成姻缘。&lt;/p&gt;&lt;p&gt;也许您会问了，哎老刘，你不是挺好翻译的么，怎么不自己翻译？这就是术业有专攻，让专业的人做专业的事儿。编辑的主业就是整理文字，而翻译应该由专业的译者完成。我也曾毛遂自荐，但被无情地拒绝，不过我很理解。这也是为什么后来我在翻译图书的时候对很多出版社的编辑有所不满，他们不但不负责翻译，而且连很多文字工作甚至包括排版都要求译者完成。&lt;/p&gt;&lt;p&gt;由于《MSDN开发精选》是双月刊，所以我有了充足的时间阅读MSDN网站和MSDN Magazine上的技术文章，自我感觉技术实力突飞猛进。同时我也开始利用业余时间编写一些自己感兴趣的小程序，感觉比以前又进了一大步。这个时候，我感觉自己积累得很多了，需要有一个“宣泄”的途径。我认为这样的途径有两个，一个是创业，做自己的东西；一个是做讲师，把自己知道的讲给别人。&lt;/p&gt;&lt;p&gt;话说这个“时光荏苒岁月如梭，转眼间”我在CSDN已经工作快一年，大学生的乳臭基本退干，签的一年期合同也快到期。更郁闷的是，我手头正在做的那期杂志也将是《MSDN开发精选》的最后一期。就在我为去留问题大伤脑筋时，正好E君到CSDN办事儿，找到我聊了几句。他说有个MVP自己办了个公司，有一项业务是为某培训中心提供讲师资源，问我是不是还对讲师抱有兴趣，可以为我推荐。我说当然有，正好合同快到期了，我答应你。&lt;/p&gt;&lt;p&gt;就这样，在做完了最后一期《MSDN开发精选》之后，我毅然离开了CSDN。后来同宿舍的哥们一起聚会，他们听到我退学一年里的经历时打趣道：你Y真狠，一年做黄了人家两本杂志。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/19/programming10years.html" title="老刘连载：编程十年"&gt;回到《老刘连载：编程十年》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/30/programming10years-11.html" title="与文字的不解之缘"&gt;上一篇《与文字的不解之缘》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/03/programming10years-13.html" title="毁人不倦1"&gt;下一篇《毁人不倦1》&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/AndersLiu/aggbug/2034644.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/02/programming10years-12.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/AndersLiu/archive/2011/04/30/programming10years-11.html</id><title type="text">编程十年 (11)：与文字的不解之缘</title><summary type="text">编程十年 (11)：与文字的不解之缘本文地址：http://www.cnblogs.com/AndersLiu/archive/2011/04/30/programming10years-11.html作者：Anders Liu在大二后期到大三的时候（大约2003年左右），宿舍的网络慢慢变得发达了。我们宿舍原来只有一台公用的台式机，而后来很快每个人就都拥有了自己的笔记本。学校的规定是每个宿舍只能有...</summary><published>2011-04-29T16:40:00Z</published><updated>2011-04-29T16:40:00Z</updated><author><name>Anders Liu</name><uri>http://www.cnblogs.com/AndersLiu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/AndersLiu/archive/2011/04/30/programming10years-11.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/AndersLiu/archive/2011/04/30/programming10years-11.html"/><content type="html">&lt;div class="al-body"&gt;&lt;p&gt;&lt;strong&gt;编程十年 (11)：与文字的不解之缘&lt;/strong&gt;&lt;/p&gt;&lt;div class="al-copy"&gt;&lt;p&gt;本文地址：&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/30/programming10years-11.html"title="编程十年 (11)：与文字的不解之缘"&gt;http://www.cnblogs.com/AndersLiu/archive/2011/04/30/programming10years-11.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;作者：&lt;a href="http://andersliu.cnblogs.com" title="Anders Liu"&gt;Anders Liu&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;在大二后期到大三的时候（大约2003年左右），宿舍的网络慢慢变得发达了。我们宿舍原来只有一台公用的台式机，而后来很快每个人就都拥有了自己的笔记本。学校的规定是每个宿舍只能有一台电脑，但每次查宿舍的时候，我们都能很及时地把笔记本藏进被窝，所以一直太平无事。每个宿舍只有一个网口，但这实在不是问题，我们凑上几十块钱就从电脑市场淘换回一个5口的Hub。&lt;/p&gt;&lt;p&gt;从那时起，网络几乎成了生活中的一项基础设施，和电是一样的，甚至有的时候断网比断电还难受。断了电还能靠笔记本电池撑一会，可断网不断电简直是一种折磨，面对着杂乱无章的桌面，真是有一种手足无措的失落感。按照这些年来对网瘾的定义，那时的我已经是一个不折不扣的瘾君子了，估计24×7不间断电击都治不好。&lt;/p&gt;&lt;p&gt;不过对游戏的不感冒在网络大举来侵的时候又一次拯救了我，在别人沉迷于网游废寝忘食地打装备升级时，我选择了在网上浏览技术文章，这比去图书馆借书来得又方便一些。那时候去得最多的当属CSDN了。我是通过杂志与CSDN结缘的。&lt;/p&gt;&lt;p&gt;食堂门口的路口旁边有个报刊亭，因为这个路口是从宿舍到教学楼、图书馆、操场、小卖部、洗澡堂子等地的必经之路，所以难免在无聊的时候溜达到报刊亭随意翻看翻看。我在这里先是见到了《程序员》，不过翻阅之下觉得并不是纯技术的，那少量的几篇技术文章我只要站在报刊亭就可以看完，没必要花那10块钱。后来在《程序员》之外又出现了一本《CSDN开发高手》，几乎全是由纯技术文章构成的，而且只要8块钱。于是我兴趣大增，开始每个月去报刊亭买杂志看。不过这个杂志销量不大，报刊亭上货也少，所以经常买不到。但一次订阅全年的又是一大笔开销，所以我只好断断续续地买着看。&lt;/p&gt;&lt;p&gt;这时的我看书依然很没有章法，前言目录是不会去问津的。可一本杂志上文章就那么多，很难填满一个月的无聊时间，所以闲暇中偶尔也翻翻卷首语什么的。就这样，我了解到原来《CSDN开发高手》和《程序员》是一个杂志社出的，而这家杂志社开办的网站就叫CSDN。&lt;/p&gt;&lt;p&gt;后来我还在这个报刊亭看到另外一本技术杂志《MSDN开发精选》，很微软的样子，我一下子就被吸引住了。但18块钱的售价让我望而却步，只要没事就去报刊亭翻阅，企图记住上面的内容，但有钱人真多，往往一本杂志摆不到两天就会被人纳入囊中，害得我只能望亭兴叹。不过后来我发现这本书竟然也是CSDN出品的。&lt;/p&gt;&lt;p&gt;从此我开始泡CSDN。先是泡论坛，我不明白为什么那么多人在这里问一些相当小白的问题，难道他们就不知道去搜索引擎搜索一下么？直到今天，我依然发现有很多人不善于利用搜索引擎，还是一遍一遍地发问，然后埋怨论坛风气不好，提了问没人回答。不过还是有一些不错的问题，偶尔我也回答一些。&lt;/p&gt;&lt;p&gt;在回答很多问题的时候，我慢慢发现，本来计划一两句话说清的事情，真要回复起来竟然要写不少话，前因后果都要交代清楚，否则别人不容易明白。甚至很多时候，我觉得必须得写一篇文章才能说清楚问题。一不做二不休，一旦某些问题触动了我的灵感，就干脆写成文章。最初CSDN并没有博客，不过有个“文档中心”可以供网友发布自己的文章，于是我开始向文档中心发布文章，并且飒爽地把文档的地址贴到论坛里，当作对问题的回答。&lt;/p&gt;&lt;p&gt;有的时候翻看《CSDN开发高手》的时候，我会觉得，“这篇文章技术难度不是很高”，“这样的文章我也可以写啊”。于是我尝试着写了个小文，通过电子邮件发给了编辑部。文章介绍了如何用C#实现类似Photoshop中的流动型选取边框，写这个文章的灵感来自于之前的两期杂志，一个人写了如何用C++还是什么的实现这个，利用的是GDI技术；后来又有一个人写了如何用Delphi实现，使用的依然是GDI。于是我选择跟风，用C#实现了一个类似的效果，但是用的是比较新的GDI+。&lt;/p&gt;&lt;p&gt;负责审校我这篇稿子的是金旭亮老师，他在看到这个小文之后和我往来过几次电子邮件。金老师最初的意思是这种类似的文章连续出现两期已经够了，不是很赞同再发表这篇。但我坚持认为可以发表，因为我的实现用到了最新的.NET环境和GDI+技术。可巧金老师也是.NET的粉丝，而当他得知我还是一名在校大学生之后，表示了极大的鼓励并当即决定发表这篇文章。&lt;/p&gt;&lt;p&gt;其实这篇文章并不是我的处女作，早在上初中玩电子制作的时候，我就在《电子制作》上发表了一篇介绍电子门铃的豆腐块文章，200多字，还得到了十几块钱的稿费呢。但是，那无关痛痒，在《CSDN开发高手》上发表的文章才使我有了极大的认同感，给我带来了写作的乐趣。这就像做爱一样，往往第一次都是慌慌张张没有什么感觉的，从第二次开始才会有快感。&lt;/p&gt;&lt;p&gt;此后，我又再接再厉，写了一篇介绍计算最大公约数的各种算法的文章，很顺利地发表了。这两篇文章的发表，不仅让我对技术文章写作产生了浓厚的兴趣，还让我有了一个更大胆的想法——要是能去杂志社工作，向金老师那样成为一名资深的技术编辑才帅呢。没想到的是，这个想法真的实现了，因为我遇到了贵人，不过这是后话了。&lt;/p&gt;&lt;p&gt;在发表了两篇文章之后，我就很少再给杂志写东西了，因为这个时候CSDN推出了博客服务。我从网上早就听说了博客这个东西，而年轻人总是对新鲜事物充满好奇，所以我在第一时间开通了CSDN博客。CSDN还提供了一项非常伟大的功能——文档中心和博客之间的双向同步，只要一开通博客，以前在文档中心发布的文章就会自动导入博客，而在博客中撰写的文章，也会推送到文档中心。所以我在转移的过程中没有任何顾虑。&lt;/p&gt;&lt;p&gt;我天生一副技术人员的心肠，对金钱并不在乎，虽然当时生活依旧拮据，但我对稿费并没有太多的依赖，我宁愿把文章发表到博客里免费给大家看。因为我觉得能读到《CSDN开发高手》的朋友并不是很多，但网络就不一样了，能让更多的人看到我写的文章。&lt;/p&gt;&lt;p&gt;在自己写文章的同时，我也在网上看了大量技术文章，我发现优秀的和涉及到新技术的文章大多是英文的，看上去很费劲。虽然机器上装有金山词霸，但经常是这一次看过了翻译过了懂了，下一次看的时候又忘了那些单词是什么意思了，还得查词典。很多文章又不是只看一遍就够了的，干脆把它翻译出来得了。而且，我相信很多朋友肯定跟我差不多，英文极烂，看这些文章一定也很痛苦，翻译出来放到博客里还能帮助更多人。当然，最主要的还是为了赚点击量。&lt;/p&gt;&lt;p&gt;其实我还希望通过翻译英文技术文章来提升自己的英文水平，不过多年翻译干下来，发现虽然英文水平略有上涨，但远没有期望的那么明显。后来看了侯捷还是谁的一篇文章才明白，翻译靠的并不是英文水平有多高，而是中文水平。其实翻译是一种再创作，在理解了英文原著的基础上，用中文重写出来而已。但是理解的过程并不重要，不管你是逢词就查词典，还是通篇下来几乎没有不认识的词，都无所谓；关键是怎么用中文再写下来。&lt;/p&gt;&lt;p&gt;后来慢慢地，我发现翻译英文技术文章比自己撰写要简单得多。因为写技术文章需要在写作之外做很多其他功课，比如绘制插图、设计和调试示例代码等等。而翻译就简单了许多，这些工作原作者已经完成，我需要做的只是把他的文字用中文重写出来。所以慢慢地，我就变得写得少而翻译得多了。如果大家看看我在博客园的博客就会发现，翻译文章占了绝大多数。&lt;/p&gt;&lt;p&gt;说到博客园，我的境遇其实和dudu差不多，也是偶然看到博客堂，然后爱上那里，然后想加入被拒。不过我和dudu的区别在于，他被拒之后自己建立了博客园，并且一直坚持不懈地做下来了；而我则是转而被推荐到博客园并进而爱上这里，在这里开了博客。&lt;/p&gt;&lt;p&gt;在博客园开博之后，我却无法割舍对CSDN的依恋之情，所以很长一段时间是一稿多投，同时发布在博客园和CSDN，搞得自己很痛苦；甚至有几篇文章干脆只在CSDN发布一个博客园的链接。后来CSDN的博客系统遇到了性能瓶颈，发文章很困难，正好给了我一个叛逃的机会，干脆完全放弃CSDN博客。这个故事告诉我们，不管你之前有多么成功，一个小的失误就会功亏一篑。&lt;/p&gt;&lt;p&gt;当然，后来CSDN的改版也是我离开的主要原因之一，CSDN太过于追求新鲜的社交类网站了，甚至在我不知情的情况下，就把我的个人默认首页改成了社交网站的样式，和原来的博客风格相去甚远。这让我很愤怒，虽然后来我发现也能通过设置改回博客风格，但这根本无法平息我的怒火。&lt;/p&gt;&lt;p&gt;犯过类似错误的还有MSN Space，本来也是博客风格的，结果为了顺应时代，在未经用户允许的情况下改成了社交类网站，这也使得我至今也不在MSN Space上写随笔。就在本文写至一多半的时候，有消息传来说MSN Space即将关闭，有朋友大呼小叫哀叹苦心经营了多年的Space，但我一点没有受惊，这早在我的意料之中了。&lt;/p&gt;&lt;p&gt;博客园也在做向社交类网站转型的尝试，不过我感觉做得比CSDN和MSN Space要好，没有随便篡改用户的使用习惯，而是使用单独的二级域名提供了新服务。首页的几次改版尝试也比较谨慎，基本上兼容了原有的用户习惯。这一点要狂顶！&lt;/p&gt;&lt;p&gt;接着说写作。在写了一些技术文章之后，我有了更大的想法，想写书。不过仅仅是想想而已，我知道自己的技术有几斤几两，和那些写出传世名著的大师相去甚远。再一个，我其实是并不是很擅长写作，从小我就最惧怕写作文，而且作文成绩一直就没有高过。我的母亲是语文教师，从我上小学就开始逼着我写日记、周记，还不能写流水账，搞得我听见作文就头疼，到现在偶尔想记点日记还都写成流水账。最牛的是，我一直不会写议论文，高考临近的时候，语文老师还找我单独谈过话。那时候高考作文虽说文体不限，但潜规则是只有议论文才能得高分。老师说让你写议论文恐怕也不现实了，你干脆就写你最擅长的散文吧，万一要是打动了阅卷老师，没准还能多给几分。对了，您看我这个系列文章是不是散的可以？这简直是专业的流水账。&lt;/p&gt;&lt;p&gt;在我工作的第二年，也是我就职的第二家公司，我有幸实现了这个愿望，参与了一本书的编写，《Windows Mobile平台应用与开发》。这本书据说是和微软合作的一个项目，要在MEDC大会上赠送的。不过这本书并不是我一个人写的，为了赶进度，并且涵盖尽可能多的知识面，我们找来十多个“专家”（这里“专家”加引号表示指的不是砖家叫兽，而是货真价实的牛人）一起编写，而我不过是负责其中一部分内容（大约一小半的样子），以及组稿、校对。&lt;/p&gt;&lt;p&gt;在发现翻译比自己写作简单之后，我就再没有自己写过书，倒是翻译了不少。先是《Visual Studio 2005技术大全》（原名Visual Studio 2005 Unleashed），后来又翻译了升级版《Visual Studio技术大全》（原名是Visual Studio 2008 Unleashed，由于面市时间已经拖延到2008年底，为了时效性干脆删掉了年号），这本书是和我老婆以及另外一位牛人合作的，后来翻译升级版时又有一位牛人加入。后来独立翻译了《高性能网站建设指南》（原名High Performance Web Sites）。除此以外，还帮老婆翻译了《PHP基础教程》和《微软的秘密》。&lt;/p&gt;&lt;p&gt;在翻译了这些书以后，我暂时放下了写作工作。一个原因是，我换了工作，离家远了，又有些忙；再一个是老婆为我们家添了一个大胖儿子，我中了乐不思蜀（注：三国杀术语）了。一切这些以懒惰作为温床，孕育了我博客的荒芜。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/19/programming10years.html" title="老刘连载：编程十年"&gt;回到《老刘连载：编程十年》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/28/programming10years-10.html" title="我不是比尔•盖茨，我只是厌倦了"&gt;上一篇《我不是比尔•盖茨，我只是厌倦了》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/05/02/programming10years-12.html" title="阅尽天下.NET文章无数"&gt;下一篇《阅尽天下.NET文章无数》&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/AndersLiu/aggbug/2033227.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/30/programming10years-11.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/AndersLiu/archive/2011/04/28/programming10years-10.html</id><title type="text">编程十年 (10)：我不是比尔•盖茨，我只是厌倦了</title><summary type="text">编程十年 (10)：我不是比尔•盖茨，我只是厌倦了本文地址：http://www.cnblogs.com/AndersLiu/archive/2011/04/28/programming10years-10.html作者：Anders Liu从此以后，我将自己牢牢地拴在了微软的开发平台上，终日沉迷于.NET。与此同时，我还学习了SQL Server数据库。另外，还补习了HTML和少量的JavaSc...</summary><published>2011-04-28T14:05:00Z</published><updated>2011-04-28T14:05:00Z</updated><author><name>Anders Liu</name><uri>http://www.cnblogs.com/AndersLiu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/AndersLiu/archive/2011/04/28/programming10years-10.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/AndersLiu/archive/2011/04/28/programming10years-10.html"/><content type="html">&lt;div class="al-body"&gt;&lt;p&gt;&lt;strong&gt;编程十年 (10)：我不是比尔•盖茨，我只是厌倦了&lt;/strong&gt;&lt;/p&gt;&lt;div class="al-copy"&gt;&lt;p&gt;本文地址：&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/28/programming10years-10.html"title="编程十年 (10)：我不是比尔•盖茨，我只是厌倦了"&gt;http://www.cnblogs.com/AndersLiu/archive/2011/04/28/programming10years-10.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;作者：&lt;a href="http://andersliu.cnblogs.com" title="Anders Liu"&gt;Anders Liu&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;从此以后，我将自己牢牢地拴在了微软的开发平台上，终日沉迷于.NET。与此同时，我还学习了SQL Server数据库。另外，还补习了HTML和少量的JavaScript知识——这些虽然都不是微软技术，但在学习ASP.NET时必不可少。虽然我在接触编程时走上了歧途，对网络世界没有正确认识，可学习.NET必然逃不开ASP.NET，于是我终于深刻理解了什么是Web，以及B/S和C/S架构。&lt;/p&gt;&lt;p&gt;尽管我不爱上课，尽管老师同学都鼓吹Java，但我还是坚持使用.NET完成了几乎所有大的课堂作业和课设。虽然最后成绩不是很理想，但我感觉还是学到了很多东西，而这些也都是我今后工作中很受用的，我感到很知足。&lt;/p&gt;&lt;p&gt;不过当时的后果是可怕的，我差了两个学分，即将背上第二个试读，根据工大的政策，二次试读是要开除学籍的。不过学校在假期里开设了一种特殊的课程，这种课所学的东西并不在统一的课程安排之中，但是可以挣到有效的学分；讲课的人也不是正规的老师，而是勤工俭学的学生，一般是经过学校考核审查过的特困生。上这种课按学分收费，大概一分200块钱的样子；而负责讲课的学生则可以通过自己的劳动得到收入，当然，他们拿到的只是很少的一部分提成，大头儿都被学校抽走了。&lt;/p&gt;&lt;p&gt;我打算选一门与编程关系不是很大的、但又与计算机沾边的课程，而且学分最好恰恰是两分，我可不想浪费钱。看了看课表，还真有这么一门称心如意的课程——Photoshop。就这样，我不得不提前一周结束自己的假期来到学校，为了能留在大学里做最后一搏。其实通过补考也能拿到学分，但是那有一定几率，万一不过的话，就铁定滚蛋了；而这种课是按照学分使了钱的，可以保证必过。&lt;/p&gt;&lt;p&gt;戏剧性的是，第一天上课的时候，负责讲课的同学看到我问，你不是老刘么？我说是啊，你认识我？他说是啊，我们同一个系同一个年级的，我跟你们乐队那个鼓手一个班，从刚上大学时就老看你们演出。其实我们的乐队已经解散了很久了，但没想到还真有粉丝，还记得我。不过此时的我已经对音乐没有什么激情了，也没太多盘道，直入主题腆着脸问人家：哥们儿，那你看这个课……&lt;/p&gt;&lt;p&gt;哥们儿很痛快，说得嘞，你要愿意来就来，不愿意来就拉倒了，我把点名表都给你勾上就行了，回头考试就是交一个PS做的文件，我传给你，你用邮件发给我，这是要存档的，不能直接帮你交。我说行，够仗义，回头一块喝酒。不过这都是场面话，此后我们再也没见过面。不过我谢你，真心实意的感谢，如果你能看到这些的话。&lt;/p&gt;&lt;p&gt;虽然这一次侥幸过关，还遇到了这么一个痛快仗义的粉丝，但我一点愉悦和虚荣都没有。暴增的只有对大学学习生活的憎恶，同时，一个邪恶而刺激的想法慢慢在我脑中形成——离开它，越远越好。&lt;/p&gt;&lt;p&gt;此后的一个学期中，我又接触到了计算机中的另一个热门领域——计算机图形学和图像处理。不过，仅仅是接触而已，我并没有走进去。两方面原因，一是我的计算机性能尤其是显卡性能实在有限，根本无法应付这方面的学习，而我却实在没有财力升级机器了；二是与该领域有关的课程，对我简直是无厘头，直接导致我无法接受该学科，进而引爆了我对大学教育的厌恶，并且使我的邪恶想法变成现实。&lt;/p&gt;&lt;p&gt;首先是选修了计算机图形学的课程，并且坚持上课，认真完成作业，自认为考试必过。期末的时候照例有课程设计，因为性能的缘故，我暂时放弃了.NET，改用回C语言，并且翻出了我尘封已久的窗口库。其实程序很简单，按照老师的要求输入一组参数，在屏幕上绘制一个多边形，并进行填充。当然不能用C语言库里自带的绘图函数，无论是绘制直线还是填充图形，都必须通过自己写代码绘制像素完成。&lt;/p&gt;&lt;p&gt;很快我就写好了程序，并且用几组自己设计的参数进行了测试，自认为万无一失。隔壁宿舍一个哥们也选了这门课，在交课设之前的几天里一直苦苦寻觅别人做好的样本，不知道他如何辗转得知我也选了这门课，并且课设已经做好，于是从我这里拿走了所有的代码。他临走时我不放心地嘱咐道，把变量名都改一改，最好程序结构也变一变。&lt;/p&gt;&lt;p&gt;悠闲地过了几天之后，我自信满满地去老师办公室答辩，恰好他也在。老师先看了他的程序——其实也就是我的程序，然后给了一组数据。不幸发生了，老师的这组数据真是诡异，其实就是在屏幕上绘制一个等腰三角形，但在填充时，当自上至下一行行填充完毕，到右下角一个像素后，会发生“泄漏”，我的程序会越过三角形的边线，继续填充外面的整个屏幕。老师很满意地笑了，很显然，他是对自己的测试数据很满意。然后问我的同学，这是你自己做的吗？同学是个老实巴交的人，红着脸摇摇头说不是。老师又问，那你把这个程序看懂了吗？同学点头。老师说，嗯，看在你很诚实的份上，给你个61吧；这组数据是很容易出问题的，书上给的示例程序有漏洞，你回去最好再好好研究研究书上的公式和这个程序，对你会很有帮助的。&lt;/p&gt;&lt;p&gt;我在边上暗暗松了一口气，心说还好，老师还是很仁义的。于是我接着演示。程序刚一打开老师就微微皱了一下眉，也是，刚看见一个一模一样的，肯定郁闷，心里还得说呢，你们这帮孩子，都一样的东西倒是分开来答辩啊。不幸再一次降临，老师给出了和刚才一样的数据，看来这组数据真是屡试不爽啊。结果不言而喻，一样的问题。老师抬起头问我，这是你自己做的吗？我毫不犹豫甚至略带自豪地说，当然是了。可话一出口，我心头立刻一紧，涌上一种不详的预感。老师说那好，你就在这儿给我调试一下这个程序，不一定弄好，找出问题所在也可以。&lt;/p&gt;&lt;p&gt;我大囧，这时其他等着答辩的同学也纷纷过来围观，大家不约而同地对我的程序界面表示惊奇，有的甚至发出声音地问，咦，这是什么系统？可没有人能对程序中的问题给点线索。为了能出点彩儿，我利用自己的窗口库写了一个很华丽的界面——当然，是相对于其他也使用Turbo C完成的程序而言。但我的窗口库本来就不严谨，不得不和绘图代码纠结在一起，书中的复杂公式再加上一大堆临界条件的判断，简直是一团乱麻，而Turbo C查看代码又很不方便，别说找出问题所在，就是找出核心代码都很麻烦。这时我更加深刻地体会到面向过程编程的劣势和为什么一款优秀的IDE是必不可少的了。此外，这种图形程序也很难调试，在一行一行跟踪代码的时候，根本无法得知屏幕上发生了什么意外。&lt;/p&gt;&lt;p&gt;就在我汗如雨下囧囧有神之时，老师轻蔑地说道，算了，甭调了，料你也调不出来；抄的就是抄的，实话实说又怎样，老师体谅你们，不会太计较的；可你实在是不诚实，没法给你及格分了；你跟刚才那个同学抄的是一个人的吧？&lt;/p&gt;&lt;p&gt;我顿时觉得天旋地转，抄的……抄的一个人的……不诚实……好吧，我只有接受这个现实，默默无语地在其他同学或嘲笑或不可思议的目光中离去。&lt;/p&gt;&lt;p&gt;索性连这门课的考试也不要参加了。我还有另外一门更值得期待的课程——图像处理，这门课也是我下了大工夫的，而且我认为这门课相对还要容易一些，图形学涉及了太多的数学原理，而图像处理则基本上都是固定的数学公式，直接套用即可。到了考试那一天，我还是很欢快地只带了一支水笔就杀向了考场。&lt;/p&gt;&lt;p&gt;在发试卷之前，老师挨个检查我们的学生证并进行登记。查到我这里时，老师那双无神的大眼在纸上扫描了不知道多少次之后，问我，你选这门课了么？名单上没有你啊？“咔嚓！”我坚信我当时听见了闪电的声音，你信么？幸好当时“被雷到”还不是很流行，否则我一定是外焦里嫩那种的。我悻悻地走出考场，灰暗的林荫路上似乎只剩下我一个人，我差点就跪在地上以45度角仰面朝天高呼“苍天啊大地啊”了。&lt;/p&gt;&lt;p&gt;俗话说祸不单行。但俗话没说祸只双至。我还选修了一门课叫“虚拟现实技术”，主要学习的是VRML语言，这应该可以算一种3D脚本吧，通过代码定义一些3D实物和摄像机的位置，然后它的运行时环境可以自己render出3D场景，可以响应鼠标键盘操作，还能跟JavaScript交互。这门课没有考试，只有课设，要求做一个实际的3D场景出来，选题不限。&lt;/p&gt;&lt;p&gt;很多人选择做一个工大校园，为什么呢？因为“坊间”流传着这样一个现成的VRML脚本，就是我们每天生活和蹂躏着的校园。而我的选题是天安门广场，因为在做这个课设的时候，我还没有接受到计算机图形学课设的教训，固执地认为我应该凭自己的实力完成这个作业。为此，我还特地邀请舍友和我一起去天安门广场走了一圈，甚至还通过数地砖大概估算了一下天安门广场的实际尺寸和比例。&lt;/p&gt;&lt;p&gt;制作的过程辛苦而有趣，所有的参数、坐标都要不停地调整，但我还是能够保持愉悦，乐呵呵地对着桌子上的五分钱钢镚儿细心地描绘一个矢量的国徽。写出来的脚本也很有意思，你可以在广场上四处游荡，走到人民英雄纪念碑下面，还可以通过空格键跳上台阶，跟CS似的。在答辩的前一天，我还傻逼呵呵地用《大腕》台词自言自语：你说这得得多少分？我看怎么也得70分吧？70分那是成本，80分起，你还甭嫌多，还不打折；你得研究老师的心理，抄的都能给及格，这自己做的他就不在乎再多给20分；所以我们做课设的口号就是：不求做得好，但求自己做。&lt;/p&gt;&lt;p&gt;结果依然无厘头，几乎所有同学交上去的课设都大同小异，都是工大校园，有的是学校外面的马路上放了几辆汽车，还能走来走去；有的是学校门口门柱上的时钟变成了可以根据系统时间运转的；更有龌龊的在女生宿舍的窗子上放上了半裸的美女贴图。所谓法不责众，虽然明眼人一看就知道这些都是抄的，但总不能都不及格或者都只是将将及格啊，于是这些“作品”普遍得了高分，最少的也有86。而我的天安门广场由于难度系数不高，只得到了象征性的65分。&lt;/p&gt;&lt;p&gt;是时候说拜拜了。&lt;/p&gt;&lt;p&gt;在我到教务处办理退学手续的时候，负责此事的老太太倒很是开明。一脸慈祥地对我说，嗬，有前途，中国的比尔•盖茨啊。我心说，什么年代了，你们Y的就知道一比尔•盖茨啊；再说了，中国出得了比尔•盖茨么？不过为了回报老太太的和蔼，我尽量淡定地说，我不是比尔•盖茨，我只是厌倦了大学的教育而已。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/19/programming10years.html" title="老刘连载：编程十年"&gt;回到《老刘连载：编程十年》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/27/programming10years-09.html" title="情系.NET"&gt;上一篇《情系.NET》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/30/programming10years-11.html" title="与文字的不解之缘"&gt;下一篇《与文字的不解之缘》&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/AndersLiu/aggbug/2032232.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/28/programming10years-10.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/AndersLiu/archive/2011/04/27/programming10years-09.html</id><title type="text">编程十年 (9)：情系.NET</title><summary type="text">编程十年 (9)：情系.NET本文地址：http://www.cnblogs.com/AndersLiu/archive/2011/04/27/programming10years-09.html作者：Anders Liu靠着歪打正着借回来的一本“烂书”，我大概了解了C#的语法知识，也知道了这门语言只是.NET平台中的一个组成部分。之后我再次杀向图书馆，准备向这个新奇的领域进军。幸运的是，北工大的...</summary><published>2011-04-27T07:38:00Z</published><updated>2011-04-27T07:38:00Z</updated><author><name>Anders Liu</name><uri>http://www.cnblogs.com/AndersLiu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/AndersLiu/archive/2011/04/27/programming10years-09.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/AndersLiu/archive/2011/04/27/programming10years-09.html"/><content type="html">&lt;div class="al-body"&gt;&lt;p&gt;&lt;strong&gt;编程十年 (9)：情系.NET&lt;/strong&gt;&lt;/p&gt;&lt;div class="al-copy"&gt;&lt;p&gt;本文地址：&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/27/programming10years-09.html"title="编程十年 (9)：情系.NET"&gt;http://www.cnblogs.com/AndersLiu/archive/2011/04/27/programming10years-09.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;作者：&lt;a href="http://andersliu.cnblogs.com" title="Anders Liu"&gt;Anders Liu&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;靠着歪打正着借回来的一本“烂书”，我大概了解了C#的语法知识，也知道了这门语言只是.NET平台中的一个组成部分。之后我再次杀向图书馆，准备向这个新奇的领域进军。幸运的是，北工大的图书馆新书很多，自然少不了C#和.NET方面的好书；另外，这个时期.NET在大学并不是很时髦，借这方面书的人不是很多，所以我的选择余地很大。在之后的一两年时间里，我几乎看遍了.NET方面所有知名的图书。&lt;/p&gt;&lt;p&gt;在看了一两本书的时候，我就基本上搞清了.NET究竟是什么东西，并且掌握了C# 1.0的全部语法。同时，我还从书中了解到，微软为了配合.NET平台，发布了新版本的Visual Studio——Visual Studio .NET，不过书中介绍的是VS.NET比较老的版本——VS.NET 2002。在使用记事本写了不少命令行程序之后，我决定尝试一下IDE环境。更重要的是，之前的VB经历使我不得不依赖IDE来编写GUI应用程序。&lt;/p&gt;&lt;p&gt;虽然宿舍的网络已经很发达了，我也慢慢学会了利用搜索引擎找到自己所需的东西，但下载一个庞大的VS.NET还是很不现实的，于是我决定去电脑市场碰碰运气。不知道这么专业的软件电脑市场是不是有卖的。在北工大的西北方不远的地方，有一个平乐园市场，里面一层是卖菜和小商品的，二层就是电脑市场，出售各种电脑配件和盗版光盘。&lt;/p&gt;&lt;p&gt;来到市场一转，发现我的担心完全是多余的，几乎每家都有Visual Studio .NET，甚至于我只简单地问老板“有Visual Studio .NET吗”老板就会毫不犹豫地告诉我“有”，我都怀疑是不是我问什么他们都会说有。不过郁闷的是，售价很是让我难以接受。那个时候的Visual Studio .NET是用CD发布的，一共7张盘，老板并不会因为是一整套软件而进行优惠——依然按照5块钱一张出售，总共是35块钱。&lt;/p&gt;&lt;p&gt;我是一个很不爱在这种市场买东西的人，因为我很不会砍价，也不愿意和JS在大庭广众之下为了几块钱而墨迹半天。但生活所迫，我还是厚着脸皮砍了很久，最终以30块钱的价格成交。&lt;/p&gt;&lt;p&gt;怀着激动的心情回到宿舍之后，第一件事情就是把这些看上去弱不禁风的CD塞进光驱做镜像。那会儿养成这样一种习惯，就是把重要软件的安装盘做成镜像放在硬盘上，再用虚拟光驱读取。一是因为盗版盘的质量不敢恭维，谁晓得以后重装系统的时候还能不能用；二是同学的素质（或者说习惯）不敢恭维，一张盘借来借去或者凭空消失或者划得乱七八糟；再就是放到硬盘上安装速度能快一些，因为我的光驱早已不堪重负了。&lt;/p&gt;&lt;p&gt;很快，我的激动和热情就被冷却下来了。镜像做到第三张CD的时候，读不过去了，再试后面的，结果还有两张不能读。没办法，我只好又杀回电脑市场，找老板理论。还好老板比较痛快，说干脆给你换一套，又说自己家没货，要去别家串一下。于是我又拿到了一套全新的Visual Studio .NET。在拿到新盘之后，我注意到封皮和原来那套有些区别，这套写的是Visual Studio .NET 2003。&lt;/p&gt;&lt;p&gt;这不禁让我想到高中时代在网吧见到的Windows  96和Windows 97，不晓得又是哪位黑客达人的杰作。我笑而不语，这么庞大的一个开发环境，微软怎么可能在一年中就推出新的版本呢。可惜这次我想左了，微软的确动作很快，在我知道.NET 1.0的时候，已经推出了.NET 1.1.，对应的开发环境就是VS.NET 2003，而且这个环境作为经典环境应用非常广泛，直到今天还有不少项目是在VS 2003中开发的。&lt;/p&gt;&lt;p&gt;不过我还是多了个心眼，我觉得这套盘和之前那一套肯定还是有区别的，于是我删掉了之前做好的镜像，重新来过。这次依然不顺利，还是有两张盘读不过去。不得已再次杀回市场，结果老板说真没法给你换全套了，要不哪张不能读换哪张吧。我说也行，但是一定要封面一模一样的。再回去做镜像，依然有一张不能读，再去换，再试，成了。&lt;/p&gt;&lt;p&gt;经过一天数次往返于学校和电脑市场，我终于制成了Visual Studio .NET 2003的一套7张CD的镜像。同时，我的硬盘也被吃下去4个多G。当时我的电脑已经鸟枪换炮，用上了TCL的笔记本了，但是硬盘只有20G。不过为了我爱的.NET，我毅然决然地删掉了所有小电影和养眼图片。&lt;/p&gt;&lt;p&gt;隔天开始安装，花了整整半天时间，才研究明白7张盘之间的关系并且安装成功。其实只要有前三张盘就可以开始使用VS.NET了，之后的三张是MSDN Library，最后一张盘是Visio。我也是这个时候才第一次接触Visio这个，嗯，绘图软件的。&lt;/p&gt;&lt;p&gt;从那时起，我的学习生活就牢牢地拴在.NET上了。有了Visual Studio这个利器，学起来轻松快速，没过多久我就能在.NET上面开发相对复杂的程序了。课程设计也惊险过关，在答辩的时候，我几乎没怎么在讲解程序上耽误时间，倒是花了近半个小时给老师讲解什么是.NET。&lt;/p&gt;&lt;p&gt;北工大的整体环境还是不大接受微软文化的，或者说老师的引导是这样的。当他们看到.NET程序时，无不显示出惊奇的表情，但当听说是微软出品后，夸张地流露出鄙夷的神态。在不久之后，我就从舍友那听到某老师的言论：拥抱Java，携手C++，对.NET不冷不热。以至于后来几年大家几乎都用Java做作业，我学习.NET倒成了另类。&lt;/p&gt;&lt;p&gt;但讽刺的是，北工大和微软关系相当之好，而工大更是向微软输出了不少人才。后来我因为工作经常出入微软中国办公区，看到了很多校友、学长。不过可悲的是，工大似乎并不乐意这种讽刺的存在，于是逐渐淡漠了和微软的关系，倒是北航北邮等高校后来居上，原来微软经常在工大举办的一些校园活动，也都转向这些高校了。&lt;/p&gt;&lt;p&gt;我从高中起就总想追求个性、与众不同，我抽烟喝酒、玩吉他、翘课、蓄长发，无非就是想和别人不一样，但因为目的不纯，始终无法掩盖我是一俗人的事实。但没想到，我只是想好好学习一门我喜欢的技术，却把我放到了另类的位置。这样也好，走我的路，让别人打车去吧。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/19/programming10years.html" title="老刘连载：编程十年"&gt;回到《老刘连载：编程十年》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/26/programming10years-08.html" title="歪打正着C#"&gt;上一篇《歪打正着C#》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/28/programming10years-10.html" title="我不是比尔•盖茨，我只是厌倦了"&gt;下一篇《我不是比尔•盖茨，我只是厌倦了》&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/AndersLiu/aggbug/2030476.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/27/programming10years-09.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/AndersLiu/archive/2011/04/26/programming10years-08.html</id><title type="text">编程十年 (8)：歪打正着C#</title><summary type="text">编程十年 (8)：歪打正着C#本文地址：http://www.cnblogs.com/AndersLiu/archive/2011/04/26/programming10years-08.html作者：Anders Liu思路回来，接着混吧。2002年，大二。学校开设了面向对象和编译原理的课程。早在学习VB的时候，我就听说过面向对象的概念；而在大一的时候，也知道了编译器是一个神奇的玩意儿，能写出编...</summary><published>2011-04-26T14:50:00Z</published><updated>2011-04-26T14:50:00Z</updated><author><name>Anders Liu</name><uri>http://www.cnblogs.com/AndersLiu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/AndersLiu/archive/2011/04/26/programming10years-08.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/AndersLiu/archive/2011/04/26/programming10years-08.html"/><content type="html">&lt;div class="al-body"&gt;&lt;p&gt;&lt;strong&gt;编程十年 (8)：歪打正着C#&lt;/strong&gt;&lt;/p&gt;&lt;div class="al-copy"&gt;&lt;p&gt;本文地址：&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/26/programming10years-08.html"title="编程十年 (8)：歪打正着C#"&gt;http://www.cnblogs.com/AndersLiu/archive/2011/04/26/programming10years-08.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;作者：&lt;a href="http://andersliu.cnblogs.com" title="Anders Liu"&gt;Anders Liu&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;思路回来，接着混吧。2002年，大二。学校开设了面向对象和编译原理的课程。早在学习VB的时候，我就听说过面向对象的概念；而在大一的时候，也知道了编译器是一个神奇的玩意儿，能写出编译器才算牛逼。所以，我打算好好学一下这两门课。&lt;/p&gt;&lt;p&gt;面向对象使用Java语言授课，那个时候虽然Java出现已经有些年头了，但对于我们还是一个新鲜玩意儿。另外，那个时候的Java还处在一个频繁发展的时期，学校课程安排的是Java 1.1，但实际上课的时候Java已经发展到了1.4（应该叫Java2了吧），后来很快Java5、Java6就出来了。所以，学习起来还是比较痛苦的。那个时候虽然网络已经比较发达了，但因为上网只能去机房或者网吧，而在网吧学习太过另类，所以网络并没有在学习Java上帮太多忙。&lt;/p&gt;&lt;p&gt;另外，IDE也成为我无法对Java产生浓厚兴趣的原因之一。上课时老师推荐的开发环境是BlueJ，我至今也不明白为什么要给我们推荐这个环境，这玩意是以速度缓慢著称的，以当时学校机房的机器配置，打开BlueJ要花大概3到5分钟的时间。而那个时候Eclipse在校园里还不是很流行。&lt;/p&gt;&lt;p&gt;幸好学校机房装有Visual Studio，里面包含了一个Visual J++。其实我也不知道J++和Java有关，完全是凭猜测，在Visual J++里写了一段Java代码，发现还真能兼容。于是那会儿的作业基本上是在Visual J++里完成的。所以说到底，还是被绑在了微软的平台上。&lt;/p&gt;&lt;p&gt;我不喜欢Java还因为它的语法和程序组织结构。抛出的异常都要列在方法头里——在写方法头的时候我怎么知道要抛哪些异常？通常都是随心所欲地抛出异常；或者根据对错误情况的细化，会改变抛出异常的类型。所有这些都势必要修改方法头，这对快速构建都会产生不小的影响。关键字太过冗长——虽然extends、implements看上去非常直观，但不免有点Basic的影子，与C奉行的简约风格格格不入。每个文件只能放一个公共类——这意味着，不管我的试验性程序有多么短小，只要出现了多于一个的公共类，就必须建立多个源文件。如果没有一个顺手的IDE，编译起来会比较麻烦。这个特征使得学习Java的成本无形中增加了不少。&lt;/p&gt;&lt;p&gt;不过，Java语言有一点我非常之欣赏，就是去掉了C/C++语言中头文件的概念，方法不必事先声明，只要在整个程序的作用域中进行了定义，就可以直接调用。本来嘛，方法定义里已经完全包含了声明中的所有信息，何必单独写一份声明呢？&lt;/p&gt;&lt;p&gt;这里提到C++，是的，在这个时候我已经接触过一些C++的知识了，也看过了两本著名的C++图书——《The C++ Programming Language》和《Thinking in C++》。但也只在Turbo C++里写过少量练习程序，没做过什么实际的东西。&lt;/p&gt;&lt;p&gt;当然，以上种种只是我个人对Java的感受而已，并不代表这种语言不好。所以各位偏爱Java的看客敬请蛋定，就当是哥蛋疼好了。&lt;/p&gt;&lt;p&gt;正好同年开设了编译原理课程，在学习的过程中不免YY着自己能写一个编译器出来。对于Java的不喜爱，也加深了我YY的情结。于是，我开始幻想有一门新奇的面向对象语言。这门语言应该像C一样简约，包括关键字和符号（而且能用符号的地方绝不用关键字）；像VB一样直观，面向对象中提到的属性、方法、事件必须样样俱全；像Java一样新潮，不用写方法声明。当然，关键字最好能与C/C++统一，不要像Java那样管using叫import，管namespace叫package……（又忍不住蛋疼了，淡定，淡定。）&lt;/p&gt;&lt;p&gt;当然，YY是YY，日子还得过。最终的结果是，编译原理上了几节课以后就再也不去了，学完了词法分析就放弃了。写程序依然是用C，但不停地在学C++；对Java只能是不冷不热，凑合着学够考试就完了；而遇到需要GUI的程序，还是得请出眼看就要被束之高阁的VB。&lt;/p&gt;&lt;p&gt;终于，我对没法用C/C++写出GUI程序忍无可忍了。起因是期末的课程设计，必须用面向对象语言实现——开明，并没有限制必须用Java；但是却明确说明不可以使用VB。作出的程序必须要有GUI界面——这无疑相当于给我这个排斥Java的人判了个死刑。虽然当时为了计算机图形学课程的作业，我用C写了一套窗口库（基于graphics.h的），可那只是基于DOS的，只能显示简单的窗体和控件，与当时Windows系统上流行的程序相去甚远。而且，因为对内存管理并不是特别熟，所以内存泄露问题也很严重，程序跑个几分钟就会死掉，只能勉强应付有一两个窗口的小程序。&lt;/p&gt;&lt;p&gt;无奈之下，只好求助于Visual C++。我在上大学期间，也看过一些Visual C++的书，但这类书往往都只介绍MFC，所以我一直也没搞清楚Visual C++和C++的关系，不过用VC可以开发GUI程序，这我倒是记住了。由于是VB出身，所以我理所当然地认为所有的GUI开发都应该是通过拖控件、处理事件的方式完成的；于是我兴致满满地打开Visual C++，摸索着创建了一个MFC程序，然后就傻眼了——没有窗体设计器啊；运行起来也和VB写的程序不一样，不是一个空空的、有着控件背景色的窗体，而是一个白白的窗口，还自带菜单和工具栏。我觉得不行，这么凭空摸索不是事儿啊，必须看书。&lt;/p&gt;&lt;p&gt;上大学有了图书馆，能免费借书看了，我基本上也不怎么买书了。而且以那时候的经济条件（虽然家里条件已经好起来了，但父母对我依然很苛刻），我的生活费勉强够活着就不错了，也只能去图书馆借书看。&lt;/p&gt;&lt;p&gt;谁曾想，不想用Java而想用VC应付课设的人那么多，图书馆的VC书竟然被借光了。当然，这也有数理学院的贡献，据说他们也要做课设，也要用C++。&lt;/p&gt;&lt;p&gt;北工大的图书馆挺高级的，在借阅区外面有一小块区域，有几台电脑，可以查询要借的书在哪个位置，也能预约和续借图书，可谓方便之极。但我在往来于查询中心和书架之间几个来回之后，我苦恼的放弃了。其实，电脑上的查询系统还是很智能的，能告诉你每本书的状态。但是，很多书明明没有标记成已借出，在书架上却找不到，这是为什么呢、为什么呢、什么呢、么呢、呢……&lt;/p&gt;&lt;p&gt;于是我干脆放弃查询了，锲而不舍地穿梭于计算机分类的各个书架中，口中念念有词：Visual C++、Visual C++……终于，功夫不负有心人，我找还真到了一本。就是看上去不是很专业——为了美观，竟然把C++的两个加号重叠起来了，印成了C#。算了，有总比没有强，就是这本了。&lt;/p&gt;&lt;p&gt;上学的时候看书很没有章法，通常就是拿起来乱翻，就算偶尔有顺序地看书，也是要跳过目录前言甚至第一章的。于是麻烦了，我直接从书上找到第一段示例代码，就开始往Visual C++里敲。敲着敲着我就纳闷儿了，C语言不是以main函数开始的么，怎么书上写的是Main？有可能是用Word写的书，被它的“自动句首大写”搞的吧，我假装安慰自己。&lt;/p&gt;&lt;p&gt;结果可想而知，程序根本没法运行。我把责任归于出版社，怎么能这么不负责呢，虽说代码只是对其他内容起到辅助的作用，但也要保证正确啊。于是这本书就被我丢开了，和那些没人看的教科书一起埋没在电脑的后面。&lt;/p&gt;&lt;p&gt;不过，这次注定我和.NET有缘。不久之后的一天，我在宿舍玩电脑的时候突然内急，大号。话说我在上大学之前就已经养成了每天至少一次大便的规律，这习性至今都让我沾沾自喜，尤其看到什么十男九Z、十女十Z之类的说法时。而且，我在便便的时候还有一个好习惯，就是看书。这一日，因为内急发作，慌不择路之下随手从电脑后面抄出一本书，拽上点卫生纸就杀奔了厕所。&lt;/p&gt;&lt;p&gt;第一波攻势来得急迫且猛烈，我无暇顾他，专心迎战。汹涌的先锋军冲过之后战场进入了平静期，我缓缓地吐了口气，给自己点上一支烟，然后开始研究手里这本书。所谓无巧不成书，有缘千里来相会——慌乱之下竟然把这本打算放弃的“烂书”拿来了。但是没办法，人在蹲坑身不由己，看吧。&lt;/p&gt;&lt;p&gt;因为实在懒得看代码，干脆看看前言吧——这玩意儿也只有上厕所的时候才会想看。这一看非同小可，前言的一开始讲了一个有趣的故事，我这才恍然大悟。原来Visual C#是微软新推出的一款语言，这只是整个.NET平台的冰山一角而已。然后就是长篇累牍的吹捧，说C#是如何如何先进，如何如何面向对象等等。我突然闪现过一个念头，这语言和我当初YY过的那种语言有点像。&lt;/p&gt;&lt;p&gt;于是我迫不及待地打扫战场冲回宿舍，电脑也不玩了，直接把自己扔到床上继续研究这本书。在快速浏览了一些讲语法的内容之后，我爱上了这门语言。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/19/programming10years.html" title="老刘连载：编程十年"&gt;回到《老刘连载：编程十年》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/25/programming10years-07.html" title="科班？自学？"&gt;上一篇《科班？自学？》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/27/programming10years-09.html" title="情系.NET"&gt;下一篇《情系.NET》&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/AndersLiu/aggbug/2029855.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/26/programming10years-08.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/AndersLiu/archive/2011/04/25/programming10years-07.html</id><title type="text">编程十年 (7)：科班？自学？</title><summary type="text">编程十年 (7)：科班？自学？本文地址：http://www.cnblogs.com/AndersLiu/archive/2011/04/25/programming10years-07.html作者：Anders Liu既然我对计算机这么感兴趣，而在当年，计算机又是热得不能再热的学科，所以父母没有理由不让我选择计算机专业。但是，计算机专业又是各个大学录取分数最高的专业，所以，慎重考虑下，我选择北...</summary><published>2011-04-25T13:18:00Z</published><updated>2011-04-25T13:18:00Z</updated><author><name>Anders Liu</name><uri>http://www.cnblogs.com/AndersLiu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/AndersLiu/archive/2011/04/25/programming10years-07.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/AndersLiu/archive/2011/04/25/programming10years-07.html"/><content type="html">&lt;div class="al-body"&gt;&lt;p&gt;&lt;strong&gt;编程十年 (7)：科班？自学？&lt;/strong&gt;&lt;/p&gt;&lt;div class="al-copy"&gt;&lt;p&gt;本文地址：&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/25/programming10years-07.html"title="编程十年 (7)：科班？自学？"&gt;http://www.cnblogs.com/AndersLiu/archive/2011/04/25/programming10years-07.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;作者：&lt;a href="http://andersliu.cnblogs.com" title="Anders Liu"&gt;Anders Liu&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;既然我对计算机这么感兴趣，而在当年，计算机又是热得不能再热的学科，所以父母没有理由不让我选择计算机专业。但是，计算机专业又是各个大学录取分数最高的专业，所以，慎重考虑下，我选择北工大作为第一志愿。北工大不但有独立的计算机学院，还在这一年开设一个了“实验班”专供高分学生考虑。&lt;/p&gt;&lt;p&gt;谁知等开学的时候，“实验班”变成了两个，因为这一年有很多从清华北大“掉下来”的高分学生，他们是第二志愿报的北工大，虽然高考成绩比第一志愿报这里的学生高很多，但为了给那些给工大面子的学生些面子，还是把我们这帮人保留在实验班里，再单开一个实验班专门接清华北大的剩儿。当然，人家考那么多分还没上成清华北大，凭什么不回去重考非要在你这四大染缸之首鬼混啊？所以，为了再给足这帮家伙面子，他们的实验班编号是——0班。不愧是计算机学院，班级号都从0开始排。而我们——第一志愿报北工大的——原计划不变，1班。&lt;/p&gt;&lt;p&gt;记得刚开学不久，就开始和同宿舍的同学争论海盗分金币问题。那个时候是2001年，新千年刚刚开始，网络还不是特别发达，搜索引擎的概念也不是特别流行——所以，大家都是真刀真枪在草稿纸上演算，没人想过上网搜一把。&lt;/p&gt;&lt;p&gt;问题大致是这样的，有5个海盗A、B、C、D、E，偶然得到100枚金币，他们计划用这样一种方式分赃：首先由A提出分赃方案，然后大家一起投票，如果超过半数同意这种方式，则皆大欢喜；否则就把A扔到海里喂鱼，然后依此类推，由B推出方案。假设这些海盗都是极其聪明的——能够猜到其他人的想法，并且是自私的——不会牺牲自己的利益去“搅局”；问A应该提出怎样的方案才能既不被扔到海里，又能得到最多的金币。&lt;/p&gt;&lt;p&gt;大家都是北京各个学校的尖子生出身，所以都能确保A的活命，但在“最多”这个字眼上还是被难倒了不少。我最终以一枚之差输给了一个同学。后来聊天还得知，这个同学也在高中时候就学会了C语言。这给我上了一堂生动的“天外有天，人外有人”教育课。&lt;/p&gt;&lt;p&gt;于是我仔细研究了大学四年的课程（学校给每个学生发了两本小册子，上面列出了大学四年所有的科目），打算认认真真地学习计算机技术。但事实是，之后的三年多里基本上没怎么上过课。不过，通过课程设置，我终于知道了，计算机技术——或者说计算机编程技术——并不只包括编程语言，还包括算法、数据结构、编程思想等等很多内容。&lt;/p&gt;&lt;p&gt;这也是我在大学生活中为数不多的收获之一，虽然没有学到很多知识，但我知道了计算机领域都有哪些知识。后来我在做讲师的时候，不止一次地向学员提到，当你遇到瓶颈，不知道该学点什么的时候，就看看计算机专业的大学课程吧。&lt;/p&gt;&lt;p&gt;由于是计算机专业，所以第一个学期就有C语言课程，终于在课堂上，我知道了什么是Turbo C，也对开发环境和编译器有了大致的了解。接下来，因为在高中的时候纸上谈兵掌握了不少C语法和基本的结构化编程思想，所以这门课学得是顺风顺水。&lt;/p&gt;&lt;p&gt;最让我兴奋的是，很多课程在学期快结束时都有课程设计，跟毕业设计差不多，就是要实际地开发点什么东西。我打小儿就是个“动手能力很强”的孩子，就好上个“劳技课”什么的。后来学习编程，也是以“实践派”自居，以“理论派”为假想敌。至今也很少专门去学习一些编程思想，而设计模式也是很晚才开始学习，目的只是为了方便和同事交流。John Carmack的一句“show me the code”让我热血为之沸腾。以至于后来做讲师时，有同学提到希望讲一些设计模式，我不乏鄙夷地解释道，设计模式就是思维定式，你们不要急于学习，等自己有了丰富的经验和深厚的积累之后，再去随便看看，印证一下自己的想法即可。可谓毁人不倦。&lt;/p&gt;&lt;p&gt;第一个学期的课程设计题目是用Turbo C实现一个打字练习软件，从预设的一些文本文件中随机抽取一个，在屏幕上隔行显示出来，每行字符下面闪着光标，用来输入。输入正确的字符就用白色显示，错误的用红色。并在屏幕底部实时地显示出当前进度、正确率和输入速度。&lt;/p&gt;&lt;p&gt;这样的题目自然难不倒我，不光是我有一定的编程基础，更重要的是我有充足的时间去完成它。课设的时间是两周，但还有课要上。而临近期末的我已然堕落，根本不去上课，每天的生活就是，白天睡觉，下午起床玩吉他，晚饭后去喝酒，熄灯后去网吧刷夜，早上回宿舍睡觉。不过在做课设这一阶段，我只要戒掉吉他、酒和网吧，就能有充足的时间编程了，恰好我对音乐和游戏的兴致并不高（游戏的故事之前讲过了，而玩吉他，最初的目的和抽烟是一样的，只是为了耍酷而已），酒瘾也不大，所以这并不是什么难事。&lt;/p&gt;&lt;p&gt;大一一年混过来，背了一个试读，被实验班开除——别担心，不是被开除学籍——落入普通班。看来实验班还真是个保护伞，就跟某Party似的，犯了多大错误不必担心性命，只要开除Party籍就行了。（关于试读的故事，不知道是不是每个学校都有，大家可以参阅《草样年华》里北X大的试读政策。）我对此倒并不在意，因为课程压力一下轻了不少，不用学无聊之极的“数学分析”了，普通的“高数”就行了；也不用上英语口语课了，不用在众目睽睽之下为了一句“small, like a watch”而憋得满脸通红了——这句经典谚语来源于同宿舍一个哥们，口语老师让他描述一下未来的计算机时他如是说。&lt;/p&gt;&lt;p&gt;经过大一一年，我从一个新生蛋子彻底沦落成“老炮儿”，明白了虽然开学典礼上老师信誓旦旦地告诫我们，缺课多少多少给试读，再缺多少多少直接开除，但实际上，只要搞定任课老师、继而搞定考试，就没问题。我的试读也是因为考试不及格背上的，跟缺课无关。&lt;/p&gt;&lt;p&gt;得到这一结论后，我在之后的几年里就更加肆无忌惮地翘课了。不过好在，我除了计算机也没什么嗜好，所以能够把翘课得来的时间放到编程上，也算自学成才吧。但我还是要感谢我上过的为数不多的一些课，虽然当时觉得没用，现在确实也没用上，但的确让我视野更开阔了一些。比如《形式语言》和《编译原理》，虽然我一直没写出过一个像样的编译器，但后来学习工作流时，很快就掌握了“状态机”的概念。&lt;/p&gt;&lt;p&gt;可是对于讲课的老师，不敢恭维。我发现大学的老师大概就这么几种。&lt;/p&gt;&lt;p&gt;一是明显在外面有私活儿干的，来去匆匆，讲课潦草也不答疑；但这类老师的课是最好过的，否则学生追究起来他不好交代。&lt;/p&gt;&lt;p&gt;二是照本宣科的，这样的老师还分两小类。“二类上”老师的教材是自己写的，讲的和书上几乎一摸一样，回去自己看书就好了。但要过这类老师的科目是需要运气的，因为如果你某个知识点没掌握好，而这一点却又是他下了苦功努力展现在课本里的，就会使他觉得受到了侮辱或者至少是没得到应有的尊重，你必死无疑；而如果你恰好掌握了这样一些知识点，那么你就触到了他的G点，让他兴奋不已，即使其他地方学得跟屎一样，也有可能得到网开的一面，侥幸过关。“二类下”老师则没有写教材的实力，所以只能在黑板上抄别人写的东西——他自己都不一定理解，所以你就别指望在课上能学到东西了。这种老师往往比较低调，考前会划重点——就是他会的那些部分，所以只要注意临时抱佛脚就行了。&lt;/p&gt;&lt;p&gt;三是有思想有自己见解的老师，这种老师理论上是好老师，但对于以应试为目的的学生来说，是最恐怖的。他们上课的讲义和教材出入很大，出起考试题来也随心所欲。所以如果不是平时认真听讲、记笔记，还是有些难度的。不过这种老师大多不太会为难学生，只要平时表现好点，作业认真点、出勤足一点，还是很有机会通过考试的。但这类老师中，有不少是陷入另一极端的，就是太TMD有自己的见解了，讲课时天马行空不知所云，莘莘学子提起笔来竟不知这笔记何从下手，上课时一脸茫然，下课后大脑一片空白。&lt;/p&gt;&lt;p&gt;我后来做讲师的时候，也接受过一些职业训练，这不禁让我更加怀疑，这些大学老师当年在上大学的时候都干嘛去了？我不是想批判他们，他们里面有不少不错的人，有的是技术水平相当不错，有的是人品相当好，有的是两者都不错；但是作为传道、授业、解惑的“师”，他们可能并不称职。&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/19/programming10years.html" title="老刘连载：编程十年"&gt;回到《老刘连载：编程十年》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/24/programming10years-06.html" title="虚荣的C"&gt;上一篇《虚荣的C》&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/26/programming10years-08.html" title="歪打正着C#"&gt;下一篇《歪打正着C#》&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/AndersLiu/aggbug/2028691.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/AndersLiu/archive/2011/04/25/programming10years-07.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
