"小A是支枪,子弹未打光"---之"手 枪"篇
声明:在本文中不会使用“高手”“菜鸟”之类的词语。因为这类词汇是很糊模的,比如说也许你认为自己
是一个菜鸟,但总会有比你更菜的人。但如果你认为自己是所谓的“高手”,那你在园子里的“高手”眼中又是
什么角儿呢。再把范围扩展一下,园子里的“高手”在裘伯君,江民,蒋涛,梁肇新,候捷,李维这一类老资格
高手或实力派IT书籍作者中又是什么样子呢。而这些国内“高手”在下面的这些“之父之母”和经典书籍作者的
心里又是什么样子呢?
Ken Thompson(Unix之父),Linus Torvalds(LINUX之父)..
正优秀的程序员,就去读第一卷,确定可以解决其中所有的问题。”“如果你能读懂整套书的话,请给我发一份你
的简历。”(而他的书也是我至今还不敢碰的几本IT书籍之一)
W.Richard.Stevens: unix环境高级编程, TCP/IP详解等书籍作者,只可惜不到50就过逝了
.....还有一些,这里不一一列举了。
看到这些,除了敢在“自己”的“一亩三分地”自封为王外,实在找不出别的什么更有自信的“东西”了。
甚至当某些新手称自己为“高手”时,简直犹如“芒刺在背”,心感愧疚。
上面陈述就是我不想使用“高手”“菜鸟”之类称呼的原因所在。当然不用这两个词,总该找两个“替代品”
吧,思前想后,感觉“新手”“老手”这两个词倒挺合适。当然这里的“老手”绝不是那种“老油条”或是那
种在公司里靠“混资历”不思进取的老程序员,因为这类程序员“负面”的一言一行相当于在刚入职的新人和新
手脑中放了一枚“原子弹”,会打碎“新手”对行业特别是IT行业的“美好”梦想(虽然现实并不“美好”),
使其迷失方向甚至丧失“斗志”。
好了,规范了“用词”,下面开始今天的内容。
话说小A 从学校这条“兵工场”流水线下线之后,才发觉在学校里学的东西基本上没什么太大用处,当然有
关数据结构,离散,算法,软件工程这几门课程在几年后才真正能堪“重任”,有用武之地。其它所学的课程
基本上在找到新工作之后没派上什么用场。
而小A毕业之后所找的第一家工作就是在一家网络公司开发asp程序(在那个asp,php,jsp横行的年代里,只
有掌握其中至少一种,才能在行业里真正站住脚,“有口饭吃”)。虽然工资不高但还能满足温饱,并能拿出一
些钱来周济一下家中(因为母亲因轻度的脑血栓住院,直到小A工作快一年后,才把因住院欠亲朋好友的钱全还
清)。也就是在这时,小A才知道钱对于维护家庭的正常运转和“后需保障”有多么重要。所以这时小A才真正
找到了动力和方向,知道了为什么而学习和奋斗。
因为实际工作中用到了asp开发(公司网站完全是在window产品平台上,当时.net平台还未推出),而那时
动网论坛无疑是学习asp的最佳范例,此时公司恰恰需要架一个asp论坛,所以在部门领导决定让小A来搭建并维
护这个平台。也就是在这段时间里,才发现asp居然可以这样写,与自己之前所学习的公司网站asp代码简直是
天壤之别,感觉公司代码如同“垃圾”。在疯狂研究了半年之后(时间长是因为自身水平太菜),感觉自己水
平见涨,这时才开始着手用学习到的“东西”改进并规范公司的代码,因为当时的程序员只有小A和部门经理
两个人(那个经理后来也跳槽了)。所以沟通起来成本较底,基本上两个一碰头就决定了下一步该如何开发了。
这样工作了一年半左右的时间,感觉自己对asp的了解已够全面了,准备换上一家公司(主要是因为薪水问题)。
因为在这家公司学到了不少,况且怎么说也是自己在毕业之后找的第一家公司,但因为公司老总对程序员就是
那么回事,不太重视,而且发展空间比较小,加上后来招的三名程序员,一共才4个开发人员,且大家平时分
工不同,水平也都一般,对于渴望学习研究新技术的小A而言,未来才是值得期待的。
而在此时,小A发现了一个事实,在ChinaRen和51Job上asp开发人员的工作不像jsp那样好找且工资水平不
高,而这时公司准备架一个聊天服务器,而聊天程序准备从一家 jsp公司买来,并招了一名 jsp程序员,也就是
个jsp程序员来到公司之后,小A不失时机的向他了解jsp方面的一些语言背影和框架知识。那时正好是Structs
蓬勃发展的时候,而小A也是这时才第一次听到Framework(框架)这个词,并且被其中的一些名词和强大灵活
的"开发火力"所吸引,才感到自己之前所学的只是"井底之蛙",拿不到桌面上。在开发小的应用(如小网站)上
还行,拿到大的项目上(那时流行门户网站)就不堪重负了。这时小A开始感到迷茫了,是转投JSP, 还是继续
做ASP,还是放弃做WEB开发,重新打鼓另开张去做C++(因为小A自认为C++在大学期间学的不错)。好在这时
微软的 .net平台也发布了,公司打算转型做 .net网站平台,而之前对公司代码最熟悉的就是小A了,在看过一
些.net介绍资料和MSDN信息之后, 小A感觉C#可比c++容易多了,起码声明或申请的资源不用专门写代码来释放
(当时也就这个认识),这就好比"拉完屎不用擦屁股"一样,.net的垃圾回收器帮你擦了。另外最让小A感到
方便的就是上传文件只有几行代码搞定,不像ASP中要使用并注册上传插件那样麻烦。最终决定先不急于换工作,
利用这次机会好好学习.net。另外在此时小A广泛学习TCP/IP,C++ MFC等内容,虽然凭自己的水平和大学期
间学习的内容,但学习起来还是很费力,但相信好东西不好学,好学的不是好东西(事实证明在日后公司开发
WebService服务时,对TCP/IP和HTTP等知识的了解使其开发在理论上更好理解)。
在后来的开发中,小A与公司其它开发人员一起转型到.net平台上,一起进行asp.net开发,这时在市面上
关于 .net开发的书还不是很多,其中还有几本是台湾作者写的,好在一国两制,语言上不是太大障碍,起码在
大学期间看过候捷等台湾作家的书,对一些软件(体)术语理解上不费劲.所以这里真是大小通吃,只要是与
.net开发相关的,懂或不懂都去学习,管他什么方向(后来小A想起来因为"方向不明确"浪费了不少时间和精
力)。而当时CSDN也不失时机的大力宣传.net,大家如果看到2002-2004这三年csdn精华本(每年出上下两册)
,都预留很大一块阵地给.net,而开发设计等方面的文章也如雨后春笋一样"遍篇都是",一切都是那样美好.
给人感觉已与java分庭抗争了,前途无量呀(在多年后看来情况远不是这样)。
也就是那时才开始研究"用户控件",因为它能解决代码重用和分散复杂的页面逻辑.其实这时只有一
本章立民写的有关(用户)控件开发的书是小A总在看的,也就是通过这本书才了解到缓存的巨大威力.并在
网站首页和相应"需要频繁访问而数据相对稳定"的页面中使用,效果果然不同繁响.而同事们也有人开始
看webservice方向的内容,正如大家所知:.net是目前为止开发SOA最方便和高率的平台(起码当时如此),
在今天看来WCF进行SOA应用开发以及REST(WCF3.5的webget,webinvoke属性)架构仍然是上选,这块
做的太NB了。
所以那时自己也决定与大家一起将网站架构部分转到WebService方向,各个频道(前台)交互数据全部
采用WebService,这样的好处就是松藕合和架构灵活(注:当时团队中无人知道SOA,多年后想起来感觉当时
大家的一些设计理念与SOA很相近,不过这也符合那几年全国开发人员对SOA的认识,而有关这方面的内容可
以参见孟岩的这篇文章,他算是把从那个年代走过来的开发人员对SOA的理解从头履了一遍,让人深有同感)。
说到这里,还没有提到标题所说的"手 枪篇"三个字,其实这个灵感来自于我路上的一次"忽发奇想".
因为总有人会抱怨被别人(特别是公司老板)利用---当"枪"使.所以这样不妨使用这个比喻,因为我们在
学校这个兵工厂中锻造出来的只是"手 枪",为什么"手 枪"呢?
因为首先就是 "射程",我们在学校中无法学习架构,设计模式等内容的精髓(起码我的大学当时还没
开"设计模式"之类的学习课程,原因很简单,C++还有考试不积极的,再讲解设计模式,恐怕要"全班全
年级"覆没了)。因为我们的眼光只相当于手 枪的"射程",也就是五六十米左右,所以决定我们的技术
仅够防身和开发简单应用的了。
另外就是我们的"火力"。"手 枪"普遍都是单发(无法连发速射甚至多管齐射)而且弹夹容量很有限(相
当于我们的设计经验).因为没有丰富的开发经验,所以平时开发时,经常一边看书一边写代码,开发效率
和程序的健壮性稳定性可想而知。如果这时再让你同时接手几个项目(相当于"速射"连发),你肯定要
感到头大,大得就像是"100个城管爆揍一个不法商贩"那样,只能说"死定了"。
最后就是消化吸收新知识的速度,因为一切要白手起来,起来对当行流行的框架,模式等学习吸收速
度慢,直接导致"弹药"不足。在与同行讨论切磋时,感觉底气不足,不知所云.而这直接决定了小A要
尽快购买并吸收尽可能多的"子弹(书籍和源代码)",只有保证弹药充足,才能枪不至沦为"烧火棍".
当然在接下来的一篇文章中,我们会伴随小A一起走过设计模式,代码生成工具,应用框架研究及使用
以及AOP,IOC(那时相当时尚的技术名词)诸方面来加强自身火力使其从"手 枪"变成一把"半自动(或
全自动)".如下图:
好了,今天的内容就先到这里了,感兴趣的朋友可以在回复中讨论.
tag:开发,webservice,soa,wcf,手 枪,步枪,framework
作者:代震军,daizhj
原文链接:http://www.cnblogs.com/daizhj/archive/2008/09/12/1289817.html