??xml version="1.0" encoding="utf-8" standalone="yes"?>
到杭州已是中午,错过了上午大会。下?/span>Robbinq行Java技术展望和RoR实现REST的演Ԍ既然是朋友,肯定是要捧场的?/span>Robbin旁征博引Q以其深厚的技术功底和Ҏ(gu)技术的敏锐z察赢得了听众?/span>
晚上一堆h去聚会,各\豪杰UQ有阉K巴巴的,有自己创业的Q有技术大牛,q有媒体Q?/span>InfoqQ,出版C(博文的周总领3员大ʎ会)。大家互换名片,认识的不免寒暄几句,不认识的也很快就熟捻了,q不时有“原来你就?#215;××”的惊|原来|上?#8220;互通心?#8221;Q只是一直没Z认识|了?/span>
席间觥筹交错Q具体内Ҏ(gu)且不表,只说一件o我感受颇׃事。一个阿里巴巴的员工表现出对公司的无比忠诚,讲v公司的奖惩制度,说是一个员工的l效不仅跟所在项目相养Iq与部门、其它部门甚x个公司的业W相关。所以只要是对公司有利的事情Q即使与自己现在的工作无养I他们也会d。按常理来说Q这有点不公qI我只能努力做好自q事情Q而如果别Z努力Q我是白做。但如果大家都努力,又变成了p?/span>
q里让我讲一个简单的博弈问题Q就?#8220;囚徒困境”?/span>A?/span>B两个同犯被抓Q因为没有其它Q何证据和证hQ只能让2人分别交供。如?/span>A?/span>B都矢口否认,那么两h无罪释放。如?/span>A承认Q?/span>B不承认;A是坦白从宽,?/span>1q_B抗拒从严Q判5q_反之亦然。如?/span>2人都承认Q?/span>ok证据凿Q各?/span>2q。如?/span>2人都是理性hQ且没有互通消息,按照博弈Q每个h的最优解是承认Q也是各判2q。其实对2人真正有利的是打死不承认然后都无罪释放Q而这U状态在理性h的假设下是很隑֮现的--除非有一个教Ӟ一直灌输他们不要出卖同伙?/span>
马云是q个“教父”Q?/span>
卡内基有文章,我ȝ成一句话是Q用崇高的理x动别人。据说马云一直是以个人魅力及“创造中国电子商务的明天”cM的理惻IȀ励员工的。有了统一的企业文化,员工都不计较个h得失Q努力奋q,最l企业和所有员工取得共赢,q绝Ҏ(gu)摆脱“囚徒困境”的典型案例?/span>
话说回来Q阿里巴巴能让你感受到团队的力量Q一精英在一块做很有价值的事情Q对每个Z是很好的ȝ。个为,如果有吃苦耐劳的打,眼光Nq点Q又没有其它斚w的束~,阉K巴巴的确是不错的选择。(得向阉K巴巴收代a费,呵呵Q)
W二天听了多道,主要?/span>SAASQ搜索,分词斚w。结合阿里巴巴的战略Q我把几点融合v来讲一下。这个下再l细道来?/span>
众所周知软gq行压力是很大的。各U各L问题层出不穷Q每天上班工作内定w是排的满满的Q遇到突发问题就得加班。如果不及时q行疏解Q积累到一定的E度Q就可能产生一定的负面问题Q比如上班精状态差、注意力不能集中、遇事喜Ƣ逃避{等。我׃w经历了q样的状况,明知自己工作U极性差、效率很低,但也很难一下子扑֛自我?/span>
一ơ偶然的出游让我从中很快C出来。一个亲戚考上厦大的博士,我请?/span> 2 天的假,利用周末旉Zd门旅游。厦门依山傍P的确是旅游的好去处。晚上到Q凉风习习,光脚沿着沙W走过QQ赯的潮水在腿上脚上留下层层薄沙。内心也变得q静Q能够感受到L呼吸。天地间仿佛只剩下我和大P在进行心늚交流Q俗世烦扰皆抛诸脑后Q只剩下Ҏ(gu)v的依恋。白天去爬南普陀山,q不太高Q慢慢爬到山Ӟ整个思明区尽收眼底,q处一艘快艇在面掠过Q留下一条美丽的花。然后顺p下到植物园Q途径无数奇花异草、层天老树Q走得篏了,找个湖边矛_休息一下,Z觉得L愉快?/span>
l过大自然的z礼Q回到单位,人的_面貌焕然一斎ͼqU极的心态处理事情,很多问题q刃而解。压力测试做的很累,l常要熬夜,但通过一轮轮的测试,逐步定位到性能问题所在,自己也学了不相关知识,x也就没那么烦了?/span>
做事的方式,也有了长q。我现在信奉Z时只做一件事效率最高的原则。事情再多,也是一件g做,每天安排好近日的工作Qƈ排个优先U,什么是要亲自处理的Q什么是让别人处理的Q什么是需要预先通知他h的,需要什么资源,每g事情的预计时间如何,需要如?/span> check {等。做好一件事打个勾Q做到心中有数。如果事情有延误Q分析是什么原因,该如何补救,而不要有太大的心理负担,自己力了就好,是自q责Qp勇敢扛下Q死不了人的。这其实是很单的原则Q谁都能够学会,但的很用?/span>
ȝQ压力是无处不在的,关键在于如何应对和排解。用U极的心态和恰当的方法面对,压力也就没那么大了。感觉压力积累到一定程度,在还未媄响正常工作之前就先想办法排解Q出L游、运动等都是~解压力的好办法?/span>
坏的代码p揉面团,什么接口什么实现全揉成一团,一个方法几百行Q注释写再多也是面团Q夹了些纸条而已Q。然后需要重用了Q就是从中抓起一把面团,然后攑ֈ其它的面团里l箋揉。这样重复代码一堆,什么易L、扩展性、可l护性都是无从谈赗?/span>
好的代码p堆积木,接口实现定义清清楚楚Q每个接口只做一件事情,重复代码都是通过更细的接口来消除。重用就是把U木块往该放的地方堆Q这L代码Q几个大块几个小块一目了Ӟ只要Ҏ(gu)命名规范Q连注释都可以省厅R这栯合性低Q易L、扩展性、可l护性都可以得到保证?/span>
把面团变成积木ƈ不复杂,定义好模P面团一团团往里面填充Q待E_下来Q就成了一块块U木。这里关键就是模L制作Q推荐制作宝典: martin fowler 的那本重构。还得有模具的丈量工P非 junit 莫属了?/span>
首先讲压力测试环境。这个很是关键,我们是在这个上面吃了苦头。我们用?/span> loadrunner Q原理也很简单,一C控机Q控制多台客hQ模拟ƈ发用戯问应用。然后需要能实时监控各相兛_用服务器Q?/span> ldap 服务器等的性能。这里每台客h最好能使用同样的配|,使用_带宽的网l,l予同样的负载(模拟同样数量的用P。同时要注意监控客户机的 cpu 和网l状况,时刻保证 cpu 和网l利用率低于 100% 。我们犯的很大错误就是用各自的W记本,而且都用的是一?/span> 10M hub 牵出的网U,q样D实际的网l阻塞,既没有给予服务器_的负载,又导致报告的响应旉比实际更长,从而带来了后箋很多的无用测试?/span>
然后讲测试方法。用的较多的q是持箋压力试Q就是持l给予服务器一D|间的q发量(一般ؓ 5 ?/span> 10 分钟Q,然后看^均响应时间是否在可以接受的范围内。这个“可接受”要视应用类型和实际的ƈ发用戯定Q如何估计ƈ发就要靠l验了。对?/span> portal 而言Q由于要与众多的应用接口Q如q行 SSO Q获取数据等Q有很大E度也依赖于其它应用的性能Q其性能要求不会太高。我们测试首늚性能Q在放上全部?/span> portlet 的情况下Q?/span> 100 个ƈ发的q_响应旉在 17s 左右Q这肯定是不能接受的Q?/span> 10s 只能勉强可以)。接下来是发现性能瓉Qƈ试q行优化了?/span>
初步的发现瓶颈的Ҏ(gu)也很单,通过?/span> portlet 的增减,发现最影响性能?/span> portlet Q然后不断优化,直至辑ֈ可以接受范围。发现瓶颈所在了Q就得进一步确定是什么原因:是我们本w程序的问题Q还是其它应用接口性能不佳{等。这里光靠猜是不行的Q要讲数据讲事实Q记录时间日志就是简单有效的办法Q我们对各个旉Ҏ(gu)C日志Q比?/span> doview Ҏ(gu)的全部执行时_ jsp 的蝲入时_具体接口的执行时间等。有些接口可能在压力较小的情况下性能不错Q而在大压力情况下出现性能隐?zhn)Q所以一定要在进行压力测试后查看日志。我们就是这样发C性能隐?zhn)Q同时更q一步对各方面进行优化,直至辑ֈ客户可以接受为止?/span>
׃不是专门的测试h员,很多地方都是实际目中的体会Q也没什么理论基。有什么不对的地方Q大家多交流?/span>
重用应该是高层的复用Q逻辑的复用,接口的复用,而不是具体实现的复用?/span> 我们目开始讲复用Q就是大家把别h的代码拿q来Q可用的地方qQ不同的地方Ҏ(gu)Q结果问题一堆。说到底是接口没有定义清楚的,很多该复用的逻辑隐藏在了具体的实C。这样导致无法进行接口的复用Q{而用具体的实现复用。从E序员的角度看,他们M使用成本最的Ҏ(gu)完成d。所以我们要时刻思考如何能让最正确的方法在他们看来同时也是成本最?/span>
q里有一个较为简单的办法Q就是尽?b style="mso-bidi-font-weight: normal">使用Ҏ(gu)装实现Q接口的粒度最?/b>。如果一个实现需要几百行Q且其中包含多个逻辑Q就最好抽取出多个Ҏ(gu)Q然后在M接口内进行调用。这L代码逻辑清晰易读Q可重用性也高。看看大师们对代码的不断重构Q很大程度上是重构出粒度最l,复用性最高的接口?/span>
如何辑ֈ最大程度的复用Q其实是非常复杂的问题,q需要在今后的项目中不断体会?/span>
1. 开发流E尽量简化,采用q代增量的模式,做适合目需要的文档。很多时候千a不如一图,原型开发我认ؓ也非帔R要?/span>
2. 采用成熟的框Ӟ ssh l合或更?/span> full-stack 的框架如 seam {都是不错的选择。如果一定要用公司的框架Q至?/span> SA 要非常熟(zhn)这个框Ӟ在出现问题时要能快速的解决?/span>
3. 对业务的分析做到细好Q如果有条g让更多的开发h员参与业务的分析Q同时Ş成项目通用的业务语aQ实在不行,_?/span> user story 也可以)。对于每个达成共识的业务都要能记录下来,q能方便的进行查阅。业务模型和业务规则要始l与当前需求、代码和数据库保持一致?/span>
4. 在团队的上,需要更多的投入。不要ؓ了节U成本,让很多程序员老后面才加入团队。一个稳定、团l、有冲劲的团队能比松散而h数更多的团队Q完成的更快更好。然后要加强沟通,比如每天开个小的茶话会Q大家交下各自的工作情况,有什么困惑和疑难Q提出来大家一赯冻I避免大家各自做相同的逻辑Q很多东西经q抽象可能就是一个)。在工作之余大家一块吃吃饭Q打打游戏等都是增进感情的好Ҏ(gu)Q大家彼此熟(zhn)了Q工作上也能更好的协作?/span>
5. 对程序员要有更高的要求, SA 有责任让E序员了解更多的东西Q如面向对象?/span> 5 大原则、一些模式?/span> junit 、重构等Q这些其实ƈ不是什么高q东西Q仅仅是掌握一些方面也能对代码质量和开发中的愉(zhn)度产生很大促进。要Ȁ发他们对技术的热爱和对代码质量的追求,因ؓ最l受益的q是他们?/span> XP 所提倡的l对~程也是快速进行知识传递的好办法?/span>
6. 采用 wiki q行目q度跟踪和一些文档的展示。这ơ用 excel+cvs 的方式感觉很是麻烦,?/span> spring 译中我们采?/span> wiki 的方式就感觉很好?/span>
暂时先想到这么多Q有更多体会Q再来补充!
首先是开发流E。我?/span> xp 的坚定支持者,但在目中由于外界原因还是采用了传统的开发流E,没有q代Q就是需?/span> -> 设计 -> E序员进场开?/span> -> ?/span> bug 。由于程序员q场旉较晚Q一上来开始开发,没有旉q行培训和团队的融合。然后开发中~少沟通,是一个h负责一块,开发完了再做其它。结果开发到现在Q还有h不清楚我们项目的全貌Q到底是Z解决什么业务?/span>
然后是开发框架。用了公司的框Ӟ而我们作?/span> SA Q我们是?/span> SA Q,都是W一ơ接触,E序员也׃个h用过。我们最早是达成p采用 SSH 的组合(我至还是了解吧,其它Z都用q)Q但׃上层因素没有实施Q这也导致我好长一D|间进入不了状态)。开发前期大安在探索这个框Ӟ的确很难用,出错机制较差Q配|文件很多,耦合较强 ... Q,在一堆莫名奇妙的问题中摸索前行,p大量的精力。而比较搞W的是,在大家开始学习这个框架之Ӟ我作?/span> SA Q因写一堆只为应付客L设计文档Q后面就没h看过Q,错过了和大家共同q步的机会,后面L感觉“低Z{”?/span>
在业务方面也存在很多问题。很多业务逻辑q没有以很好的蝲体保存下来,在需求文档中很多逻辑q没有体现。我l护了一?/span> pd 的业务模型,从概忉|?/span> -> 物理模型 -> 数据库,q解决了后面的一些沟通问题,但由于更多体现的是静态的实体及关联,对于一些动态的业务程没法体现。我?/span> SA 之间有时在一些问题上的理解还存在分歧Q讨也达成过pQ但没有记录下来Q后面可能就忘了Q,E序员就更是无所适从。谈到这Q我更感受到 DDD q本书的价|他所提倡的开发h员参加模型的讨论QŞ成项目的模型语言Qƈ不断随着业务q行演化。。。好多理念都是项目经验的l晶啊?/span>
在开发管理上我也是无所作ؓ?/span> Junit 都没有推q下去,更别?/span> TDD 了,q也与框架相养I它就没提供写 test case 的地方,{我搞明白一堆配|文Ӟ做出q web 容器?/span> test 框架Q都开发一大半了,说v test 的好处,大家也表CZ理解Q或者表C理解但没时?/span> = 没理解)Q就让他们慢?/span> debug 吧!代码的质量也没有保证Q程序员不明白代码的味道Q更别说理解重构的意义以及进行恰当的重构了。一个函数写?/span> 100 多行Q什么逻辑都在一块,但由于时间较紧,我也只好睁一只眼闭一只眼“功能完成就行吧Q也不是我一个h在管”,到现在很多代码成一团,展现层直接调?/span> dao Q又是框架惹得祸Q,相同的逻辑 copy ?/span> n 处,我也是后(zhn)莫及?/span>
今天先写pQ明天写从中学到的东西,从错误中学到的也许更多!
那么q个模型应该是什么样的?书我没有l看Q只说说自己的体会。关于设计,很早有数据驱动和对象驱动的提法。在 Without EJB 里, Rod 也有Ԍ数据驱动或者说面向数据库设计更成熟Q工h多;而对象驱动更W合面向对象E序的特性,但由于掌握的?yu),风险较大。而通过模型驱动Q我认ؓ很大E度填补?/span> 2 U方式的鸿沟Q核心是模型Q具体是对象模型q是数据模型q不重要Q重要的是这个模型能够与需求、代码、数据库保持一致?/span>
说到q里Q顺便谈一谈我Ҏ(gu)档的理解。我一直是 XP 的坚定支持者,甚至有点偏执。而由于文档不易阅d沟通,且经怼出现与设计和代码的脱节,D其可L更差,所以我一向对文档不大感冒Q更們于用代码说话。但在目前的公司目中,׃更多采用传统的Y件过E,我也写了很多的文档,包括需求规D明书、概要设计文档、详l设计文档等{。从寚w目的帮助来看Q文档作用ƈ不太大,或者说是付出收益比太低Q更多的是给客户写的Q而不是给E序员写的。从E序员的需要来看,他关心的是每个实体的属性和兌Q核心的接口、输入和输出Q页面间的蟩转和数据,然后有一个统一的框架和~程模式。我的体会是Q如果以文档为核心,很难描述清楚q些东西Q且难以应对变化?/span>
而通过以模型ؓ核心Q项目现在采用的 power designer 的概忉|型ؓ基础Q,辅以适当的描qͼ既能够加快大家对目的认识(E序员是后面才加入)Q又能够节省一些写文档的时_更早投入开发?/span>
说到 power designer Q我也比较惭愧。用了好久,一直只是把它当成看数据库的工具。项目一开始就是从物理模型入手Q结果D步维艰。后面从概念模型入手Q就感受C它的好处。用概忉|型,不用考虑太多兌表、外键什么的Q而是从实体出发,然后定怺间的兌Q是一对一、一对多q是多对多。然后自动{成物理模型,q直接与相应的数据库挂钩。从q点上看与从对象设计出发真的非常怼。其实这也是合情合理的,正体Cq个世界的统一性吧Q物理学界不也在搞什么统一场理论的证明吗)?/span> Power designer 也做?/span> conceptual model, physical model, object-oriented model ?/span> xml model 的自动{换,我现在还没全部摸熟?/span>
openfans 则是从对象入手,q过 hibernate 建立与数据库的联p,也体C一定的方便灉|性。但比较p糕的是Q只有代码和配置文gQ没有清晰的便于交流的模型,谁要惛_与只能先L慢看代码。所以我先通过 together reverse 出来一个类图,然后适当加以文字q行说明。类囑ַl做好,但比较ؕQ还需要更多的图例加以说明。文字说明就是下一?/span> blog 的工作了。也是预告吧!
首先是不适应。要参与需求阶D,因ؓ需求初期ƈ不确定,客户都不清楚他们需要什么东西,只是有一个很模糊的概c我们得不断调研、讨论、出Ҏ(gu)、出原型 …?/span> 而这都是我比较不擅长的。还好有个职务较高的老大带着我们Q才能逐渐把需求理。我也从他n上学C,准备写一“如何做需求”,但毕竟是W一ơ做较大的需求,理解q不很深刻,怕贻W大方,所以只?/span> MindManager 列了个提UӀ?/span>
其次q是不适应。项目开始好几个月,没写q一行代码。项目没有采?/span> XP 的方式,而是普通的瀑布。需求就做了几个月,然后做概设、详设。我?/span> XP 的支持者,所以对q种方式持反Ҏ(gu)度Q但老大不同意,没办法!写文档,我也是很不情愿,但{念一惻I Rod ?/span> Without EJB Q但?/span> ejb 的理解比谁都深,什么方式都实践下可能更好。由于同时在?/span> Joel on software Q他寚w求规D明书却很是强调,我也听听大师的话,好好写需求,Z把他的一招用上了 ------- 写的有趣点,当写故事吧?/span>
最后还是不适应。以前做E序员,可以好好研究很多东西Q现在不行了。有?/span> xml ?/span> bean 转换的技术要解决Q我能研I不Q不行,我得写文档,q种比较 detail 的事情得l程序员做。看着E序员兴高采烈的比较各种开源工P最后选定 JIBX Q?/span> openfans 发挥了一定的作用Q,然后跟我讲这个如何如何好Q我只有附和的䆾?/span>
讲到q里Q让我想C则小故事Q有一个学钢琴的拜一个牛Zؓ师。牛Zl他一个曲谱,_“回ȝ好,一个月再过来。”他好歹把这个曲l熟了,q想展示一下,牛h又交l他一个更隄曲谱Q又是同L话。他只好回去l箋苦练Q每ơ都感觉不适应。这样往q多ơ,他忍不住了,问牛人:“你是不是故意整我,每次都给我更隄Q还不给我表现的Z”。牛他把上次的曲弹弹Q他感觉不错Q让弹再上次的,更是LQ最后弹W一ơ,他弹的是出神入化。他明白了!
大家都明白没Q只有不断的感到不适应Q才能进步。如果一切感觉良好,没什么挑战,p考虑。。。。。。(此处省略 2 字)了?/span>
一?/span> 3 ?/span> speaker Q第一个是 thoughtworks 的资深顾问,讲了?/span> xp 要注意的地方Qƈ配了些照片和图表Q讲如何实施 xp Q还是有些收L。第二个是阿里巴巴的性能试专家Q讲了如何进行性能试Q如模拟用户Q确定负载等{。h挺牛的,但想想阿里巴巴每?/span> 1 个亿?/span> pv(page view) Q他都搞得定Q咱也没话说?/span>
W三个出场的是q篇文章的重点了Q讲的的很好,而且很有新意。这位是U工厂的老板Q在中国工作几年Q然后去加拿大开始了他的 xper 之\Q回国后做出了自q JDO 实现。他的主题就是结合自ql历Q讲授一?/span> xper 的成长过E。因为是亲n所感,他讲出来很是实在Q加上时不时q它一默,如:上班让打游戏感觉很爽Q跟印度媚 pair programmer 却感觉很累。。。。。。让人在会意的微W中体味他当时的感受和成长,同时加深?/span> xp 的一些实늚实际认识?/span>
他ƈ没有?/span> xp 所涉及的所有要素,只是?/span> pp 和沟通的重要性以及测试优先和重构是程序员的基本素质这几个斚w。他很是x沟通的_甚至一个h的性格要素Q他认ؓ好的 programmer 应该乐于L通,勇于承认不Qƈ能主动去向同伴或团队L解答Q而不是首先去 google Q。同时他?/span> xp 的精提Z自己的看法,也是以h为本Q但是另一U意义上的以Zؓ本。他半开玩笑的说Q以Zؓ本ƈ不是l你更多的工资,让你上班打游戏,让你 happy 的工作,而是把以前对程的关注更多{到开发h员上面,让开发h员具备一?/span> xper 应有的素质。他通过亲n体验说明了一个好?/span> xper 即不在 xp 的团队中Q也能创造更快的开发效率,更高的代码质量和更少的加班。关于这Ҏ(gu)也很是认同ƈ有一些亲w的实践Q通过试先行Q不断重构和努力消除重复代码Q是能大大优化代码结构,提高代码质量Q减?/span> bug 率的Q而相应的反而会提高开发效率?/span>
也许目前国内q较?yu)有真正能实?/span> xp 的团队,我们也很隄的在目中进?/span> xp 的完整实c但只要我们接受 xp 的思想Q在qx的实践中采用一?/span> xp 推荐的方式,如测试优先、重构、持l集成、乐于沟通等{,先把自己变成一个合格的 xper Q那么在真的有机会实?/span> xp 的时候,我们p更快的融入团队,更好的用 xp 的精髓指引项目走向成功?/span>
Z大楼Q师弟带我们到新建好的南门去看看。这不是凯旋门的模仿吗?厚重的大理石砌出中间一大两边一的I透长门,再加上一些简单的雕饰Q中间的下面却立了很大石,M学校的名字,再围上一些花Q阻止h的通行Q顿时减了很多宏伟的气ѝ但q样却便于照相,好多同学三五成群往石碑前一站,然后很好取景Qh面鲜q映,加上“凯旋门”的气势和石的明喻Q很有纪忉|义。“凯旋门”两旁是弧Ş的长廊,仿欧z古怸义徏{风|一排排xq去Q凭M不少文化气息?/span>
从“凯旋门”往校园里走Q眼前一片开阔,是一大片草坪Q有几个球场大。草坪上有不学生,或站成一圈玩飞盘Q或几个人围坐打扑克Q或几个Zؕ卧其上感受草的气息。我们走q看看,一块块醒目的小牌上都有一句颇有意味的话语“小草在休息Q请勿打扰”。本意大安明白Q但看这么多人在上面Q也暂且从众一把。我们也打扰了一下小草,我还忍不住在上面打了个滚。同时在惻Iq么大的一块草坪,p不菲Q如果只是看看,未免可惜了点Q好像国外的草坪也ƈ不禁止ht踏的,只要不在上面做剧烈运动,如踢球之类Q应该也不会带来很大的媄响?/span>
沿着路往东走Q右辚w是新建的教学区和学院大楼Q风格很是统一。经q一座小桥,往下看去,x~缓过Q旁边一个小的岸边广场,沛_Ҏ(gu)沿河走道Q一直往q方延箋。在草坪的绿色基调下又多Z些点~Q真是风景这边独好。我又在心底感叹Q真是适合谈情说爱的好地方Q可惜我们那时没有,只有西边一个小的h工湖Q晚上拥挤的很。再往东就看到一个红漆的仿古大门Q是把老校区的大门 copy q来了。照样门前一对石狮,也是适合摄媄留恋的地斏V?/span>
大家到这也就慢慢散去了,大部分打的走了。我的爱车还在学院门口停着呢,于是又跟几个同学往里走。一边聊聊工作的事情Q一边大家好像有默契的往以前的宿舍楼所在走厅R走了好q,q了一个地道,来到以前的宿舍楼下。又L了,涂上黄色涂料,加上四角的红砖墙装饰。可惜原本就整体感觉不佳Q就好像一个丑媛_Q涂上再多胭脂水_也变不成美女一栗忍不住从下往上张量以前我住的宿舍Q阳台挂了gq动衫,里面q是有位q动健将的?/span>
又得睡觉了,q没写完Q明天l?/span>
因ؓ赶时间去聚会Q所以也无心连Q骑车直奔饭店。老同学好久不见,免不了一些客套寒暄, 2 q时间毕竟太短,大家也没有太大的变化Q没有谁一下飞黄腾辄。席间觥{交错,自不必说。有 2 个研二的师弟Q便吃完带我们四处走赎ͼ首先去看我们毕业后才落成的软g大楼?/span>
q时我的车发挥优势了Q他们得做校内巴士,l好大一圈的Q我沿着一条直U直接骑q去。根据师弟的描述Q来C座银灰色ȝq墙的大楼前Q停好RQ他们还没到Q便在外面{(zhn){(zhn)。五层楼高,挺现代的设计Q对一些细部处理的也不错,有挑収ͼ凹进Q凸出,昑־整个立面Z满。这里插一句:我本U是在这学徏{设计的Q可惜没天赋Q学了个半吊子,只好改行?/span>
{了会,他们才姗姗来q,大家一块进ȝ看。厅很大Q展Z很多学生的成果,Z错的Q有自己开发的工作,有拿 spring+hibernate+velocity 做的目Q有自己做的负蝲均衡服务器。。。。。。二Ҏ(gu)受,一是学校教的还不错Q是在培d生的实际能力Q跟C会接轨Q二是开源Y件深入h心,在校的学生也都在使用了。看了他们的实验室,?/span> dell 的液ӞI间按公司的 cube 方式布置Q大家议比他们的办公环境q好Q于是纷Uh叹,生不逢时Q晚来几q就好了?/span>
得睡觉了Q先写这么多Q明天接着写?/span>
wZ会,的确有点Q就坐vw来。目光所及,前面草地上有只不知名的小鸟,白头黑nQ长长的ַQ正在草中寻虫吃吧,走几步小嘴一啄,ַ也上下颤动,可爱的很。它漫无目的的走着Q大体向我靠q了Q我心中一阵高_qL着它能来到w边Q我伸出手掌让它停在上面。我屏住呼吸Q尽量不弄出一点动作和声音Q只是静静的看着它,ƣ赏它的丽。可它又慢慢走远了,可能发现了我Q头也不回的一摇一摆的往前走厅R小鸟终I是怕h的?/SPAN>
于是我便站vw来。草坪旁Ҏ(gu)一个h工湖Q湖Ҏ(gu)一座叠x_水绕着叠石Q向下流淌到湖中Q倒也别具匠心。叠石不高,上好像能上ȝ样子Q我生性好动,想往上爬。难度不大,但也得手脚ƈ用,看准落脚点,手上抓牢Q很快就站在最高点了。可以俯瞰湖面,波光_粼Q水上还有一些睡Ԍ不由想P“鱼戏莲叶东Q鱼戏莲叶西Q鱼戏莲叶南Q鱼戏莲叶北”的诗句来。但好像没有鱼的动静Q也许这个湖也刚Z久,q未长成吧。湖岸对面一个老者,拿根竹竿在忙活着Q应该不是钓鱼吧Q鱼都没长大呢!带着一丝好奇,我又爬下叠石Q{到对岸去看看?/SPAN>
他旁Ҏ(gu)了个盛水的小盒子Q里面一些非常小的鱼在游着Q我以ؓ是鱼苗呢Q就上去问:“你是要把这些鱼放进湖里吗?”他没抬_旁边又来了几个民工样的hQ也凑上w来Q其中一个问Q“鱼q么,有什么用Q”老者这下答话了Q“我d乌龟。”“小乌龟不吃?yu)鱼吧?/SPAN>…?/SPAN>原来他是用小|兜把可怜的鱼捞上来,然后装回家喂乌龟。我很快走开了,好的心情一下荡然无存。这么小的鱼Q好不容易才在这片池塘出生,却因为某人家里不知道吃不吃它的小乌龟Q被装到盒子里,注定其灭亡的命运。而我只能qL鱼群在莲叶下游过的景象。我忽然惌vZ么我是走开Q而不是将鱼放到湖里去。那样会得罪人,是啊Q“少闲事”的观念已经深入骨髓了。但我也只是xQ头也不回的往公司走去?/SPAN>