2005年8月1日
#
“双百巨献,渠道繁荣”大型渠道推广计划 中国软件企业大全 中国软件产业发展研究报告 软网招聘客户经理 中小型软件公司如何发展渠道? 金仓短信系列产品全面招商 2005中国软件外包商务指南 财务管理软件免费试用 2005第九届软博会招商通知 中国软件社区隆重发布
[2005-7-22]
软件企业什么需要界面设计服务?
美丽的事物常常会让人无法抗拒。这就是为什么产品出色的外观设计对于电脑、汽车、日用品、家具、食品、服装等等几乎所有商品的销售与推广,都有着举足轻重的作用的原因。
同样的道理,对于软件公司来说,软件产品就是他们的商品,而软件界面就是他们产品的外观,界面的美观与否,直接关系到了软件产品的营销成败。
我们可以清楚地看到,微软公司对软件界面设计的重视。请回想一下您在第一次见到win2000时的情景,与nt4.0相比是否惊叹他界面的美观性与易用性?而您如果使用过xp系统,则会被其令人神奇的感官概念而震惊折服!金山公司的金山词霸就是国内软件成功的例子了,从金山词霸3.0到金山词霸2001的变化堪称经典。著名的网页动画制作软件flash从3.0到4.0,仅仅修改了图标和窗体,立即大为增色…
现今世界上成功的软件公司都非常重视软件界面的美化设计工作,因为他们深刻地知道,在激烈的市场竞争中,仅仅有强大的功能是远远不够的,不足以战胜强劲的对手。我们可以相象一下,您在挑选手机的时候,如果有两款手机,性能相同,而第一款比第二款要美观很多,那么您将选择哪一款呢?当然是美观的那一款了。试想,您的客户,也会拿您和您竞争对手的软件做这样的比较的。
现在的软件企业都知道,广告和市场推销活动对市场营销的作用是多么的重要,并不遗余力地打广告、做活动、做推广。但我们知道,这些活动的最终目的,是为了让用户购买并使用软件产品,而用户最终使用的也是您的产品,那么为什么不在软件界面的美观性上多下些工夫呢?在诸如家用电器、汽车、电脑等成熟的市场中,用非常精美的广告去推广一种功能强大却丑陋无比的产品,是一种笑话。然而,这样的笑话在软件行业里却屡见不鲜。这也是像中国足球一样,中国软件业与国外相比较存在的一个很大的差距。
实践证明,各商家只要在产品美观设计方面很小投入,将会有很大产出。其投入产出比,要比在功能领先性开发上的投入大得多。
在用户把软件买回去后,他们和您企业的联系,或者说您企业形象在客户眼中的表现,很大一部分是通过您软件的界面来传达的,那么美观友好的用户界面对于宣传您的企业文化,对于给客户灌输您的企业理念,对于您企业的宣传运做都将是非常有益的。尤其如果您的公司做的是项目承包形式的业务,那么无论是在竞标的时候,还是在项目交付使用以后,美观的界面都会给您的客户以信心和良好的印象。
最好的程序界面就是用户无需去阅读操作手册就知道该如何使用的界面。
原则
1.一致性
如果你可以在一个列表的项目上双击后能够弹出对话框,那么应该在任何列表中双击都能弹出对话框。要有统一的字体写号、统一的色调、统一的提示用词、窗口在统一的位置、按钮也在窗口的相同的位置。
2.设置标准并遵循它
可以参数一些工业标准,如IBM的界面设计规范或MS的设计规则,它提供了90%你所需要的规范。
3.设置向导
如果用户使用了一个功能后,不知道如何做下一个,他们就会放弃。如果*作流程和手工工作流程一致,用户就会努力去完成它。最好的方式来引导用户就是在桌面上设置一个流程向导。
4.提示信息必须恰当且规范
提示信息必须容易理解并且口径统一,比如“您输入了错误的数据”、“用户编码不能超过8位”。一致的措词,提示信息还应该出现在一致的位置,如弹出提示窗口、窗口的上方或窗口的下方。对用户的称呼应该统一,比如有时提示“用户输入了错误的数据”,有时提示“您输入了错误的数据”,有时又提示“纳税人输入了错误的数据”,这样会使用户无所适从。
5.借鉴好的程序
多了解同类软件的界面,并加以分析与了解,直到能够区别好的用户界面与差的用户界面。但不能够机械的模仿别人的界面。
6.功能的统一
有一些很常用的功能,如添加、修改、删除、查看,同一个软件中,这些功能应该有相同的*作方法。举个例子,几乎我们所有的程序中都有*作员管理这一块功能,但没有一个功能最完善统一的模块可供调用,结果虽然程序员间相互复制这个模块,但经过修改后,每个程序的*作管理都不相同。
7.变灰的功能
有时有些功能不可用,最好不要删除这些按钮若项目,而是使他们变灰为不可用状态,这样有助于用户理解整个程序的功能。
8.默认按钮
使用不具有破坏功能的默认按钮,在每个窗口中,为了方便用户,一般都定义了一个默认按钮,当用户敲回车键时可以快速执行某功能,但有时用户会不小心按错回车键,这时候执行了默认功能后,不能产生不可还原的*作,比如删除或保存。
2005年6月5日
#
网站规划12要12不要
前面我们分别讨论了站点建设的一些个基本技巧。这里,我再扼要地归纳一下,特别希望给初入门者提个醒、开个单子,叫网站规划“12要12不要”。
十二“要”:
1. 网站导航要清楚、简捷,回主页的标识要易找;
2. 页面标题、营销主题要清晰易辨;
3. 主页要明确报出自己姓名、机构(商号)、或者你的业务;
4. 所有页面的登录速度要保证快捷,页面容量最好在50K以下;
5. 牢记你的页面效果在不同的电脑、显示屏、浏览器上会变脸,所以上网前要多方测试;
6. 要特别“关照”文本阅读起来是否方便;
7. 设计风格要贯穿如一,体现在所有页面;
8. 要发挥 ALT 标签的功能,尽量加速页面调用速度;
9. 定期核实链接的正确性;
10. 要设置留言簿或者公告板,而且对来客公开;
11. 要独特、要有个性;
12. 要展现在线消费的魅力,产品、服务要有特色
十二“不要”:
1. “欢迎访问本站”?免了吧!
像这样没有意义的玩艺儿,包括商号的重复、文字游戏,或者其他自我标榜的东西,是一种让读者厌烦的骚扰。你的主页甚至每一个页面,开始都应该是一个醒目、引人的标题,它传达给读者的信息是:如果你阅读本站(页),你会有如何如何的受益。 2. “建设中”的臭牌子别挂
相信有一定网龄的读者都有过这样的经历:有的站点介绍说得像朵花儿似的,逗得你忍不住想进去看看,主页也很漂亮,有的甚至次级页面也很像回事儿,等你一层层跟到底层页面,对方却告诉你:“对不起,本页/栏目/站点正在建设中,请稍后再来”。碰到这种不负责任的站点,你说,谁能不顿生一股无名火?
人家的上网时间、金钱贵得很,你敢随随便便拿人家开涮?还想赚人家的钱?真是做清秋大梦!
3. 框架结构完美无比吗?错。
在准备使用框架结构之前,请你注意这样的事实:很多老一点的浏览器不支持框架结构,很多搜索引擎也不能正常检索框架结构的网页。框架结构固定地挤占珍贵的网页空间,如果做得不合适,读者还得使用滚动条,才能看到框架结构里的文本和链接。所以,考虑框架结构时要慎重。
4. 主页不要又臭又长
有的网站主页拉得老长老长,让读者握着鼠标翻半天。还是那句话:别跟读者为难,凡事从人家的角度多想想。一般来说,主页长度应限定在三个整屏以内。容不下?多分几个页面就是了。注意提供链接之外,还得好好组织一下语言,吸引人家继续点击那些页面。
5. 不要有外引链接,特别在首页
道理不言自明,因为你希望别人在自己的站点逗留,而不是从你的首页上一走而过。如果有些外链接必不可少,那也该考虑尽量放得深一些的页里,让人家在浏览了你站的重要页面后,再送人家走也不迟呀!
链接不要散布在整页文本中,最好列单归为一处。
6. 不要老是“我”、“我们”的
“我”“我们”或你商号的反复堆砌,会把读者憋跑的。相反,你该多用“你”“你们”。因为人家最感兴趣的,还是能从你的站点上得到些什么有价值的东西,而不是你本身。
7. 不要出现错别字、病句
这条禁忌似乎人人知道,但就是有很多很多站点有这些毛病。原因主要是做这些站点的人,大多是技术出身,以为网站就是展示技术能力的场所,实际上,网站迄今为止的基本功用应该是信息传播,应该比照媒体、出版的专业规范来,应该由专业编辑来处理。任何事情总有利弊两面,互联网技术的普及可以让每个人可以自由地创办自己的“媒体”,同时也给互联网世界增添了无数水准低下、制作粗劣的东西。 8. 靠“国家一级企业”压人?别!
很多网站主页一开头就唠叨:“xxx公司是位于北京的国家一级企业,注册资金1.5亿......”你以为读者会关心这些枯燥的东西吗?你以为炫耀“国家一级企业”人家就会乖乖地买你的帐?你要想想,这些信息和你要营销的产品或服务有关系吗?如果你觉得这些信息很必要,建议放在“关于我们”之类的页面里,着眼点也应该是这些信息是否和读者有关、人家会不会感兴趣。 同样的禁忌还有:“本站获什么什么奖”。
就像现实世界里的“大奖”满天飞一样,网上各种授奖的噱头也层出不穷。绝大多数情况下,这些个阿猫阿狗奖项一文不值。别把这些自我标榜的东西放上去,占地方,还不如换上读者真正有兴趣了解的内容。
9. 不要躲在幕后
堆砌一些读者根本不感兴趣的自我信息,会让人逃之夭夭,相反,有的网站高深莫测,不知何方神圣,让读者狐疑不定,自然不敢贸然掏钱。这个毛病在邮件营销部分已经涉及过了,这里再强调几句。 要最大限度地增加在虚拟世界的可信度,你就必须让人家知道你的详细情况,这和自娱性个人站点截然不同。你最好能在每个页面都放上你的详细联系办法,包括实际邮址(最好不要用多少多少号信箱)、所在地、电话号码(别用语音信箱)、传真号码,当然,还得有你的“热线”电子邮箱地址(别用 webmaster!)
10. 不要有错误链接、出不来的图像
其原因显而易见,就不赘述了,遗憾的是这种毛病遍网都是,您多注意吧。
11. “免费”招牌不要食言 前面提到过,免费提供一些与你的经营业务相关的东西,是一种很有效的营销手段。但你要认真规划,玩真的才行,要不会砸你的牌子。很多站点号称提供什么什么免费的咨询、免费的信息,结果根本不兑现,或者拿“建设中”挡着。
12. 忌用插件、Java脚本、跳出式窗口
你认为很“酷”的东西,大多数读者不一定这么看,他们不会花时间来下载插件(plug-ins),只会走人。Java脚本、跳出式窗口也都是这样让人烦。这些毛病的根源都是一个:以自我为中心,不管别人。
类似的忌讳还包括:一般不要嵌入音频文件;不要使用闪烁字体、画面效果,很碍眼;不要使用闹腾的背景,不要使用与文本颜色不协调的背景;不要放无用的大图,不要有旋转的地球之类的俗套东西,商号徽标不要过大。
一个网站的成功与否与建站前的网站规划有着极为重要的关系。在建立网站前应明确建设网站的目的,确定网站的功能,确定网站规模、投入费用,进行必要的市场分析等。只有详细的规划,才能避免在网站建设中出现的很多问题,使网站建设能顺利进行。
网站规划是指在网站建设前对市场进行分析、确定网站的目的和功能,并根据需要对网站建设中的技术、内容、费用、测试、维护等做出规划。网站规划对网站建设起到计划和指导的作用,对网站的内容和维护起到定位作用。
网站规划书出应该尽可能涵盖网站规划中的各个方面,网站规划书的写作要科学、认真、实事求是。
网站规划书包含的内容如下:
一、建设网站前的市场分析
1、相关行业的市场是怎样的,市场有什么样的特点,是否能够在互联网上开展公司业务。
2、市场主要竞争者分析,竞争对手上网情况及其网站规划、功能作用。
3、公司自身条件分析、公司概况、市场优势,可以利用网站提升哪些竞争力,建设网站的能力(费用、技术、人力等)。
二、建设网站目的及功能定位
1、为什么要建立网站,是为了宣传产品,进行电子商务,还是建立行业性网站?是企业的需要还是市场开拓的延伸?
2、整合公司资源,确定网站功能。根据公司的需要和计划,确定网站的功能:产品宣传型、网上营销型、客户服务型、电子商务型等。
3、根据网站功能,确定网站应达到的目的作用。
4、企业内部网(Intranet)的建设情况和网站的可扩展性。
三、网站技术解决方案
根据网站的功能确定网站技术解决方案。
1、采用自建服务器,还是租用虚拟主机。
2、选择操作系统,用unix,Linux还是Window2000/NT。分析投入成本、功能、开发、稳定性和安全性等。
3、采用系统性的解决方案(如IBM,HP)等公司提供的企业上网方案、电子商务解决方案?还是自己开发。
4、网站安全性措施,防黑、防病毒方案。
5、相关程序开发。如网页程序ASP、JSP、CGI、数据库程序等。
四、网站内容规划
1、根据网站的目的和功能规划网站内容,一般企业网站应包括:公司简介、产品介绍、服务内容、价格信息、联系方式、网上定单等基本内容。
2、电子商务类网站要提供会员注册、详细的商品服务信息、信息搜索查询、定单确认、付款、个人信息保密措施、相关帮助等。
3、如果网站栏目比较多,则考虑采用网站编程专人负责相关内容。 注意:网站内容是网站吸引浏览者最重要的因素,无内容或不实用的信息不会吸引匆匆浏览的访客。可事先对人们希望阅读的信息进行调查,并在网站发布后调查人们对网站内容的满意度,以及时调整网站内容。
五、网页设计
1、网页设计美术设计要求,网页美术设计一般要与企业整体形象一致,要符合CI规范。要注意网页色彩、图片的应用及版面规划,保持网页的整体一致性。
2、在新技术的采用上要考虑主要目标访问群体的分布地域、年龄阶层、网络速度、阅读习惯等。
3、制定网页改版计划,如半年到一年时间进行较大规模改版等。
六、网站维护
1、服务器及相关软硬件的维护,对可能出现的问题进行评估,制定响应时间。
2、数据库维护,有效地利用数据是网站维护的重要内容,因此数据库的维护要受到重视。
3、内容的更新、调整等。
4、制定相关网站维护的规定,将网站维护制度化、规范化。
2005年5月8日
#
1. 择善人而交, 择善书而读, 择善言而听, 择善行而从。
2. 一个人的快乐,不是因为他拥有的多,而是因为他计较的少。
3. 生气,就是拿别人的过错来惩罚自己。原谅别人,就是善待自己。
4. 未必钱多乐便多,财多累己招烦恼。清贫乐道真自在,无牵无挂乐逍遥。
5. 静坐常思己过,闲谈莫论人非,能受苦乃为志士,肯吃亏不是痴人,敬君子方显有德,怕小人不算无能,退一步天高地阔,让三分心平气和,欲进步需思退步,若着手先虑放手,如得意不宜重往,凡做事应有余步。持黄金为珍贵,知安乐方值千金,事临头三思为妙,怒上心忍让最高。切勿贪意外之财,知足者人心常乐。若能以此去处事,一生安乐任逍遥。
6. 处事不必求功,无过便是功。为人不必感德,无怨便是德。
7. 平安是幸,知足是福,清心是禄,寡欲是寿。
8. 人之心胸,多欲则窄,寡欲则宽。
9. 宁可清贫自乐,不可浊富多忧。
10.受思深处宜先退,得意浓时便可休。
11.势不可使尽,福不可享尽,便宜不可占尽,聪明不可用尽。
12.滴水穿石,不是力量大,而是功夫深。
13.平生不做皱眉事,世上应无切齿人。
14.须交有道之人,莫结无义之友。饮清静之茶,莫贪花色之酒。开方便之门,闲是非之口。
15.多门之室生风,多言之人生祸。
16.世事忙忙如水流,休将名利挂心头。粗茶淡饭随缘过,富贵荣华莫强求。
17.“我欲”是贫穷的标志。事能常足,心常惬,人到无求品自高。
18.人生至恶是善谈人过;人生至愚恶闻己过。
19.诸恶莫做,众善奉行,莫以善小而不为,莫以恶小而为之。
20.莫妒他长,妒长,则己终是短。莫护己短,护短,则己终不长。
21.做事不必与俗同,亦不宜与俗异。做事不必令人喜,亦不可令人憎。
22.世上有两件事不能等:一、孝顺。二、行善。
23.存平等心,行方便事,则天下无事。怀慈悲心,做慈悲事,则心中太平。
24.心量狭小,则多烦恼,心量广大,智慧丰饶。
25.平生无一事可瞒人,此是大快。
26.“恶”,恐人知,便是大恶。“善”,欲人知,不是真善。
27.扶危周急固为美事。能不自夸,则其德厚矣!
28.遇顺境,处之淡然,遇逆境,处之泰然。
29.是非天天有,不听自然无。
30.五官刺激,不是真正的享受。内在安祥,才是下手之处。
31.人为善,福虽未至,祸已远离;人为恶,祸虽未至,福已远离。
32.不妄求,则心安,不妄做,则身安。
33.不自重者,取辱。不自长者,取祸。不自满者,受益。不自足者,博闻。
34.积金遗于子孙,子孙未必能守;积书于子孙,子孙未必能读。不如积阴德于冥冥之中,此乃万世传家之宝训也。
35.积德为产业,强胜于美宅良田。
36.能付出爱心就是福,能消除烦恼就是慧。
37.身安不如心安,屋宽不如心宽。
38.罗马人凯撒大帝,威震欧亚非三大陆,临终告诉侍者说:“请把我的双手放在棺材外面,让世人看看,伟大如我凯撒者,死后也是两手空空。
39.梦中冥冥有乐趣,觉后空空无大千。
40.儿孙自有儿孙福,莫为儿孙做远忧。
41.情生智隔。
42.征服世界,并不伟大,一个人能征服自己,才是世界上最伟大的人。
43.把自己的欲望降到最低点,把自己的理性升华到最高点,就是圣人。
44.嫉妒别人,仇视异己,就等于把生命交给别人。
45.一个人如果不被恶习所染,幸福近矣。
46.诽谤别人,就象含血喷人,先污染了自己的嘴巴。
47.恨别人,痛苦的却是自己。
48.人之所以平凡,在于无法超越自己。
49.大肚能容,断却许多烦恼障,笑容可掬,结成无量欢喜缘。
50.改变自己,是自救,影响别人,是救人。
51.谎言像一朵盛开的鲜花,外表美丽,生命短暂。
52.唯其尊重自己的人,才更勇于缩小自己。
53.人不求福,斯无祸。人不求利,斯无害。
54.智者顺时而谋,愚者逆时而动。
55.常常责备自己的人,往往能得到他人的谅解。
56.见己不是,万善之门。见人不是,诸恶之根。
57.学一分退让,讨一分便宜。增一分享受,减一分福泽。
58.念头端正,福星临,念头不正,灾星照。
59.善人行善,从乐入乐,从明入明。恶人行恶,从苦入苦,从冥入冥。
60.心慈者,寿必长。心刻者,寿必促。
61.骨宜刚,气宜柔,志宜大,胆宜小,心宜虚,言宜实,慧宜增,福宜惜,虑不远,忧亦近。
62.苦口的是良药,逆耳必是忠言。改过必生智慧。护短心内非贤。
63.你目前拥有的,都将随着你的死亡而成为他人的。那为何不现在就布施给真正需要的人呢?
64.人之所以痛苦,在于追求错误的东西。
65.人生最大的敌人是自己。
人生最大的失败是自大。
人生最大的愚蠢是欺骗。
人生最可怜的是嫉妒。
人生最大的错误是自卑。
人生最大的痛苦是痴迷。
人生最大的羞辱是献媚。
人生最危险的境地是贪婪。
人生最烦恼的是争名利。
人生最大的罪过是自欺欺人。
人生最可怜的性情是自卑。
人生最大的破产是绝望。
人生最大的债务是人情债。
人生最大的罪过是杀生。
人生最可恶的是淫乱。
人生最善良的行为是奉献。
人生最大的幸福是放得下。
人生最大的欣慰是布施。
人生最大的礼物是宽恕。
人生最可佩服的是精进。
人生最大的财富是健康。
人生最高的享受是学佛。
人生最大的快乐是念佛。
66.心好命也好,富贵直到老。命好心不好,福转为祸兆。心好命不好,祸转为福报。心命具不好,遭殃且贫夭。心可挽乎命,最要存人道。命实造于心,祸福为人招,信命不修心,阴阳恐虚矫。修心亦听命,天地自相保。
67.寡言养气,寡事养神,寡思养精,寡念养性。
68.改变别人,不如先改变自己。
69.感激伤害你的人,因为他磨练了你的心志。 感激欺骗你的人,因为他增进了你的见识。 感激鞭打你的人,因为他消除了你的业障。 感激遗弃你的人,因为他教导了你应自立。 感激绊倒你的人,因为他强化了你的能力。 感激斥责你的人,因为他助长了你的定慧。 感激所有使你坚定成就的人。
70.凡夫迷失于当下,后悔于过去.圣人觉悟于当下,解脱于未来。
71.节欲戒怒,是保身法,收敛安静,是治家法,随便自然,是省事法,行善修心是出世法。守此四法,结局通达。
72.人生就象一场戏,因为有缘才相聚。相扶到老不容易,是否更该去珍惜。为了小事发脾气,回头想想又何必。别人生气我不气,气出病来无人替。我若气死谁如意? 况 且伤神又费力。邻居亲不要比,儿孙琐事由他去,吃苦享乐在一起,神仙羡慕好伴侣。
73.忍人所不能忍,行人所不能行。名:“大雄”。故名:“大雄宝殿”。即佛也。
74.忍耐好,忍耐是奇宝。一朝之念不能忍,斗胜争强祸不小。忍气不下心病生,终生将你苦缠绕,让人一步有何妨,量大福大无烦恼。
75.寒山问拾得:世人有人谤我、欺我、辱我、笑我、轻我、jian我,我当如何处之?拾得曰:只要忍他、避他、由他、耐他、不要理他,再过几年,你且看他。
76.忍一时,风平浪静,退一步,海阔天空。
77.恶是犁头,善是泥,善人常被恶人欺,铁打犁头年年坏,未见田中换烂泥。 78.气是无明火,忍是敌灾星,但留方寸地,把于子孙耕。
79.你能把“忍”功夫做到多大,你将来的事业就能成就多大。
80.屈己者,能处众,好胜者,必遇敌。
81.事不三思总有败,人能百忍自无忧。
82.是非以不辩为解脱,烦恼以忍辱为智慧,办事以尽力为有功。
83.万事得成于忍,与其能辩,不如能忍。
84.伤人之语,如水覆地,难以挽回。
85.时时好心,就是时时好日。
86.话多不如话少,话少不如话好。
87.得理要饶人,理直气要和。
88.不怕事多,只怕多事。
89.真正的布施,是把烦恼、忧虑、分别、执着、通通放下。
90.一念放下,万般自在。
91.学佛就是学做人。佛法,就是完成生命觉醒的方法,修行,就是修正自己的行为、思想、见解。
92.圣人求心,不求佛;愚人求佛不求心。
93.凡夫转境不转心。圣人转心不转境。
94.知“因果”即知进退。知佛法,即得开心果。
95.欲知过去世,今生受者是。欲知来世果,今生做者是。
96.若真修道人,不见世间过。
97.智者知幻即离,愚者以幻为真。
98.世间有为法,如梦幻泡影,如露亦如电,应作如是观。
99.学佛的孩子不变坏,学佛的老人不痴呆,学佛的少年永不败。
100.不惜光阴过时悔,黑发不学白发悔。酒色赌博致祸悔,安不将息病时悔。官行贿赂致罪悔,富不勤俭贫时悔。不孝父母老时悔,遇难不帮有事悔。动不三思临头悔,盲目草率错时悔。
2005年5月6日
#
[转贴]一名程序员的面试感想
枣子的面试感想(程序员生涯)
2002-10-16
做为一名大四的学生,我面试过不少的单位,有成功的也有失败的,但是对我来说所有的失败在某种意义上都是一种成功,特别是我下面写的这些,写这篇文章的时候,我已经签了南京的一家软件公司,但是想起今年2月21日我面试苏州台湾的IT公司的经历联想到我们现在学习编程的一些情况我真的深有感触,这次面试使我深深的体会到了失败但也收获了很多。
我要说的将分成三部分:
1.是我面试的具体经过
2.是由面试想到的
3.现今我应该做的。
当然这些话很大程度上是我个人的意见,不可能完全得到大家的赞同,所以在某些观点上如果哪位朋友觉得跟我的有很大出入,请不要介意,也不要对我攻击,就当我没有说过,欢迎和我联系共同探讨这些问题!
我的EMAIL:wutao8@263.net
1.面试经过
大约在年前我接到了台湾瑞晟(Realtek)苏州公司的面试通知,通知我2月21日到苏州工业园区面试,接到面试后的几天我把一些专业
课温习了一遍,特别是C++和数据结构,由于大学几年里,我一直专研这些方面,加上通过了高级程序员的考试,对于一些常用的算法
我差不多也达到了烂熟于胸的地步,当时的感觉是如果问了我这些方面的问题我应该是没有问题的!
21日那天我被安排在4:30面试,由一位技术人员单独给我面试,在问了一些简单的问题之后他给我出了一道编程题目,题目是这样的:
(由于具体面试的题目比较烦琐,我将其核心思想提取出来分解成了两个独立的简单的问题,有可能问题分解的不当,请大家见谅,实际面试了一个的问题但比其复杂很多,而且涉及一些高等数学变换)
1) 写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n
哼,我的心里冷笑一声!没想到这么简单,我有点紧张的心情顿时放松起来!
于是很快我给出我的解法:
long fn(long n)
{
long temp=0;
int i,flag=1;
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
for(i=1;i<=n;i++)
{
temp=temp+flag*i;
flag=(-1)*flag;
}
return temp;
}
搞定!当我用期待的目光看着面试官的时候,他微笑着跟我说,执行结果肯定是没有问题!但当n很大的时候我这个程序执行效率很低,
在嵌入式系统的开发中,程序的运行效率很重要,能让CPU少执行一条指令都是好的,他让我看看这个程序还有什么可以修改的地方,
把程序优化一下!听了这些话,我的心情当时变的有点沉重,没想到他的要求很严格,之后我对程序进行了严格的分析,给出了改进了的方案!
long fn(long n)
{
long temp=0;
int j=1,i=1,flag=1;
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
while(j<=n)
{
temp=temp+i;
i=-i;
i>0?i++:i--;
j++;
}
return temp;
}
虽然我不敢保证我这个算法是最优的,但是比起上一个程序,我将所有涉及到乘法指令的语句改为执行加法指令,既达到要题目的要求而且
运算时间上缩短了很多!而代价仅仅是增加了一个整型变量!但是我现在的信心已经受了一点打击,我将信将疑的看者面试官,他还是微笑着
跟我说:“不错,这个程序确实在效率上有的很大的提高!”我心里一阵暗喜!但他接着说这个程序仍然不能达到他的要求,要我给出更优的
方案!天啊!还有优化!我当时真的有点崩溃了,想了一会后,我请求他给出他的方案!然后他很爽快的给出了他的程序!
long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
if(0==n%2)
return (n/2)*(-1);
else
return (n/2)*(-1)+n;
}
搞笑,当时我目瞪口呆,没想到他是这个意思,这么简单的代码我真的不会写吗,但是我为什么没有往那方面上想呢!他说的没有错,在n很大很大的时候这三个程序运行时间的差别简直是天壤之别!当我刚想开口说点什么的时候,他却先开口了:“不要认为CPU运算速度快就把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做,因为CPU是为用户服务的,不是为我们
程序员服务的!”多么精辟的语言,我已经不想再说什么了!接着是第二个问题:
2). 他要求我用一种技巧性的编程方法来用一个函数实现两个函数的功能n为如:fn1(n)=n/2!+n/3!+n/4!+n/5!+n/6!
fn2(n)=n/5!+n/6!+n/7!+n/8!+n/9! 现在用一个函数fn(int n,int flag)实现,当flag为0时,实现fn1功能,如果flag为1时
实现fn2功能!他的要求还是效率,效率,效率!说实在话,如果我心情好的话我应该能给出一种比较好的算法,但我那时真的没有什么心思
再想了,我在纸上胡乱画了一些诸如6!=6*5!的公式后直截了当的跟他说要他给出他的答案!面试官也没有说什么,给出了他的思路:
定义一个二维数组 float t[2][5]存入{{2!,3!,4!,5!,6!},{5!,6!,7!,8!,9!}}然后给出一个循环:
for(i=0;i<6;i++)
{
temp=temp+n/t[flag][i];
}
最后得到计算值!呵呵,典型的空间换时间的算法!
这些总共花了50分钟的时间,还有十分钟我就跟他很随意的聊聊天,聊了一些编程以及生活的问题,那时的我已经很放松了,
因为我知道这次面试结果只有一个:失败。5:30的时候面试官要我等通知,于是我离开了他们公司。这就是面试的整个经过!
2.由面试想到的
真的是很失败啊!我记得那天下好大的雨,气温也很低,我边走边想,从5:30一直走到7:30,全身都湿透了,又冷又饿,但是我只是一直走,脑子里面充满了疑惑,我也想让雨把自己淋醒!看到这里有些朋友可能觉得那些面试题目不算什么如果让自己做的话肯定能全部答对,我肯定相信你,因为我从未怀疑过中国程序员的能力,我认为中国有世界上最好的程序员,我也从未认为自己是高手,所以我做不出来不代表中国程序员比台湾或者别的地方的程序员差,所以我就从我的角度,我的所见所想来谈一些感想:
不错全世界都有优秀的程序员,中国也不例外,但是我疑惑的是:到底中国和台湾或者国外的优秀的程序员的比例到底是多少?台湾我不知道,中国100个程序员里有几个是优秀的呢?我根本算不上,从上面的表现就足以说明一切了!是1个?5个?10个?50个?这个数字我不敢乱猜,恐遭网友一顿痛骂,那么我们国内有多少人学习计算机呢?拿我们学校来说,计算机97级4个班,98级5个班,99级10个班,2000级17个班,人多了,老师怎么办?我们学校的做法是让研究生上课,然后呢?补考一抓一大把,大把大把的补考费落入了学校的口袋,还说现在的学生素质低!真是好笑,我都不知道学校这么做是为了什么,为国内培养大量的程序员吗?学生们能真正学到计算机知识吗?好了,我敢讲,在我们学校学习编程学生和优秀程序员(注意我指的是优秀,只会编几个糟烂程序的人算不上)的比例应该是100:0.1
在这种比例下虽然我们中国学习编程的人铺天盖地,但是想想有多少个人能真正为中国软件业发展作出贡献,有多少人能真正写出优秀的程序名扬海外!
我从学习编程以来,不管是自学还是老师指导,从来都是解决问题就好,编出程序来就行,我的疑惑是:我们有真正的强调过程序的效率,程序的质量吗?我们有仔细分析过我们写的东西,看看有没有可以改进的地方,看看有没有简单的方法来达到同样的目的呢?我问心自问,我发现,我从来没有对我写出来的程序进行过优化,最多就是进行详细的测试,然后Debug,但是这就足够了吗?这些天我偶尔发现我曾经写过的一个游戏,那是一年前我刚加入www.vcroad.net做为其中一员时候,感?..热纾簐oid chushihua(),好多没有必要的变量,可以用简单语句完成工作的我使用华丽的算法,大量使用全局变量.....,说不好听的话,六百多行的程序除了能运行之外就是一陀屎!如果一年前我能听到一些反面意见的话,大概我能早一点觉悟,但是自从原代码在网站发布以来听到的都是赞美之词,没有一个人向我提出程序改进的意见,这又说明了一个什么问题呢?很值得思考啊!
还有一个疑惑是:我们说的和做的真的一样吗?我在学校的时候曾经受学院指派承办过一个计算机大赛,请了一个老师出决赛的题目,主要是一些算法题目,这个老师可能是我上大学以来唯一敬佩的老师了,从程序调试到打分,对于每个程序都仔细分析其时间效率和空间效率,然后综合打分,四十个人的卷子,老师从下午三点一直调试到晚上十点,在有些写的精彩的语句后还加上批注。我真是高兴很遇到这样的老师并且和他做深入的交流,但在事后,却发生了一件不愉快的事,在比赛中获得第二名的学生找到我,说他程序全部调试成功应该给他满分,并且应该得第一,我说不过他,最后调出了他的原程序和第一名的原程序对比,不错,两个程序都运行的很好,这时,那个同学开口了:“我的程序写的十分简捷明了,仅仅数行就完成了题目要求,而他的却写了一大堆,为什么给他的分多过给我的分。”我当时很是气愤,如果不是老师负责的话,那么现在第一名和第二名的位置真的要互调了,拜托,不是程序的行数越少程序的质量就越高,我记得我跟他大谈这方面的道理,最后说服他了!哈哈,但是我,只能说说而已,我不知道还有多少人一样,说起来头头是道,但心里却压根就从未重视过它!
3.我打算做的!
其实那天我想到的远不止上面那么多,但是我不想再说了,因为我猜想看这篇文章的网友大概都有一肚子的感想,一肚子的抱怨,借用这篇文章发泄可不是我想达到的目的,在上面我把自己骂的一文不值也不是妄自菲薄,但是在某些方面我真的做错了,或者说是偏离了正确方向,现在是矫正方向和重整旗鼓的时候了,就象我前面说过的,我相信中国有世界上最好的程序员,我也相信我的水平不会一直保持现状,我现在就收拾起牢骚真正的实干起来!
真的很巧,就写到这里的时候我在网上偶尔发现了这篇手册,我不知道这预示着什么,但是我想如果我照下面这个基本原则一直踏实做下去,我一定会实现我的理想---一名优秀的软件设计师
(下面这些文字不是我的原创,是我偶尔在网上发现的,我真的很幸运能看到这些,这篇文章也随着下面的文字而结束,我真心的希望您能从这篇文章中得到启发,这篇文章欢迎大家随意转载,您可以不写作者是谁,但是请您写上www.vcroad.net原创,谢谢您的支持)
作者:金蝶中间件公司CTO袁红岗
不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。
1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。
2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。
3. 最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。
4. 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。
5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
6. 多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。
7. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。
8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming is 99 weat and 1ffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。
这些是我这几年程序员生涯的一点体会,希望能够给大家有所帮助。
2005年4月6日
#
七年IT奋斗纪实及感悟
这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能够为国内IT的发展尽自己一份微薄的力量。最近看到很多学生朋友和我当年一样没有方向 ,所以把我的经历写出来与大家共勉,希望能给刚如行的朋友们一点点帮助。 一转眼我在IT行业学习工作已经七年多了,这期间我做过网页,写过MIS、数据库,应用程序,做过通信软件、硬件驱动、协议栈,到现在做操作系统内核和IC相关开发,这中间走了很多弯路,也吃了不少苦。
我上的是一个三流的高校,就连同一个城市的人多数都不知道。因为学校不好也就没有指望能靠学校名气找一个好工作。所有的希望都寄托在自己的努力上了,大一开学前的假期我就开始了学习,记得我买的第一本书是《计算机基础DOS3.0》,大家别吓着了,其实当时已经普及了DOS6.22了,只是我在书店里看到了DOS4.0,5.0,6.0的书,以为像英语那样是第四、五、六册,记得当时到处找DOS1.0,现在想想也幸好我没有找到:)开学前我学完了PASCAL,那时既没有计算机也没有人可以请教,我连程序是什么的概念都没有, 只好死记硬背代码,然后拿纸写,我一直到大三才有了一台486,在这之前用纸写了多少程序我也记不清楚了,只知道最长的一个我拿A4大小的草稿纸写了30多页,我的C语言、C++ 、VC都是在这样的条件下入门的。所以说条件是可以克服的,希望我的经历多少给条件艰苦的同学们一点信心。
第一次上机是在我姐夫的机房,我的心情激动的无与伦比,但是一上机我立刻傻了眼,他们用的是英文版的Win3.1,我的那点DOS知识都见了鬼,上机提心吊胆的一阵瞎摸,一不小心把Word弄成了全屏,怎么都还不了原,当时真是心急如焚,我以为机器被我弄坏了。第一个C语言程序,就是那个经典的HelloWorld,我调了几个星期,上机机会非常少,也没有书告诉我开发环境(TC2.0)需要设置,而且开始我都不知道有编译器,我甚至自作聪明把写好的程序扩展名从.c改成.exe,结果可想而知。大一学完了C、X86的汇编、数据结构、C++。由于精力都花在自学上了,大一下四门课挂了彩,三类学校就是这点好,挂上一二十门也照样毕业。不过扯远点说,我那么刻苦都及不了格,可见我们国家的计算机教育有多死板。
大二准备学VC和BC,当时难以取舍,后来选了VC,不为别的,只为书店里两本书,VC 那本便宜6块钱。我的努力在班上无人能及,学的日夜不分,大三有了计算机后更是如此, 很多次父亲半夜教训我说我不要命了,我一直觉得自己基础差,记忆又不行,条件也不好 ,所以觉得只有多花点时间才能赶上别人。居然后来有许多朋友说我有学计算机的天赋, 让我哭笑不得。我用的是486,16M内存,1G硬盘,当时同学们的配置都是P166MMX,我安装 一个Windows NT4.0需要一个通宵,编译一个BC5.0向导生成的程序需要近两个小时,我的显示器是个二手的,辐射非常大,开机屏幕冒火花,看起来很酷的:),有一次程序写的太久,觉得怎么白色的编辑器背景变成了紫色,以为显示器坏了,后来才发现眼睛不行了,不过说来也奇怪,到今天我的视力还能保持1.5,真是个奇迹。但是就是那台破机器陪伴了我两年,让我学会了VC、Delphi、SQLServer等。后来那台机器给我阿姨打字用,据她说一天她正打的开心,一股青烟夹着火苗从显示器钻出来,之后它才寿终正寝。
大三假期找了个机会在一个计算机研究所实习,与其说实习不如说是做义工,工作了两个月一分钱没有拿。但是这两个月对我的发展帮助很大,让我早一步了解了社会,刚去的时候我当然是一窍不通,在那里我熟悉了网络,学会了Delphi和Oracle。由于工作很认真, 得到了比较好的评价,在一位长者的引荐下,我开始和他们一起做项目,这使我在大三大四就有了自己的收入,大四又找了两家MIS公司兼职,虽然钱不多,但是在学生期间有1000多的收入我已经非常满足了,我终于用自己赚的钱把计算机换了。大四下开始找工作,这时我的工作经验已经比较多(当然现在想想非常幼稚),开始听父母的想去那个研究所, 实习过那个部门也希望我能去,但是不知道为什么最后不了了之,这种单位就是比较官僚 ,我一气之下就到了我兼职的一个公司做MIS的TeamLeader。在大三到毕业一年的时间,做过了各种MIS,从煤气、烟厂、公安、铁路、饮食到高校,什么有钱做什么,工作也很辛苦 ,经常加班和熬通宵,从跟客户谈需求到设计、编码、测试、交付都要上。那时觉得很有成就感,觉得自己还不错,现在想想真是很肤浅。
刚走上工作岗位的学生很容易被误导,各种开发工具让人眼花缭乱,同时也觉得很受 公司器重,但这样工作永远是一个低层次的开发者。不要跟我说什么系统分析有多么多么重要,多么多么难。你以为自己跟用户谈需求做设计就是系统分析和设计了吗,国内又有几个公司能够做的很到位很规范?我是ISO9000内审员,也在Rational公司受过多次培训,拿了4个证书,还有一个公司让我去做CMM。这些我听过很多,但是很多事情到国内就变了性质,一个公司不是通过了ISO9000或者CMM就能规范了,我现在在一家有几十年历史的外企工作,里面的管理不是一般国内企业能及的。作为一个毕业不久以前没有步入过社会的学生,几乎不可能在很短的时间掌握系统分析和设计,面向对象、UML只是一个工具,关键是人本身的思想,不是说你熟悉了C++、Rose就能够做出好的设计,相反如果你具备了很高的素质,你可以用C写出比别人用C++更加模块化的程序。
话说远一些,国内软件开发行业有一个怪圈,很多人觉得VC > Delphi > VB,真是很搞笑。这几个软件我都做过开发,说白了他们都是工具,应该根据应用的需要选择采用哪个,而不是觉得哪个上层次。如果你因为用某个开发工具很有面子而选择的话,只能说明你很浅薄。如果说层次,那么这些工具都不上层次,因为它们用来用去都是一些系统的API,微软的朋友不会因为你记住他们多少个API或者多少个类就会觉得你很了不起,你永远只是他们的客户,他们看重的是你口袋里的银子。我也做过系统内核,我也封装过很多API,同样我也不会看重那些使用这些API做二次开发的客户,除非他能够作出自己独到的设计。
至于有人认为C++ > C那更是让人笑掉大牙,不妨你去打听一下,现在有几个操作系统内核是用C++写的,又有几个实时系统用的是C++,当然我也不是说C++不好,但是目前的内核和实时系统中C++还无法与C匹敌,至于说C++适合做应用系统的开发那是另外一回事。所以我的观点是不在于你用什么工具和语言,而在于你干什么工作。你的设计体现了你的技术层次。
这样干了一年我觉得非常苦闷,做的大多数都是熟练工种的活,个人技术上没有太多 的提高也看不到方向。所以决定离开这个城市去上海,寻求更好的发展,并且打算放弃我以前的MIS转到通信行业。
写到这里不能不提到我女朋友,我们是在来上海前半年认识的,她大四在我公司实习,公司派她给我写文档,我们的感情发展的很快。她告诉我很多事情,她家原本是改革开放的第一批暴发户,她母亲爱打牌,输掉了几百万,还欠了很多债,她有男朋友,但是她对他没有感情,只因为他给了她母亲两万多块钱,后来还强迫她写了四万块的借条,她男朋友背叛过她并且不止一次打她,现在逼她结婚不然就要她还钱。这人居然还是一个高校的老师!她母亲把父亲给她的学费花了,因为拖欠学费她没有办法拿到毕业证。她母亲现在有病需要钱,我拿出了自己的一点积蓄并且跟朋友们接了一些,替她交了学费并给她母亲看病(后来才知道看病的钱又不知所终,就连她母亲是不是有病我都不知道,但她也是没有办法)。这个时候我家知道了一些事情,坚决反对我和她在一起,她原来的男朋友也极力破坏。无奈之下我们决定早一定离开这个伤心的城市,并且瞒着我们家。由于时间仓促,我只准备了4000块钱,她仅有的几百块钱也被她母亲要去了,我买了三张票,一张是中午的,两张是晚上的,中午我的家人把我送上船,他们一离开我就下了船,我和她乘坐晚上的船离开了这个我和她生活了很多年的城市,带走的只是一身债务。
没有来过上海的我们两个性倔强,都不愿意去麻烦同学和朋友。来到上海是傍晚6点半,我们都不知道该去哪里,我们找了一个20块钱的旅馆,这个房间连窗户都没有,7月份的天气酷热难耐,房间里非常闷热。第二天我们开始租房子,因为身上的钱不多,我们基本都是步行,花了一个星期时间,不知道在浦东转了多少圈后找到了一个400块的房子,但是我们都不了解上海是付三压一,还要付半个月的中介费,买了一些锅碗瓢盆后,我们身上只有800块钱了,工作都还没有着落,这800块钱要支持到我们拿到第一个月工资,为了省钱我们自己做饭,每天买菜只花两块钱,她非常喜欢吃(也可能她在大学经常挨饿的愿意),看到她现在这样省吃俭用我真的很不忍心。她以前的男朋友也没有放过她,经常打电话来骚扰,并且来上海看她,还说了不少恐吓她的话,她过于善良,说他以前毕竟帮助过她,叫我不要与他一般见识。
以后的每天在家就是苦等面试通知,原本我想迅速找一家MIS公司解决眼前的困难,但是她坚持让我不要放弃自己的理想,终于功夫不负有心人,我找到了一家通信公司,4000块的工资虽然赶不上MIS公司给我开出的价位,但也够在上海生存。她也找到了工作,第一天上班她哭了,这是她来上海第一次流泪,我心里很难受也很感动。
由于是全新的行业,我把自己降到了零点,我学的VC、Delphi、数据库派不上用场, 摆在我面前的是嵌入式、协议、信令一些我从未接触过的知识。我知道我没有退路,于是拼命的学习,我把自己当做一个应届毕业生一样,一分努力一分收获,半年过去我终于熟悉了工作,并且得到了公司的表彰,薪水也加了一级。后面的日子里我们省吃俭用,把欠朋友的1万多块钱还了,日子终于上了正轨。这时女朋友告诉我她想考研究生,我也很支持,于是她辞职在家备考。
另外,在这里我要感谢我的ProjectManager,他原来是一个大通信公司的产品经理, 对人非常和善,我从他那里学到了很多知识,而且他也给了我许许多多无私的帮助。在工作上他给我充分的空间和信任。记得公司安排我维护一个接入服务器软件,由于代码量不算太小(5万行),资料和文档都不齐全,我维护起来非常吃力,所以想重新把它做一遍, 公司领导不太支持,可能觉得工作量太大,但是他极力支持我,私下里他让我放手去做, 我的维护工作他挤时间做。在他的支持下,我花了半年时间完成了接入服务器的软件,并且实现了一个相对完整的TCP/IP协议栈。在这里我学会了嵌入式系统设计、驱动开发、TCP/IP和很多通信的知识,我花了一年时间终于使自己从MIS开发转到了通信行业,并且站稳了脚跟。我的开发大量是对硬件的直接操作,不再受微软的操作系统,VC、Delhpi这些开发工具的约束,我终于看到了另外一片天空。
我做事情喜欢追根问底,随着开发的深入,软件开发与硬件联系越来越紧密,硬件知 识的匮乏又对我的发展产生了障碍,而且芯片技术基本上掌握在国外公司的手里,这对做系统级设计是一个非常大的制约,一个新产品出来,第一道利润(也往往是最丰厚的利润)常常都被IC公司如Intel、Motorola赚去了,国内的厂商只能喝点汤。所以我决心解决自己的硬件技术障碍,并打算离开通信行业,进入IC设计相关领域。
当然我明白如果我对硬件了解的非常少,没有哪家IC公司会仁慈到招我这样一个一窍不通的人来培训。所以我必须努力打好基础,学一些相关知识为以后做准备。就像我开始从MIS转到通信一样,我看过大量通信方面的书,并且给一个ISP做过RADIUS计费分拣台,在这样的背景下这家通信公司才给了我这个机会。我在的通信公司是做系统设计的,有不少PCB Layout硬件人员,平常我就注意向他们学习,由于我做的是软件,在公司看硬件资料不好意思,所以开始只好在家看,刚来上海工作我连续一年都在加班,后来不加了,因为我要挤出时间学习,通常我12点左右睡,第二天5点半起,我上班比较早,地铁上如果人不多我也用来看书。学习当然不会是一帆风顺的,有些实在不懂的问题就积累起来问硬件人员,他们的帮助使我学习进度快了很多,因为在没有人点拨的情况下自学,我的一半时间是花在解决疑难问题上,但这种问题经常是别人的一句话就可以让我豁然开朗,我非常庆幸我有这样的学习环境。
在后面的一年里,我学会了看硬件原理图,学会了简单的硬件设计(模拟电路方面还有不小的差距),事情就是这样的,当你安安份份做软件,别人永远认为你是软件开发人员,在你开始学习硬件时别人未必会认同,有位中兴通讯的朋友还对我说过,一个人不可能把所有东西都学完。我也明白这一点,但我希望自己做的更好。但当你熟悉硬件后大家又会觉得你好像原本就是软硬件都懂的,同事们也都习以为常了。这个时候我可以把硬件资料堂堂正正的拿到公司看,没有人再大惊小怪了。 让我比较自豪的是我通过自己的努力做了一个IAD(软交换的终端设备)系统方案,包含软硬件的选型、设计等内容,这个方案得到了公司和同事们的认同,让我感到非常欣慰。
技术是相辅相成的,当我的硬件有了一定的进步后,我的软件设计也有了很大的提高 ,我可以从更深层次理解问题,我做的接入服务器CPU是Motorola PowerPC860,熟悉的朋友都知道860 QMC与软件的批量数据传输通常采用BD表的方式,硬件人员做驱动的时候习惯采用固定BD表,每接收或发送数据都将数据从BD表拷贝到用户Buffer,或从用户Buffer拷贝到BD表,由于理解的比较深入,我自己重新实现了这个过程,采用动态BD表的方式,驱动从一个网口接收数据,提交给我的软件进行三层交换,直至从另外的接口发送出去,没有进行一次拷贝。这样的设计大大提高了性能,使系统的指标接近理论值。
软硬件的结合使我的设计水平上了一个台阶。我现在写的这个操作系统,编译后我把程序反编译成汇编,找出其中不优化的代码,然后在C程序中进行调整。举个例子,很多CPU没有专门的乘法指令,这个大家应该都知道,在这种CPU上进行一个乘法操作常常会花费大量的指令周期, 有的朋友会说这个我知道,我会尽量避免采用×号,但是事情往往不是那么简单,你知道C语言中数组的下标操作是怎么实现的吗?仔细看看反汇编的代码你就会明白,同样是通过下标的定位操作,C编译器会有时候会产生位移指令,但有时候会用乘法实现,两者效率往往是天壤之别,所以明白这些问题你才能将系统性能提升到极致。?
些问题就不多说了,有兴趣的话以后可以共同探讨。
话说远一点,我由衷的希望在软件上做的比较深入的朋友们有机会学学硬件以及其它 相关知识,尤其是做底层开发和嵌入式设计的。这对软件技术的提高有非常大的帮助,否则很多事情你只知道该这样但不会明白为什么该这样。我这个观点在我现在的IC公司Project Manager那里也得到了验证。他告诉我们公司现在的802.11芯片产品的软件经理原本是做该芯片硬件设计的,某某某原本是做软件的,现在在做IC,类似的例子还有很多,只是在国内这样的风气不是非常流行。
我有一些心得体会与大家分享,只有当我干好本职工作后,我才会学习与工作关系不 大的技术,这样公司的上司才不至于反感,在入门阶段的问题我通常不去问那些资深人士 ,而是问一些资历比较浅的朋友,比如刚毕业不久的学生,因为他们往往会跟你详细的讲解,而资深人士通常觉得你的问题太简单,所以回答的也很简单,我又不好意思多问。等技术上了一定的层次后我才会问他们,他们也能给你比较深入的回答。另外,有些朋友说我机会比较好,他们也希望能从事新的工作可惜没有机会,我听了只有苦笑,我的机会了解的人都应该知道,我没有出生在什么IT世家:)也没有谁一路提拔我,所有的路都是自己走出来的,我母亲去世比较早,我的后母(我叫她阿姨)看着我努力过来的,一次她看我大年30还在写程序,她说像我这样努力木头都能学出来。
我的最终目的是IC而不是PCB,所以我下一步的准备开始学习IC设计的知识。公司的同事没有懂IC设计的,后面的路又要靠自己了,我买了不少相关的书,在网上也查了很多的资料,我花了大量的时间去学习VHDL,并且用软件进行了一些简单的设计和仿真(没有设计ASIC,只是针对FPGA),随着学习的深入,我渐渐明白了IC设计的基本流程,同时也明白了这条路的艰辛。这个时候我已经做好了跳槽的准备,我向一家业界又一定知名度的IC设计公司投了简历,并通过了漫长的面试(4个多小时)。其他的一切我都比较满意,唯独薪资差强人意,我也明白原因,因为我是这个行业的新人,我没有经验,我再一次将自己清零了。公司老板问我6000多一个月能不能接受,我知道他也是照章办事。想想我通信行业的朋友们,基本上都是年薪10万以上,月薪过万的也比比皆是,朋友们也帮我介绍了不少待遇不错的公司,我该怎么选择,当时我很犹豫,我热爱我的事业,我向往我的追求, 但我也是一个普通的人,我也需要养家糊口,我也想早一点买房买车。生活给我出了一道难题。
爱因斯坦在63岁时说过“一个人没有在30岁以前达成科学上的最大成就,那他永远都不会有。”这句话给了我很大的压力和震动,我马上就26岁了,离30只有四年时间,我必须抓紧这几年宝贵的时间,努力达到我技术上的最高峰。为了这个理想,为了能离自己的梦更近一些,我选择了这家IC公司,我明白自己的薪资和公司刚进来的硕士研究生相差无几, 但为了今后的发展只能忍受,一切又得重新开始。换行业是一个非常痛苦的过程,尤其从一个春风得意的位置换到一个陌生的岗位,感觉象从温暖的被子里钻出来跳进冰水中,让人难以接受。在原来那家通信公司,我是唯一两年时间涨了五次工资的员工,公司和同事都给了我极大的认可,工作上也常常被委以重任。但现在这一切都成了过去,在新的公司我只是一个新人,没有人知道也没有人在意我过去的成绩。我决定重新开始,我把自己看作新毕业的学生,我要用自己的努力得到公司的认可。进入新的行业是非常痛苦的,我告诉自己必须忍受这一切,虽然外面有很多诱惑,但是既然作出了选择我就不允许自己轻易放弃。
我现在已经在这家新公司上了一个多月的班,开始非常艰难,现在慢慢适应了。第一 个月结束时,Team Leader找我谈话,说我是新进员工中最优秀的一个,我心里很欣慰,这也算对我努力的一个肯定吧。在这里还要感谢我的女朋友,她给了我很大的支持和鼓舞, 每次在我动摇的时候她都在鼓励我,让我坚持自己的理想,刚来上海是她让我不要勉强去做MIS,这次也是她让我顶住了月薪过万的诱惑,没有她我可能不会有今天的成绩。 现在的公司有自己的操作系统,自己的CPU、DSP和其它芯片,在这里我能学到世界上最先进的技术,我们的设计开发不再完全依赖别人的硬件和系统,这让我很开心。我打算等工作步入正轨后,全力学习新的知识,实现我的理想。
在后面的两年里我给自己定下了几个目标:
一.努力做好本职工作,在工作上得到公司和同事们的认同;
二.努力学习IC硬件设计知识,多向同事请教,并利用一切机会多实践;
三.实现我的实时操作系统的主要部分,完成TCP/IP协议栈模块,并免费发布源代码;
四.和我女朋友结婚并买一套小房子,这是最重要的,因为我明白事业是可以重来的,但是珍贵的感情很难失而复得。
在这里提一下我现在开发的操作系统,它是一个实时嵌入式系统,目前支持以下特性:
a.支持时间片轮转调度和基于优先级调度,最多64个优先级;
b.抢占式实时内核;
c.为了便于移植,主体用标准C实现;
d.汇编代码非常少,不到100行;
e.支持任务管理,各任务有独立的堆栈;
f.进程同步和通信目前完成了Semaphore,Message Queue正在调试;
g.实现了定时系统调用;
h.可以在windows上仿真调试
我还打算下一步实现优先级反转保护,Event Flag,Data Pipe,内存管理(以前实现过)、驱动接口等。 在这之后我还会努力完善它,比如加入文件系统,协议栈、调试接口等。希望朋友们提出自己的意见和建议,在此不胜感激!
后记:
就像有的朋友说的,我的经历或许会给一些朋友产生误导,在这里我必须说明一下。 我来上海以前学习过于拼命,常常晚上只睡3个多小时,我身高1米71,那时只有108斤(我现在130多),家人也说我这样拼命活不过60岁,但是当时的我太固执,我对他们说只要能实现理想活50岁我就够了。那时的拼命使我的身体受到了影响,有一次早上突然腰肌剧痛难忍,痛的我倒在床上站不起来。虽然我现在已经比较注意,但有时候还会隐隐作痛。后来在女朋友说服了我,来上海以后我不再如此。我经常引用父亲的一句话“身体是革命的本钱”。
而且我也发现拼命不是办法,我可以熬一两个通宵,最多的一次我连续工作了三天三夜, 但是我半个月都没有恢复过来,这样是不是得不偿失?学习工作应该是一个长期的过程, 像马拉松而不是百米冲刺。我现在非常注意调整学习和工作的强度,我要保证每天尽量有相对充沛的精力,一些年轻的朋友觉得自己也应该拼命努力,这让我多少有些担心,如果我的故事能让你在学习工作上多一点兴趣,我会感到很开心,但如果误导了某些朋友,让你做一些不值得的付出,我会感到很内疚。
技术没有贵贱之分,我以前换行业是因为自己的兴趣所致,而不是对哪个行业有什么偏见。我希望我的经历不要给朋友一个错误的导向,觉得我始终向更高的技术发展。其实各行各业做到顶尖都是很困难的。话又说回来虽然技术没有贵贱,但是门槛是有高低的, 无论如何,做IC的门槛要比做网页的高,这一点无可否认。国家各种人才都是需要的,但是作为个人奋发向上的想法还是应该有的,努力在自己喜欢的行业上做的更好,而不应该停留在比较肤浅的层次上。
我是一个自己觉得比较有自知之明的人,或许我最大的优点就是知道自己有很多缺点 :)。我的故事中很多的曲折和错误都是由我的缺点造成的,希望大家用审慎的眼光看待我的经历,不要被我的“花言巧语”所迷惑。我学习有些随心所欲,这给我带来了无尽的麻烦,也大大阻碍的我的发展。记得我小时候成绩比较出色,但是后来学习严重偏科,导致我中学成绩一再滑坡,也没有考上什么好的学校,小时候的一个朋友,当时的成绩和我相仿,但是没有我这个缺点,她上了清华,后来在去了美国深造,在一个著名导师手下研究理论科学,这未尝不是一条更好的出路。
另外我的学习方法也是在不断改善中的,过去 的学习过于讲究数量和时间,那样学习既苦而已效率不高,现在我非常注意学习的效率和技巧,这样才是学习的捷径(当然不是指投机取巧),比如说学一相对陌生的技术,如果有条件,不妨问一问有经验的人,不需要问很多,往往他不经意的几句话会给你非常大的帮助,甚至超过你看一个星期的书。带着这样的思想再去学习你会节省很多时间,这样何乐不为呢?这些年中我学了不少的东西,由于开始非常盲目,所以学的东西杂乱无章,现在回想起来让我啼笑皆非,我把大量的时间浪费在一些没有必要深入了解的知识上,毕竟一个人的精力是有限度的。很多朋友很我一样都背过五笔字形,的确它是个不错的输入法,但是对一个研发人员它绝对不值得你去背,你的时间应该花在有价值的地方。我这样的事情还做过很多,我背过CCED、WPS的命令和快捷键,在dBase基本退出历史舞台后我还花了很多时间去学习它的使用。所以我的学习在前期缺乏规划,没有明确的短期目的、中期目标,只有一个虚无飘渺的长期的理想。这就像做设计一样,好的设计是从需求抽象到代码有很多过程,而不能得到了需求就立刻开始开始编码。
当然这么些年的学习和工作多多少少有些收获,下面我说说我的一些学习的心得,这 些方法未必正确,我也在不断探索和改进中。我的学习和工作有相对明确的目标,我不会一时心动而去学习某一技术,在下决定之前我会考虑很多,包括长期的发展,个人路线的规划,需要付出的代价、可能遇到的困难及解决的办法等等,在决定后还会制定更加明确的计划,包括短期、中期和长期的,身边可以利用到的资源(包括好的书籍、资料、软硬件环境,也包括有经验的朋友或者师长),以及每一个阶段是怎么过渡到高一阶段的计划,往往在一个学习阶段一旦上路后会走的相对顺利,但是跨阶段通常比较麻烦,比如从学习基础知识转到实践。另外我买书也有自己的方法,现在世面上高质量的书远不如低质量书多,对于一个陌生的技术,往往在第一次买书会选择错误,即使买到一本好书但是它的方向也未必适合你,所以我通常会先在网上查找一些该技术的介绍,有了一点点概念后再去买一本比较薄、相对便宜并且内容相对泛泛而谈的书,这是国内作者最善于写的书:) ,再把它浏览一遍后我就会基本明白这门技术的要点,后面买书和制定计划就会明确的多。否则一开始就想找本好书往往比较困难,而且买回来后努力学习,有时候学了一半才发现是本低质量的书或者是相对过时技术,让人非常懊恼。另外让有经验的人帮你介绍,通常也是一个不错的选择。
有些朋友想学通信、嵌入式开发,但总觉得自己没有软硬件环境,我就按我的了解给 大家介绍一下怎么建立这样的环境,当然我了解的只是我学习和工作的方向。通信我做的是数据网方面的工作,包括TCP/IP、二三层交换、对接入网、H.323和软交换也有一点认识。这些软硬件环境都是可以在PC上构建的。你甚至可以在一个没有网卡的PC上建立一个包含多个路由器、接入服务器、VoIP网关、网守、主机等的仿真网络环境,而且与实际的网络相当接近,当然这需要你有清晰的网络概念和一定的网络知识,我一直在努力开发一套软件将这个过程简化,目前试验已经做完,我可能会将它融入我的操作系统外围扩展软件中。这样的方法我无法用简单的语句讲的很清楚,我可以说一下大概的思想,就是在PC上实现仿真网卡,(知道Windows怎么在没有网卡的机器实现虚拟网卡技术的朋友都应该会明白),然后每一个仿真网卡对应一个虚拟设备,如路由器或者主机。你也可以借助第三方工具完成部分工作,如VmWare等。我现在就是利用一个仿真网卡做自己的开发的。
至于嵌入式开发环境更加容易实现,PC就是一个非常大的硬件平台,现有的嵌入式操 作系统通常都支持X86,你可以在上面做开发,通过软盘Boot或者使用虚拟机装载,我用VxWorks做了试验,在一台PC上跑Windows和VxWorks两个系统。另外Windows上的兼容DOS的16位仿真X86环境也为很多操作系统提供了绝佳的试验环境,我的操作系统在Windows上就是这样实现的。Linux在嵌入式中应用也比较广泛,它在网上有大量的资料,而且也相对比较容易实践。同时很多完善的嵌入式开发环境支持软件仿真,如Tornado、WinCE等。
作者: Builder.com
2004-08-17 12:19 PM
Brian Goldfarb:当我们最初规划ASP.NET 2.0的发展的时候,我们深入市场研究了我们的消费者以及普通Web站点开发人员的需求。我们到底发现了什么?很多常用的,需要重复完成的任务功能一次又一次的被重新配置。我们的目标就是要简化这些过程,并且帮助开发人员减少大约70%在普通应用环境中所需要编写的代码。
这是一个很美妙的目标,但这直接导致了一系列ASP.NET应用程序服务的开发,诸如Membership、Role Management、Navigation、Web Parts、Management以及其他更多的能够提供一种大量削减代码的简单编程模式。同时,我们已经编译了超过50种新的控制方式(control),这些方式将用于协调ASP.NET应用程序服务并进一步简化开发过程。开发人员告诉我们说他们希望把精力放在为应用程序增添价值而不是编写重复代码片断上面。我们相信,通过ASP.NET 2.0,Web开发人员可以实现这一目标。
开发人员和IT专业人士还告诉我们ASP.NET需要更加简单的管理和维护。我们为此添加了一整套相关功能,使开发人员能够更简便的配置他们的应用程序,IT专业人士也能够能轻松的通过IIS管理他们的ASP.NET 2.0应用程序。
ASP.NET开发小组是如何提炼开发人员的建议并以此为标准开发新的功能特性的?
首先,处理数量庞大的建议绝对不是一件容易的事情。它需要我们到开发人员社区收集反馈,同重要客户进行交流,并且思考我们Web平台以及开发工具的发展方向。在通盘考虑这些问题之后,我们得出了实际情况,然后就需要作出一个困难的决定。我们不得不回过头来考虑我们所获得的数据、客户需求、技术条件、业界发展趋势以及更多的东西,并确定其中什么需要优先考虑。
哪些功能反应了客户们最为广泛的需求?那些功能表现出了最强烈的创新意识?那些功能将被用来简化处理复杂情况的过程?我们是如何改进平台的管理性能的?
你知道,我们要处理很多类似的事情。同你所希望的那样,整个开发过程非常艰难,因为我们尽量满足客户所有的需求,但并不是都能如人所愿,我们不得不看看各自的优先级。
您看到了那些功能对于开发人员来说具有“ah-ha”的因素?比如,在前期版本中没有出现的功能,或者对于ASP.NET 1.x开发人员具有强烈吸引力的功能?
对于我们下一代的Web平台以及开发工具来说,有两个主要的“ah-ha”因素。首先,我们重新设计了创建Web站点以及应用程序的工具框架。我们发布了一个针对普通爱好者、学生,以及编程狂的新的开发工具——Visual Web Developer 2005 Express Edition。这种工具从一开始开发就始终关注于Web开发人员的需求,并且基于Visual Studio 2005 IDE。因此,Visual Studio 2005不光包括了所有Visual Web Developer 2005 Express版本具备新的Web开发功能,并且还含有更为专业的功能,例如源控制集成(source control integration)、预编译(pre-compilation)、局域化处理(localisation),以及访问性检查(accessibility checker)等等。
使用Visual Studio .NET 2003以及ASP.NET Web Matrix的开发人员告诉我们很多关于他们对于所使用的Web开发工具的期望,这次重新开发就是针对这些反馈信息的。它包括对项目系统的一些修改,使其基于目录,借助更好的CSS支持在界面设计上有了重大改进,并且还集成了对Master Pages以及Themes的支持。我们还对源代码编辑器进行了改进,为Web开发人员提供了强大的代码编辑功能。
其次,如前面所说,ASP.NET应用程序服务对配置所有高级功能提供了强大的模型。此外,我们新的Master Page模型将允许开发人员更为方便的维护站点的视觉一致性。这种模型可以继承来自开发工具端和系统平台端的视觉效果。
那些功能或许可以将开发人员从PHP或者JSP阵营中吸引到ASP.NET 2.0?
ASP.NET 2.0以及Visual Studio 2005能够给所有的开发人员带来一些列的好处。软件提供了强大的开发工具,通过这些工具开发人员可以对Web站点及功能强大的平台进行设计并编写代码,同时可以减少他们需要编写的代码数量。ASP.NET 2.0和Visual Studio 2005同样允许情景模式,而在这之前要实现这样的功能几乎无法想象。一个正在编译的例子是Web Parts。
ASP.NET 2.0提供了内容丰富的Web Parts基础结构,使得开发人员无需编写过多自定义代码而创建自定义个性化的Web页面成为可能。我们的平台已经为开发人员提供了大量工具,并且鼓励这些不同背景的开发人员下载Visual Web Developer 2005 Express测试版并进行评估,我们为此感到非常兴奋。
有人谈到了通过新的缓冲区功能可以带来应用程序性能的提升,您能举出一个具体应用环境的例子么?
ASP.NET 2.0中有一种新的输出缓存类型,名为SQL Output Caching。在过去,输出缓存可以带来巨大的性能提升,但同样存在一个问题,即决定最佳的缓存时间以避免输出过时的数据。通过SQL Output Caching,ASP.NET 2.0可以不确定的对一页进行缓存,并且仅仅当此页数据改变时刷新缓存。这项功能可以兼容SQL Server 2005以及SQL Server 2000。所以可以想象,如果是一个数据更新并非频繁的目录站点,例如一个每季度更新价格信息的站点,在这样的情况下,你可以将多月的目录页面进行缓存,并且可以看到系统巨大的性能提升以及数据库负载得以减轻。
ASP.NET开发人员常常对于保持整个站点视觉效果及使用方式一致性而痛苦不堪,在ASP.NET 2.0中是怎么解决这一问题的?
我们已经清楚了了解了开发人员所强烈反映的这一问题,在ASP.NET 2.0中提供了许多新的功能来帮助开发人员维护整个站点的视觉效果及使用方式一致性。首先是Master Pages,这是一种视觉效果继承机制。开发者可以在此进行站点大部分的视觉规划,并且使用contentplaceholder control来定义overridable区域。然后在子页面中,可以创建与主页面中contentplaceholder类型不同的内容页面——在内容页面中仅仅针对内容使用此项功能,Master Page将完成剩下的工作。由此我可以仅仅通过修改Master Page来改变整个站点的视觉效果。
ASP.NET 2.0运行时将结合包括内容页面的Master Page,并且发送统一格式的输出到浏览器。我们还添加了Themes/Skins结构,由此允许开发人员轻松的替换ASP.NET 2.0服务器控制中特定的外观元素。为了提高开发效率,我们还为Visual Studio 2005和Visual Web Developer 2005 Express Edition中的Master Pages的Themes/Skins提供了充分即时技术支持。
绝大部分的Web站点提供了某种类型的个性化功能,这些功能通常是手动编写代码实现的。在ASP.NET 2.0中有什么功能可以帮助开发人员创建个性化的Web站点么?
当前的Web站点常常需要为用户带来丰富的个性化体验。在ASP.NET 2.0中,我们为此提供了一种Web Parts基础结构及个性化开发引擎。首先,开发人员可以方便的定义strongly-typed user profiles,这些数据也将自动的进行维护。其次,通过Web Parts,用户可以轻松的对站点的外观和组件进行自定义,即通过对相关Web Parts进行添加、去除或移动。可以看看myMSN.com,实际上它的相关效果的实现几乎没有编写代码。
使用ASP.NET 1.x创建基于数据的Web站点非常麻烦,在这方面有什么新的功能么?
要实现提高开发人员效率这一目标,一部分工作就是要减少数据访问代码的数量。我们引入了一些新的控制功能,包括GridView,来针对此问题进行改进。新的免代码数据绑定可以更为简单的将databound对象连接到后台的数据。在ASP.NET 2.0中,我还可以通过GridView,使用ObjectDataSource,借助中间对象来实现而无需编写任何代码。这是全部?我还可以进行分页、排序、选择、编辑、删除,同样不需要任何代码。你将发现这全新的数据访问模式所带来的简便性。
在从ASP.NET 1.x转移到2.0的工程中,开发人员应当考虑哪些方面的结构、升级以及端口等问题?
我们的确就确保ASP.NET 1.0和1.1站点能够在ASP.NET 2.0正常运行方面做了大量的工作。Visual Web Developer 2005 Express Edition以及Visual Studio 2005提供了一个升级向导,它可以方便的把已有的代码转换成ASP.NET 2.0格式,这样你就可以在原有代码上添加任何需要的新的功能。这一过程简单而无缝。
ASP.NET Web Matrix会随着ASP.NET 2.0的发布而进行升级么?
ASP.NET Web Matrix是一种无支持工具(unsupported tool),它的发布是为了帮助ASP.NET评估人员,普通爱好者和编程狂创建Web应用程序。ASP.NET Web Matrix项目对我们来说是极大的成功,它的下载次数超过了150万。我们由此收到了大量大反馈,并分析出Web开发人员到底希望在他们的开发工具中看到什么样的功能。
另一方面,Visual Web Developer 2005 Express Edition是Visual Studio 2005家族中的一员。绝大部分在ASP.NET Web Matrix中所获得的教训、反馈意见、以及值得肯定的功能在Visual Web Developer 2005 Express Edition的开发中都有所借鉴。使用者可以无缝的从ASP.NET Web Matrix转移到Visual Web Developer 2005 Express Edition上面来。
2005年4月1日
#
我生长在东北的哈尔滨,虽然从小唱着“大刀向鬼子的头砍去……”,听着历史老师很愤恨的叫日本人“倭寇”、“鬼子”,看着诸如731部队之类的报道和展览,但这并不影响我儿时对日本的看法,记得小的时候,同学录上“最向往的地方”一栏,我填的都是日本。
那个时候觉得日本的动画片很好看,日本的小电器好用,甚至连日本的忍者和剑道高手,都是我心中的偶像。小时候拿着木棍模仿日本人劈剑的经历,我现在都记忆犹新。渐渐的,人也长大了。有机会听到见到更多关于日本的东西。这中间当然有那段不短的历史,有日本国内对中国的看法,有日本经济的强大,和时常能听到的“友好邻邦一衣带水”之类的宣传。
可以说,在相当长的一段时间里,我并没有对日本有任何心理上的戒备和敌意,甚至,可以说是有点谄媚的向往。我当然也听到过“南京大屠杀”“731细菌部队”“旅顺大屠杀”和数不清的日本人在侵略时的历史,但是,我始终认为,哪些是过去了,记着就可以了,干吗要抱着不放哪?两国友好不是很好吗?这些和他们这一代日本人没关系啊……等等如是的想法
。
2000年,我从东北的哈尔滨来到了上海,异乡的生活,给了我更多的机会接触不同的人和事,也让我有机会能够更深的思考一些问题。
刚来上海的时候,有人听到你是来自哈尔滨的,时常会问到:“你们恨日本吗?” 那时,我都会以东北人的身份告诉他:“东北人都恨日本,他们侵略过我们”。但是说让我说具体我恨他什么?我根本说不出来,因为在那时的我的印象里,我是没有任何情感的累积的,只是出于道义和理所应当的层面上才会说这些。
直到那一天。
那时2000年冬天的一个晚上。我和几个好朋友在复旦旁边的一个漫画pub(乐静宜开的漫画吧)过通宵。那个pub在上海算是小有名气的。里面都是日本的漫画和其他的书籍,氛围弄得很好。……
这时,旁边走过来一个服务生,头上系着头巾,很恭敬的在旁边问道,“先生,可以聊聊吗?”,我们高兴的欢迎了他,当然,第一句话是礼节性的问了一句“您是哪里人啊?” 他的回答很巧妙。“我是哪里人不重要,我在哪里就是哪里人,你们觉得我是哪里人哪?然后用上海话说:“那晓得伐?”,听到朋友说它是广东人,就用广东话说:“你知吾知嘎 ?” 然后用北京话一样的北方音调的普通话对我说:“您说哪?”由于他的相貌和举止,我们一致猜他是日本人,他不置可否,对我们笑笑说:“这个不重要,我问你们一个问题好吗?” 他向我们借了笔和纸,然后,很认真地看着我,说:“你是东北人,我问你一个地方你知道吗?“然后在纸上很流利地写下了两个很漂亮的汉字:“奉天”。写好之后,他抬头看看我说:“这里本来可以做都城的,可惜。”我马上觉得来者不善,可能因为面对的是外国人所以激发了我的感情,我很正经的和他说:“先生,您写错了,现在已经没有叫做奉天的城市了,“奉天”现在叫“沈阳”,叫做“奉天”的那个年代,一去不复返了。”
他笑笑说:“那可不一定”。
然后他在纸上画了一张世界地图说:“这个就是世界,你们对世界有什么看法吗?没有,因为你们是不思进取的民族。我们不是,我们的目标不只是奉天,东北,甚至中国。我们的目标就是……”,他用笔在地图上画了
一个大圈,然后很有力量的说:“全世界”。
我笑了笑说:“世界属于谁不是你们定义的,什么事情都有他的规律。你凭什么说中国人不进取?你凭什么瞧不起一个这么有文化底蕴的民族?”
“你们总在谈文化,我很敬重中国的文化,我觉得我一辈子也不能完全理解其中的一点点内容,这也是我一直学习中国文化的原因,但是你们哪?你们中国人,自己的文化知道多少?甚至我可以说,中国人,懂中国的文化,绝对没有我们日本人懂得多。儒学的思想是什么?为什么孔孟会被尊奉到那么高的地位?你们谁能说出来?”
“中庸、仁,这些就是儒学的精髓”我将我当时仅有的有关中国文化的知识搬出来。我那时的心情相当复杂。是啊,他问更多哪?我还能知道了吗?我们这一代认真的又很少人对中国的文化感兴趣甚至研究过。一个连自己文化都不懂的人,怎么配和别人理论文化的问题啊?
我们马上问了他很多关于中国的问题,看他是否真地对中国的文化有所了解,让我们吃惊的是:第一次大一统、唐代盛世、元清的少数民族统治、甚至“春天的故事”,这所有的东西,他都能很清晰甚至很透彻地告诉你经过和影响。他自豪地说:“一个不研究自己文化的民族,就是落后和愚昧的。是被别人瞧不起的。”
我马上回击:“你们日本人就被别人瞧得起吗?别忘了黄种人在美国是什么地位。”
“你去过美国吗?你了解美国吗?如果没有,请不要妄加判断。我在美国生活过两年,我想,在美国,亚洲人如何,我应该比你有发言权。”
我哑口。
“有一次我去买首饰,选了好久,服务生都态度很生硬。而当我告诉她我是日本人的时候,他马上很恭敬的帮我选,还抱歉地说:‘对不起,我还以为您是香港人哪’,这就是尊重,是你们永远享受不到的尊重。”
“你当人家真的尊重你啊?还不是因为日本人的钱?”
“就算是为了钱,怎么样?事实就是人们尊重日本人,不只是因为钱,更是因为日本强大,因为日本人的素质比中国人高。”
“你凭什么说中国人素质低?你去过几个地方?”
“我去过十几个省,绝对比你去过的地方多,让我说为什么,我不举别的地方,我现在在的城市是上海,这算是你们中国最好的城市了。可是怎么样哪?人们像盲人一样根本不看红灯的过马路。乘坐交通工具的时候向发狂一样的挤来挤去。随地吐痰,晚辈在街上辱骂长辈,这些都是真的吧?”
我又哑口,朋友接到说:“有些人是这样,但是不代表所有人是这样啊。我们深圳人就不会乱抢位子,乱穿马路。”
“噢?是这样的吗?对不起,我没有去过深圳,如果有机会,我一定会去看看。”他的表情变得恭敬起来。这更接近我过去对日本人的看法。但是,这没有维持多久。
“素质,什么叫素质?你们的孩子都被大人包在家里。生怕孩子吃苦。我小的时候,爸爸每天都让我四点起床去跑步,当时我很不理解,还有些恨他,可是现在,我感激我的爸爸,是因为这样的锻炼,使我形成了坚毅的意志。让我形成了日本人的精神。这么差的基础。怎么可能会有一个强大的民族?
我在美国做过hotel的manager,当时有两个人被辞掉了。一个是日本人,一个是中国人。他们都归我管。两个人都来求我,说自己能胜任现在的工作,让我帮忙。我并没有因为其中有日本人而偏袒他。我让他们做同样的工作,谁做好了把谁留下。很不幸的,两个人真的都不是很熟练。我当时同时的教了他们怎么做,让他们继续做好,那个日本人很认真地听我每一句话,最后做得很好,而中国的又懒又不努力,我都不知道他搞了些什么。最后我忍无可忍。我没有把他当人的对他喊:‘你给我滚!’
“无可否认有素质差的人,但是这并不能代表全部,难道你的意思是每个中国人都这样?我们有很多人很努力的工作,很敬业,难道你就没看到这些?”
“工作?你们中国人最擅长的就是互相排挤,懂什么叫团队吗?你们连两个地方的人都会互相看不起,不要说一个团队里来自各个地方了。中国人是最恶心的民族。到处都是一个地方的人看不起另一个地方的。”
其实他说的这些有很多是我一直想说的,但是作为中国人,我只能抱着复杂的心情和他理论到。
“你有什么资格说这些?你对中国的地域了解多少?”
“南方中国人和北方中国人我都研究过,我还做过类似的报告给日本政府。”他看着我说:“日本人比较看得起你们,你们像日本人,是真正的男人,在遇到侵略的时候会团结起来抗争。这也让我们吃了很多苦头。而南中国人比较聪明,他们不会愿意卷入牺牲和努力。所以他们愿意发展经济。但是一旦有战争发生,他们将是最容易制服的亡国奴。”
“不许你诬蔑我的同胞!”我义正言辞的告诉他。
“你不要觉得中国人多团结伟大,韩国人在国家出现困难的时候可以全国人民捐金子给政府,在你们中国,可能吗??”
我完全怔住了。
是啊,他说的千真万确啊!可能吗?大家也可以自己想象,如果是你,你会吗?
“这个可以不谈,每个人有自己的想法。”他回到那张纸上,指着地图说: “我还是给你们介绍我们的大一统吧。这是世界,十五年后,他就是我们日本人的。”
他在纸上用繁体字写下:“大一统”。
“我们不用繁体字,对不起先生。请不要再写了。我们看不懂。”我们很生气他的做法。
“没关系,其实这也是你们文化的一部分。你们连祖先写的字都放弃了。”他轻蔑地笑着说。
“我们国家是有规划的,全世界都在看我们的动画片,我们的电视剧,用我们的电器,很多人疯狂的崇拜日本,在中国,也不再少数吧?你们接触的都是外面的文化,而中国人又对自己的文化不感兴趣,当有一天你们一觉醒来,发现身边的一切都是别人的的时候。你们连后悔都来不及啦!顺理成章的,总有一天,你们的国土也会变成我们的,因为你们中很多人已
经认同我们的东西,我们的思想了。”
多么的悲哀啊?他说的事情的的确确是真的。我们身边多少人对日本的美国的东西着迷。甚至有哈日,哈韩这样的词语出来。在欧洲,巨无霸被人们认为是美国文化的侵略而被抵制,而中国最近的调查有47%的中国孩子觉得麦当老是中国的品牌。这会有什么样的后果啊?我虽然嘴上在回击,但我的心里很不是滋味,那是一种什么感觉?此时此刻的你能体会到吗?
“劣质的民族是不应该生存的这么自在的,我们是来解救你们的。在日本,我这样的人有很多,全世界都有,我们是有组织的。我爸爸是老兵,我们都信奉天皇。我不知要到美国中国,还要去欧洲,去全世界宣传我们日本的文化和想法。”
“算了吧,自大狂,你一直在说中国的文化,中国的文化里面有一样你一直没学到。”
“噢?是什么?愿意请教。”
“那是尊重,这是你们日本人永远学不到的,你们以为鞠鞠躬就是尊重了?完全不是。一个不尊重别人的人是不会得到别人的尊重的。”
“我没有必要尊重你们,因为你们劣等。”
我当时心里面就像是有很大的火气但是发不出来,我既要保持中国人的气度,又要承受听着一个鬼子侮辱我们整个民族。动粗只是野蛮的表现,但是对他,我们还能怎么样哪?
“你快走开吧。省着我受不了打你。”
“小伙子不要乱说话,你打我犯法的,但是我打死你都没有事情,我们的一个朋友就这样做过,最后还是平平安安的被送回日本。你已经很生气了,可能听不下去了,打扰了。”
他说完这些就走了。桌子上留下了“奉天,大一统”几个字,和一张虽然草草但是画得很熟练的世界地图。
……就在他走之后,几个朋友都陷入了沉思。他说得真的好多都是真的。为什么会变成这样哪?
那天晚上到天亮之前的时间里,我们想了很多很多。
第二天,我在课上请求老师给我20分钟,我把前一天,看到的,听到的,想到的很没有技巧但是却很发自内心的讲给了一起上课的两个专业的同学。(可能有人还记得吧?00应化和00广电)我从上台的一刻起,就决定了。我没权利改变别人,但是我可以告诉别人,有些事情离我们很近,有些事情我们要警惕,有些事情,我们不能做,还有些事情,我们必须做。
第二年,韩国青年在日本领事馆前切指明志。我盯着韩国青年事后包手指的痛苦表情的照片,心里发出由衷的敬意。
同年,中国有一个很不争气的女明星穿着日本的军旗做的袍子拍照被谴责。可能她不知道。甚至很多人还站在她那边觉得是小题大做。我后来怎么看她的嘴脸,怎么觉得越发恶心。同年8月份,日本首相小泉参拜靖国神社。看着日本老兵穿着二战的衣服。心里又想起了那个日本人和我说过得很多话。
同年冬天,第一次看到王选的事迹。从心底支持这个“英雄”,在我眼里,他就是女英雄。日本人曾经对中国做过什么?可能世界上只有我们清楚,王选是站出来告诉世界的人。到现在,日本还没有为二战道歉和赔偿。当你受苦受难过之后,在日本是一片风平浪静,根本没有战争发生过的影子,日本年轻人对这些一无所知,甚至,还为组成所谓“大东亚共荣圈”而自豪。多么的可笑和可悲。
当时日语系办了一个日本文化周,我当时真的百感交集,他们的宣传材料上全是说日本这么好那么好,举办活动加强什么交流。还要征文。那几天小泉刚刚参拜过靖国神社,日本导弹威胁中国也是那时候刚发生的事情,他们就不知道为这个来征文吗?想起有些学日语的给饭卡加钱的时候,写名字都用日文来写,心里更恼火,难道有些人学日语是为了媚日吗?我当着很多人的面把学校所有的宣传材料都撕掉了。你可以麻木,但是你不可以教唆别人。
2002年夏天,我去了沈阳,参观了918纪念馆。当我看到日本兵穿过的军装真实地摆在我面前的时候。我的心哭了。我真想把他拿出来烧掉,看着他,想着几十年前,穿这身衣服的人亲手做过些什么。我简直无法忍受。
出馆的时候,我留了很多留言,足足有两页。但是我觉得,写在多都不够表达我的心情。那是一种真正的痛。等我以后有钱了。一定捐钱给918纪念馆,让更多的年轻人能够进去看看,让更多的人知道,有些历史是不能忘记的。
又是一年“九一八”,在这天,在我的家乡。大连、沈阳、哈尔滨、长春所有的汽车都会在二十二点鸣一分钟喇叭。东北境内的所有火车也会鸣笛。听到笛声的时候。那是一种什么样的心情?那更像是一种嗥叫。向过去一切不平的嚎叫。
p.s.后记
这一年多以来,我越来越觉得自己的无助和愤恨。很多人仍然麻木。可能有人会说,这管你屁事啊?其实这关每个人的事。
我还是说那句话:你可以麻木,但是你不能教唆别人。
但是很多人一直在教唆别人。
他们有的只是一个想当然的想法。和一张不负责任的嘴。在国人越来越欢迎外来事物的时候,谁知道告诉他们一声:有很多东西你应该更加注意。有多少人能像要做这样的人哪?
再次谢谢大家了。
这几天看到很多素不相识的朋友的回复。心里很是安慰。我知道有很多人是和我一起的。
当一个朋友说:“日本有他们的靖国神社。我们的靖国神社在哪?”的时候,我怔住了。是啊。我们的“靖国神社”在哪?哪里有我们吊唁的地方? 所以,我们要做的事情还有很多。
有人看到文章后对我说:“不能鼓吹极端民族主义”,我没有这么想,但是,如果中国没有韩国的民族精神,中国人永远都是一团散沙。难道这个时候,不应该找一种力量来团结自己吗?这样没有错吧。
有人告诉我:“我又没有穿马路。我又没有随地吐痰。这些与我无关。”但是,当你在地铁上看到外国人对这抢座的年轻人中国人摇头的时候,你欣然自得吗?不是的吧?你一定不是!
。。。。。。。。。。
我们在自我安慰的寄希望于日本人的良知而他们却认为我们这些可怜的第三世界在编造故事以敲诈他们的钱财……
如果你是一个不太喜欢狂热,冒进的温和派,那么我个人认为你应该所做的是:把不买日货这个原则默默地记在心里,我们没有必要非得用示威或游行来反对日本可耻的行为我们应在心里默默的抗议日本对我们犯下的错误和他们对这些错误无耻的抵赖我们只需要在购买商品的时候更多的忽视一下日货,能不买日货就不要去买相信自己,只要我们团结起来,人人都 能做到这一点,就会使日本在经济上受到打击就会使他们不敢再轻视我们的力量,如果你认为自己很狂热,那么可以先看看下面的数据:在世界
各地,几乎90%的华人用的是:“日本车”,“日本电器”!!
我统计过:
如果世界各地的所有华人停止购买日货,
日本每年将损失“1000-1400”亿美元的外汇收入!!!
“外汇收入”是任何一个国家的源泉和动力!!
它和国民经济的关系是“一带动八”,或者说:“损失一份外贸收入,这个国家就要损失八份的国内经济收入!”。
换算一下:
1000----1400亿美元的外汇受入“等价于”一兆美元----日本经济的总产值的五分之一(1/5)=20%!!!所以,如果世界各地华人同心协力,不用动刀动枪,就可制日本于死地!!而且是永久的死地!!!
我们应该学习尤太人----曾经集体拒买一家德国工厂的产品,最后导致这家公司的彻底破产起因就是因为这个公司的总裁说了一些所谓“理解希特勒”的话!!
现在德国人对犹太人特别好!!您知道为什么吗?
原因有二:一个是怕----因为尤太人特别团结;
第二个是尤太人的狠----尤太人从来没有放弃过对“纳粹分子”的追杀-----
只要在这个地球上发现有任何藏匿的“纳粹分子”,他们就一定就会“抓--绑架”,如果实在无法得手,那就“杀”!
看看我们中国吧?! “对刽子手的仁慈,无疑就是自杀!”
开始行动吧同胞们:?****?0年过去了,还要等吗?!开始行动吧!!
从我开始做起!
从我家开始做起!!
从我的朋友开始做起!!!
从我身边的各个组织开始做起!!!!
只要大家共同努力:
最后,我想最多10年,全世界所有的华人都会做到!既使能做到一半(50%)。对日本的打击也是致命的!!组织一个全球性的“拒买日货复仇组织”!请在各地“串连串连”,好吗?!同胞们,开始行动吧!可以印些传单,让大家意识“拒买日货”的重要性!“拒买日货”首先要防止被“日本狗”误导有些所谓的“爱国人士”---(其时是被日本秘密收买的哈巴狗,目地是挑拨分离我们本来就不团结的中华大众),经常提出:拒买日货是不可能做到的,原因是几乎所有的轿车,电器里,多少都有日本的零件。所以还是打住吧!“拒买日货就到此为止”是什么用意?!那是因为日本害怕看到中国大众组织起来,进而进行有效的“抵制日货”运动?!故而在这个五十多年来首次完全有可能组织其一个有效的全球性“拒买日货”运动时,他们便会迫不极待地跳出来叫“停”!“拒买日货”,并非像他们所说的哪样----“因为这个计算机里有一个或一些日本零件,我就不买;这电视里有几个日本造的电子器件,我就不要”。“拒买日货”的口号实际上是要求全球中国人,在有选择可能的情况下,尽量不买日本造的货物,如汽车,电冰箱,洗衣机,电视,音响。。。等等!
五十多年来,华人一直记恨于日本,但可笑的是却没有一个有力的“拒买日货“组织!!究其原因,就是因为中国有太多的日本狗从中挑拨分离我们本来就不团结的中华大众!中国同胞们:清醒过来吧!千万不要再被这种人玩了!!!
“拒买日货”的意义 “拒买日货”的意义是巨大的!她能让我们不动一刀一枪就打击了日本,同时又加快了中国经济的发展!她能让我们扼制日本,进而让中国立于不败之地!她能让我们的子孙免遭我们的前几代祖先和我们现代中国人所遭受的痛苦!! 她最终也能让这个几百年来一直顽固不化,一再屠杀掠夺中国人民的丑陋民族遭受到它应有的惩罚!!!你以为这容易做到吗?绝对不是!这需要我们大家的共同努力,才能让全体中国人慢慢地,逐渐地意识到,然后才能真实地做到!!
不必要的担心
1.中日友好根本就不存在!过去没有,现在没有,将来也不会有!
2.现在中日贸易总额每年达600亿美元。是不是因为我们全球中华大众对日货的抵制,中国就会受到损失? 这是不会的! 原因是:
a.日本出口到中国的是高级奢侈品---我们中华大众可以拒绝;
b.中国出口到日本的是普通生活必须品----日本人很难抵制,他们其实是在享受着我们廉价的产品!
3.另外,从中国的长远利益来看,减少对日本产品的过份依赖,对中国的国家安全是非常重 要的,比如日本参加美国的nmd,其目的就是与中国为敌!!!
2005年3月10日
#
从技术到管理
作者: Builder.com
Friday, November 19 2004 10:58 AM
你有成为管理者的潜质吗?将技术人员变成经理人可不是一件简单的事。本文的训练方法将会对你有所帮助。
你有成为管理者的潜质吗?将技术人员变成经理人可不是一件简单的事。本文的训练方法将会对你有所帮助。
技术对管理人员来说有用吗?有没有可能将技术人员培养成经理人呢?这些问题或许问得有些突兀,甚至有点冒昧;毕竟,技术人员与其他员工在工作上有什么真正的不同?最后一个问题的答案无疑是肯定的。
传统观点认为,技术型员工更适合呆在办公室,在那里他们用不着去与别人交流。他们缺乏诸如交流、倾听等的软技巧,以及团队合作能力,这样看来,将技术人员培养成一位经理人就变得跟教一条鱼去骑自行车一样困难。不过这都取决于我们对传统给予了多少关注,如果我们认可传统的说法,那我们大概就会认为所有的二手车经纪都是难缠的,而政治家们都是一群远离民众的嗷嗷直叫的傻瓜。
不过不论职业经历,有些人就是没有管理的才能,而其他的人就是不同。我认为,可以指出办公室的很多人都永远不会成为管理者。该死,我敢打赌,你们中的有些人正在指着你们的经理想“这家伙除了技术外还懂什么呀,他到底是怎样管理这个部门的?”,不过管理需要的知识远不是IT所能包含的,公司所有部门好象也都是这样,只是IT部门的鸿沟是最大的。需要软技巧来弥合这一切。
在与News Interactive运营官伊万.威尔金斯的谈话中,他说到,一个能熟练处理程序式任务的人并不代表他就有能力领导好其他人。威尔金斯现在在新闻集团的网络部门工作,负责news.com.au网站的运行,要接受下面六个部门的直接汇报。他最近参加了一个Dimension Data Learning Solutions开设的领导力课程,
“我认为IT人士都严重缺乏软技巧的,他们是一群特殊的人,必须小心翼翼地去领导他们—社交和行为技巧在我看来并不是IT经理所不可缺少的,”他说。
威尔金斯确信软技巧是可以教授获得的,他还说打算将自己的员工送到DDLS参加各种软技巧培训课程,诸如时间管理,领导力,交流,团队合作以及客户关系。“我希望他们能在行为举止以及与人交流方面能达到一定的预期”他解释到。
当然,仅靠一门软技巧培训是培养不出一个经理的。威尔金斯在这方面的观点是“我并没有把握说能将一名技术人员培养成经理人,这还要看他们是否有这个愿望…这是一群不同的人,如果一个技术人员想成为一名管理者的话,他们就必须有能力先解决IT问题,然后才能对别人发号施令”
转变
史蒂夫.巴蒂就正在从一个技术人员向一名管理者过渡。他以前是红场的一个界面开发负责网站前端建设,现在正已经成为了一名网络分析师。“近来公司发展迅速,行业变化快,我的角色也跟着变。我负责客户的网络战略,以确保其能够满足他们的需要。从商业角度来确定他们的需求和目标—这仍然是一件技术水平要求较高的工作,不过其中还是有不少技巧性的东西。”他说到。
巴蒂说转变成一个管理者不是那么容易的,那是一个大约18到20个月的逐步提高的过程。
“要转变成一个管理者是相当困难的。在这个过程中,你必须独立并自信地去当好一个团队的领导者,忽然之间,你就要面对一大堆的事,要鼓舞大家的士气,要保持团队的活力,要让大家都集中于某些他们可能并不关心的目标上,”他说到。“从一个侧重技术技能并以任务为重的技术人员,要转变成一个侧重人际交流并以结果为重的管理者,这个过程相当困难。”
他还补充说,不仅仅只对IT人士是这样,这个过程对于工程师,科学家以及其他领域的专家同样是艰难的。跟威尔金斯一样,他也相信有些人就是当管理者的材料,而有些人永远都没这个能力。
“有些人就是有这方面的缺陷,改都改不了。你可以把一些挠头的技术难题交给他们解决,但永远都别指望他们去管理别人。他们的人际交往能力实在糟糕,不过技术上却相当出众。”巴蒂说到。
他也指出,有时一个人如果技术越娴熟,他在往管理方面转变的难度就越大,因为这成了一个支配的问题。巴蒂说到,作为管理者需要做的一个,就是指挥别人去工作。当你知道你自己可以将这个任务完成得更好更快时,很难会让别人去做的,“他们希望看到的时每个人的技术水平都非常优秀”。
如何成为一名管理者
成为一名管理者可不像穿件工作服开始工作,或上一小节交际课程这么简单。朱迪思.尼莫是德雷克公司负责招聘的职业管理部门的主管,她指出了管理者和领导者之间的区别。
“你如果观察一群管理者,就会发现他们的经验和技能大都类似,尤其在技术方面,那你又怎样将其中最优秀的10个人与其他90个人区别开来呢?--这就取决于情商了”她说。“历史上那些伟大的领袖都意识到自己情商的重要性,最终成为管理者和伟大的领导者。”
尼莫指出,情商背后的原理就是指处理事情时能略带情感,有情绪成熟性的反应。“很多东西都归根结底,就是学会倾听别人,如果你能倾听顾客的需要和他们的技术要求,那你就可以应对所有的人了。”
她认为不幸的是,如果IT经理和CIO们都从技术角度来对商业活动作出评价,那他们就可能不会理解情商的重要性了。
“我们的培训师可能考虑到的仅仅是对一家公司的员工进行EQ培训,其他人都将时间和精力花在了技术培训上”她说。
威尔金斯也同意这种观点:“IT属于新兴行业,无论是产业还是从业人员都远未成熟–我并不是说他们是孩子,不过他们确实不明白为什么需要软技巧。”
员工是否希望去参加这种课程呢,巴蒂认为,将员工送到课堂去并叮嘱他在那学两天有关人际交往的技巧可不怎么容易办到。他会对他们说:“那里学到的对你们会有用处的–如果你去那上了两天人际交往的课程,可以帮助你了解他人的想法,改变思维方式。”
这就是对一个将要成为经理的人所需要进行的情商训练。尼莫援引了一个例子,说的是一个很受同事和经理尊敬的男子,他希望在事业上能更上一层楼,可惜的是他缺乏必要的情商技巧。情商训练就可以告诉他如何去倾听。
“他从未考虑或了解过自己的倾听技巧,我们对他进行了为期三周的倾听项目培训,结果无论对他的家庭生活还是工作都产生了巨大的影响”尼莫介绍到。
巴蒂也认为情商对于成为一个成功的经理起着重要的作用。“我们都曾见过五六十岁的人都还在发脾气–这是一种孩子气的表现。有些人一生都没有成熟,而有些人则在很年轻的时候就相当成熟了。”
他说其中的一个关键点就是能够和谐地看待问题。“为了能够参加辩论,并且不会觉得不值,除非成功–他们已经成熟,有能力领导其他人。有时他们会坐立不安地说‘自己多加小心’”。
回归商业
当然,成熟与否以及与人交流的能力都很重要,不过在商业活动中的实际又是另外一回事了。能够从技术细节中解脱出来,并从全局的角度来考虑工作以符合公司战略,就是成为成功的经理人的又一要素了。
这就是巴蒂所面临的挑战,接受了老师给出的建议后,自己经过一翻思考研究,最后决定去麦觉里管理研究生院主修工商管理硕士(MBA)学位。
“坦白说,刚开始时我关心的都集中在技术本身,我关心的是技术上的来龙去脉,至于其用途方面我觉得这应该是别人去考虑的。后来,尤其是读MBA期间的学习,大大拓展了视野,我学会了考虑事情时将各个方面都顾及到”巴蒂说。“回顾我的思想转变的过程,考虑更多的是我们所做事情的目的,而不是原因。它能带来多少价值,它能给以后的红场的进一步发展起到什么作用,一般来说,都是从更加抽象的角度来考虑技术。”
让我们再来考虑一下那些有可能成为管理者的人,他喜欢认为他有能力安排好一切,不过他说MBA确实有所帮助。他觉得MBA教会了他在面对不同的部门主管和客户时能够使用恰当的语言。
“并不是每个人都需要通过MBA的学习来理解商业,在客户服务部门呆一段时间后,就能帮助自己在各个部门灵活地处理各种即使不需要处理的事务。”巴蒂说。
“现在我可以非常轻松地与人就市场战略、后勤、供应链等议题进行长篇大论–这在以前是做不到这样的。”
优秀经理的老师
巴蒂说他很幸运,因为红场的管理层给了他很多的支持,也有机会得到公司外部许多老师的建议。“老师方面非常重要。在课堂上可以认识老师和许多同龄朋友,对我来说这是从MBA教育得到的很大的收获,一直都从他们得到建议和支持,”他说到。
即使在红场,公司也有非正式的函授地点,资深员工在那里向大家传授经验。他说公司鼓励高级主管和资深员工在这种场合充当老师的作用,教会年轻员工一些知识,这些对于年轻员工的发展是比较重要的。
新闻公司的威尔金斯就对函授比较有兴趣。他说有些优秀的技术人员并不向往,或者不适合去做管理者,但他们可以成为优秀的导师的。“他们不具备管理才能,但他们可以去教导别人”他说,“不过这时就不能要求他们像员工一样,比如要求他们周六出来,或明天早上八点半起来。这些都是他们不愿意做的管理。”
“我认为导师或教练的作用在企业中还没有得到充分认识,不过很多例子都说明在非正式场合这种优点不容易发挥出来。”巴蒂说。
无论参加的是哪种类型的培训,也无论时间是三周还是三年,从技术人员转变向管理人员的转变总是很难的。如果你幸运的话还可以得到公司的支持。巴蒂就从红场得到了支持,给他安排管理岗位,他说攻读MBA都是一次不小的提高。
谈到技术技能和管理技能的区别时,他说:“技术技能关注的都非常细节,而管理技能就更模糊了,需要进行更多的解释。准确说你是在处理不同的思想和观念。”
转变的技巧
--史蒂夫.巴蒂
我觉得技术人员有很多需要去做的。采用Dilbert的方法达到老板这个层次是不现实的–你不希望成为那样的人,所以你的技术技能依然非常重要,但是工作上还是要提高与人打交道的能力。
1. 工作中可以提出合理的观点,但不一定非要去说服别人。工作中尽可能地努力去达到目标,尽管那不是你的份内之事。
2. 在参与团队活动的时候,在不越位的情况下多起些领导的角色,不过要开始学会决策,不是要老想着你看准的就是正确的,而是要把重点放在聆听别人的观点。通常你在让别人负责的时候,他们会很清晰地表示他们想要听到什么,这可以清除掉其他人的不同观点。
3. 你要学会管理自己,所以在工作中要不断激励自己并多多承担责任。
4. 开始思考一些与商业有关的更宽泛的问题。这个项目对我们公司和客户会有什么影响?你需要开始锻炼自己一种看待事情的高屋建瓴的视角。你还必须知道从一个更广的角度来工作,思考一下你所做的工作是如何符合公司和客户的目标的。
史蒂夫.巴蒂是红场(Red Square)的资深分析师,红场(Red Square)是澳大利亚一家知名的综合网络公司,创建于1995年,红场的客户包括Telstra, Smorgon钢铁集团,P&O Nedlloyd,青年旅馆澳洲分部和松下澳洲分部。
| Ballmer执掌微软五年的功与过 |
作者: CNET 2005-03-07 11:3 AM |
|
当年,比尔.盖茨宣布辞去微软CEO的决定震惊了整个IT业,现在,五年过去了,微软都发生了哪些变化?
尽管Steve Ballmer继任微软CEO以来,对微软进行了重组以适应自己硬朗的工作作风,但五年过去了,微软这个全球最大的软件厂商仍然面临着盖茨时代的很多难题:开源运动,法律纠纷不断,核心业务增产缓慢。
虽然人们已经预料到盖茨将会把权利移交给自己的多年好友兼同事Ballmer,但当五年前的今天,2000年1月13日,比尔.盖茨宣布这一决定时,世界仍然为之一震。
自1975年与Paul Allen创建公司以来,盖茨领导的微软一直行事低调,但自语出惊人的Ballmer接任后,微软的企业风格为之一变。
Ballmer将公司重组为7个独立的业务单位,改变员工薪酬制度,将微软的核心产品重新分割以扩大市场。
“Ballmer完全从商业的角度对微软进行改革,”微软分析家Matt Rosoff指出,“将微软划分为七个业务部们完全是Ballmer自己的想法,这在盖茨时代是绝对不可能的。”
另一个具有Ballmer风格的变化是:微软在用户和合作伙伴间建立了一个更为友好、温和和令人信赖的形象。每年Ballmer都会亲自致信给所有微软员工,鼓励他们为客户开发出更实用的产品,并对客户的需求做出更为快速的反映。
Ballmer上任伊始就着手改善微软的公众形象。当他以微软CEO的身份首次在公共场合露面时,便毫不掩饰地道出微软的两难处境:“在我看来,微软并没有获得公众的真正理解。在很多人眼里,我们是‘视窗’公司…….人们只知道我们在股票市场取得的成功。我个人认为,微软在某种程度上是硅谷的强心剂。但不幸的是,我们却经常在法庭上成为众矢之的。”他于2000年2月在加州联邦俱乐部上发表了这番讲话。
现在,盖茨已经转变为微软的幕后高参,参与制定公司的一些复杂而高风险的产品战略决策,如研发Windows Longhorn操作系统和微软向家庭娱乐业进军。
但是很难对Ballmer时代的功过作出合适的评价,因为这五年来,微软的公司资产一直在波动之中。好的方面,公司的销售额由2000财年的230亿美元上升至2004财年的368亿美元,现金余额也增长三倍多。坏的方面,微软的股票缩水,由盖茨宣布引退当天的每股47.80美元下跌至现在的每股27美元。
这些年来,微软一直为一些问题所困扰,如软件安全问题,技术投资放缓,开源软件的逐渐兴起等等。
“微软的有些改变很难说一定是由Ballmer带来的,”Rosoff说,“有些事情,无论换了谁来当微软的CEO,都还是会发生的。” |
主管法律纠纷的部门是Ballmer任期内微软最为繁忙的部门。当盖茨开始他在公司新的事业时,微软正与美国司法部关于反垄断案打得不可开交,当时有提议说要拆分微软。微软申诉驳回这一裁决,并最终与司法部达成了谅解。
此后,Ballmer和他的总顾问Brad Smith便开始应付接连不断的令人头痛的法律诉讼,包括与竞争对手Sun Microsystems 和 AOL Time Warner达成谅解,以及处理一连串的消费者群体诉讼。
“(他们处理这些诉讼的做法,)是尽力使风险最小化,而不再像过去那样,据理力争,与对手拼个你死我活,”Rosoff说。
Rosoff将这些法律纠纷的最终谅解视为Ballmer任期的最佳诠释。“在Ballmer时代,微软趋于更加谨慎和保守,”Rosoff说。
追根溯源
上世纪90年代末,微软向网络和通信公司投资数十亿美元,同时将自己的研发力量投向了MSN互联网服务和一系列消费类网络服务。
“现在,他们又重新将重心放在软件销售上,”Rosoff说,“这多少要归功于Ballmer,因为他很了解公司真正的利润来源。”
同时,微软也在不断丰富自己的产品,并将触角伸向了IT市场。微软已经初涉企业套件市场,并通过发布Xbox视频游戏机和多媒体软件产品确立了自己在家庭娱乐业的龙头地位。现在,微软正雄心勃勃地在计算机安全软件市场上开疆拓土。本月,它刚刚发布了beta版的防间谍软件,并计划在今年推出自己的杀毒软件。
对于盖茨来说,事业上的转型使他可以把更多的时间和精力花在技术研发上,但是,他现在似乎有点力不从心。
在过去,几乎所有的产品都要经过“比尔评阅”,现在,只有少数产品需要由盖茨把关。
“现在,产品要经盖茨过目是很难的,”Rosoff说,“盖茨只关心一些关键的项目,如Tablet PC 和Windows的下一版本 Longhorn。但即使有盖茨的关注,Longhorn的发布还是一再延期,并大大删减了规模。”
在个人生活方面,盖茨仍在通过自己创建的“比尔和梅林达.盖茨基金会”(该基金会掌握了近270亿美元的资金,其捐助方向包含几乎所有的领域。它既向上个月发生东南亚海啸的灾区捐助善款,又出资改善世界各国教育系统的IT资源)将自己的博爱发扬光大。作为公认的世界首富,身家466亿美元的盖茨正在改变自己的个人形象,由过去的有点傲慢孤僻的亿万富翁,摇身一变为光彩照人的公众人物。
2005年3月9日
#
什么是NAT
NAT即网络地址转换(Network Address Translator),从广义上讲,ICS也是使用了一种NAT技术,不过我们这里讨论的NAT是指将运行Windows 2000 Server的计算机作为IP路由器,通过它在局域网和Internet主机间转发数据包从而实现Internet的共享。NAT方式也称之为Internet的路由连接。网络地址转换NAT通过将专用内部地址转换为公共外部地址,对外隐藏了内部管理的IP地址。这样,通过在内部使用非注册的IP地址,并将它们转换为一小部分外部注册的IP地址,从而减少了IP地址注册的费用。同时,这也隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。
什么是ICS
ICS即Internet连接共享(Internet Connection Sharing)的英文简称,是Windows系统针对家庭网络或小型的Intranet网络提供的一种Internet连接共享服务。它实际上相当于一种网络地址转换器,所谓网络地址转换器就是当数据包向前传递的过程中,可以转换数据包中的IP地址和TCP/UCP端口等地址信息。有了网络地址转换器,家庭网络或小型的办公网络中的电脑就可以使用私有地址,并且通过网络地址转换器将私有地址转换成ISP分配的单一的公用IP地址从而实现对Internet的连接。ICS方式也称之为Internet转换连接。
可能有许多原因导致不能登录到 .NET Messenger Service或在登陆时出现种种错误(例如:“0x81000370错误”)。这些问题通常可以用下面几个方法之一解决:
1.你的电脑上的“日期/时间属性”是否设置正确:双击时间,检查日期和时间是否正确设置。
2.如果你的帐号和密码没有在MSN中保存,你需要确认你输入的帐号和密码是正确的(请注意大小写字母及帐号的后缀)。
3.禁用您浏览器中的“自动检测”设置。对于 Internet Explorer 用户,请单击 IE“工具”菜单、单击“Internet 选项”、单击“连接”选项卡、单击“局域网设置”按钮、然后清除“自动检测设置”框。
4.清除IE cache和Cookies:打开Internet Explorer浏览器,按工具菜单,然后选择“Internet 选项”,点击“删除文件”按钮和“删除 Cookies”按钮。
5.检查 IE 安全设定:打开Internet Explorer浏览器,按工具菜单,选择“Internet 选项”,选择“高级”,拖动滚动条到安全选区,证实“检查服务器证书吊销”没有被选中,同时证实“使用 SSL 2.0”和“使用 SSL 3.0”被选中。然后按“确定”。
6.点击“开始”--“运行”,键入:regsvr32 softpub.dll 然后按“确定”。
7.检查错误的代理服务器设置。在 MSN Messenger“工具”菜单上,单击“选项”。在“连接”选项卡上,确保您清除了“我使用代理服务器”复选框。
8.防火墙和第三方应用程序可能会影响连接到 MSN Messenger。您可以禁用应用程序、防火墙或打开防火墙相应端口,然后尝试连接到 .Net Messenger Service。
9.如果您为局域网使用 ICS 或路由器,则可能需要调整一些设置或更新硬件/固件驱动程序。
10.如果您的 Passport 未被识别,请登录 Passport 站点http://www.passport.com ,并确认在该处可被识别。如果在该处可被识别,但仍不能登录到 .NET Messenger Service,则可能是消息服务器暂时关闭正在维护或达到了 Internet 的最大通流量(使用率高峰期间)。请稍后再试。也可以检查服务器状态页以查看服务器的最新信息。
2005年3月7日
#
网站设计的宗派
作者: CNET
2002-08-01 02:1 AM
古往今来,人们始终在寻找真主,期盼给他们带来真理,这与目前 Web 设计师的情况没有差别。在探索如何有效的建立网站的过程中,设计师们寻找着开明、具启迪功力的智者指导他们走上正确的道路。这些 GUI(图形使用者接口)的宗师受到了尊敬;他们的书籍发行甚广,他们的讲座和研讨会场场爆满。当他们讲话时,听众试图记住每句话,他们的观点如同圣言一般地被引用着。
这些 Web 使用者接口的先驱到底是何方神圣呢?我们探访了这些神圣权威中的六位,记录下了他们的话并做了一些整理。你可能已经属于他们其中的一个派别,但是我们将他们每个人的风格与特点一一列出,方便你分析与比较,让你从中找出一条属于自己可依循的道路。(注意:Builder.com 的编辑对于由这些哲人引发的改革运动或其它的宗派冲突不承担任何的责任。)
Andrew Chak
Andrew Chak 的整体哲学观点驱使设计者寻找超出 Web 之外的解决方案并根据顾客的需求进行设计。
Alan Cooper
Alan Cooper 倡导人性化和个性化的设计。
Robert Davis 和 Paul Laroche
Davis 和 Laroche 提倡包容性,鼓励将艺术、结构和内容融合进 Web 的设计中。
Jakob Nielsen
这位 Web 设计传教士藉以参加神圣的设计巡回布道大会分享他的设计理念。
Jared Spool
与一直在寻找但始终未找到一个诚实人的希腊哲人 Diogenes 类似,Jared Spool 从来没有发现一个面面俱到的好网站。
Alan K'necht 是因特网策略公司K'nechtology的董事长,一个活跃于因特网研讨会的演讲人,并且还是一个国际刊物的专栏作家。
| Andrew Chak |
|
Andrew Chak
经常在全球的网站设计研讨会上传授关于有效的使用者接口设计的真知灼见。他的方法是通过提供许多范例来进行启发,并从中突显及强调可以学习到的教训。Chak 认为设计者的任务不只是设计,他们同时还肩负着在网站上支持使用者的任务。在不教导 Web 设计师时,Chak 在Derivion担任使用者体验设计(User Experience Design)的首席顾问。
尽管受到了Alan Cooper和Lucy Lockwood的影响,Chak 也迅速的建立了他自己的地位。他的整体体验哲学驱使设计者寻找 Web 以外的解决方案。Chak 解释说,「一个设计者需要看到一个网站的所有竞争对手。竞争不只是来自另一个网站,也来自现实生活。因此,如果网站不优于现实生活的话,人们就不会使用它。」
Chak 提供了一个简单的例子。如果您刮胡刀的刀片用完了,这时网站是否易于使用或网站的送货策略如何都是无关紧要的。您只是需要刮胡刀刀片,跑到一个巷口小店买又快又简单。因此贩售刮胡刀片的网站不仅需要与其它网站竞争,还要与巷口小店较劲。为了改善一个网站,Chak 鼓励我们考虑现实生活中的购物经验。如果您去一个商店购买一个运动背包,「您拿起它,翻转过来,从不同的角度看,核查尺寸,或许还试着放进去一些不同的物品。因此网络商店怎么能仅仅展示一个简单的背包图呢?」
Chak 的三大设计原则是:快速的页面下载、直觉的导览和精致简约的设计。
Chak 的戒律 你应该:
- 优化搜索
- 使用一些具「引发性」的词句连结(例如,使用「抵押借款」这类的字眼而不要将「贷款」 隐藏在主页上的某个项目底下)
- 具有可预测性
- 提供适当的详细信息
- 让每个页面都能达到该有的实质作用
- 使用易于理解的惯例(例如,超级链接用蓝色底线强调,普通文本则不用强调)
- 允许使用者通过多种媒体进行交易(包括在线与实体的交易方式:在线,电话和商店)
- 把提供信息的要求变得合情合理
- 提供使用者一个起始点
- 与电子邮件做结合(如果交易完成,发送一个电子收据并表示感谢的信函,同时确定订购的物品已经送出)
你不应该:
- 使用过于可爱、俏丽的标签
- 一开始就提供过多的选择
- 为了美观而缩短标签
追随者
在这里,Chak 特别选出Shutterfly做为遵循他所提出的「有效的使用者接口设计」的代表网站。「Shutterfly 是一个数字影像处理实验室,它为其工作的内容和如何达成那些工作提供了清楚的解释。我特别喜欢其主页的简洁性,使用者主要透过在「进一步了解」和「加入」这两者之间作出选择就能对整个网站一目了然。」
至于走错了方向的网站,Chak 指出了Free Country,「一个没有意义的服装零售网站。要想看到服装的样式图,您需要通过一个服装矩阵的导览系统,它会要求您根据运动/正式/织纹等分类来点选放大服装的缩图。这是一个笨拙的导览系统,当您最终找到您感兴趣的服装时,您会发现您无法在在线做购买的动作!」
至尊经典
Chak 建议网站建构者阅读 Steve Krug 的 Don't Make Me Think!和 WebWord.com。
救赎
Chak 的愿望是让使设计者「不要画蛇添足!让使用者方便做您想让他们做的事。不要强行把您的图形、Flash 和方法论推销给使用者。让他们自行其事。从使用者的需求面来设计,不要为你自己的业务而设计。」 |
| Alan Cooper |
|
Alan Cooper
「一个所谓优良的设计是建立在对广泛的人类共通性和特殊群体的个别意向的深刻理解之上,因此它可以对适当的信息、过程和技术进行排序,从而可以使那些特殊群体达到他们的专业和个人的目的。」
出席 Alan Cooper 演说的听众好像被催眠似的一致地猛点着头。Cooper不仅在网站开发者而且在信息产业的每个人身上都能够引起共鸣,这种能力只是加强了他对听众的深刻影响并迫使设计者对他们原先的设想产生疑问。他在强调他的观点时并不是凭着那激昂、热情的词汇,而是一些通过精心考虑、能够深刻影响听众智力的言词来完成的。
作为 Visual Basic 的发明者,Cooper 借着发行畅销的书籍和主持专题演讲巩固了他的先知地位,并促成了交互式设计策略和个人化概念的普及。 为迈向救赎之路,Cooper 心目中的三个基本设计原则是精简的设计、快速的页面下载和健全、无误的除错管理。
Cooper 的戒律
- 一个尺寸不能适合所有的人,一个网页即使作为一个入门网站也不见得适合所有的造访者。
- 不要对您的造访者要求承诺或其它任何东西。
- 以多元化的形式提供大量详细、有用的信息。
- 不要让使用者通过一个复杂的、多层的网站导航而最后发现他们仍需要通过电话才能得到答案。
- 除了在不得已的情况下,尽量不要使用动画(电影除外)
- 不要只为了吸引广大的目光而设计。使用者是公民,不是消费者。
- 不要提前发货。不要经常发货。不要拿使用者作实验。
- 您的搜寻机制太差的话,修理一下。
- David Siegel (Creating Killer Web Sites 的作者)在首页内容方面的观点完全错误。
- 就像一场恶梦,浏览器对因特网的支配最终会消失。
- 没有所谓入门网站这么一说。
追随者
尽管 Cooper 的读者和听众无数,很少有人在工作中完全采纳他的思想。Cooper 的一个信徒是Andrew Chak。
至尊经典
Alan Cooper 在Christopher Alexander、Don Norman、Andy Hertzfeld、Sid Meier和Ed Tufte的作品中找到了灵感。
救赎
与所有的有效设计专家相似,Cooper 不认为因特网上存在着天堂,但是他描绘了一幅在现今网页设计状态终结后如何获得救赎的景象。他告诉我们,通过遵循他为我们指引的道路前进,我们可以不再重复以前的软件开发者所犯下的错误和罪状。 |
| Robert Davis 和 Paul Laroche |
|
Robert Davis 和 Paul Laroche
 |
| Robert Davis |
 |
| Paul Laroche |
与Jared Spool很相似,Answerthink的使用者接口大师 Robert Davis 和 Paul Laroche 在其合作实验室的成果和他们小组的网站建构经验的驱使下提出了他们的观点。然而他们混合了实验结果和真实世界的现实情况-毕竟在现实世界中为了达到有效的设计,必须在个人要求和组织的需求之间做权衡。
通过一系列对客户所做的研讨会及和专题讲演,他们提出了对于有效使用者接口设计的原则和独到看法。他们认为,「真正成功的使用者接口设计是经过深思熟虑并以使用者为中心的系统或经验设计的自然扩展。」 他们告诉追随者,「 有效 (effective)和迷人(sexy)并不互相排斥。要有勇气去重新定义所谓「 酷」 的含义,将成功(successful)和直觉(intuitive)这两大因素包含进来。」
Davis 和 Laroche 的戒律
你应该:
- 以简单为原则
- 维持一致性
- 要有关连
- 有用的 --设计网站的出发点是为了支持有效地完成真正的使用者任务
- 清楚 --使导航明显化和简单化,使标签足够完整、可信
- 残酷点 --确保导航、设计和内容都适合使用者的需要,如果不合适就去掉它们。
你不应该:
- 让使用者等待 --缓慢的页面加载,太多的附加程序下载,这样使用者自然会跟你说"掰掰"啰!
- 期待使用者会坐下来慢慢去了解您的网站
- 失焦 --不要尝试炫耀您的每一个想法
- 单枪作战 --一个好的设计可是个团队共同努力的结果
- 期待使用者为您改变
- 为您不了解的人设计 --通过直接接触使用者以确定网站需要哪些组件
- 盲目设计 --不要在未经过对目标使用者反复测试和对竞争者做出竞争分析前进行设计
- 认为您始终非得开辟自己的道路 --惯例的存在总是有其道理的
- 使用装腔作势的比喻
- 让使用者耐着性子看完您自觉很得意的 Flash 简介
追随者
Laroche 指出 Patagonia是一个有效的使用者接口设计例子。使用者「可以开发一个快速的智力导航(mental navigation)结构而且它不随意的做变化。那个网站只卖服装。」Hoover's Online可说是个极差的使用者接口设计的典型。这个金融信息网站的信息很难查寻,主页提供了使用者超过70个的选项。
至尊经典
Davis 和 Laroche 从中找到灵感的著作如下:
Contextual Design,作者为 Karen Holtzblatt 和 Hugh Beyer Web Navigation,作者为 Jennifer Fleming Designing Business,作者为 Clement Mok The Usability Engineering Lifecycle,作者为 Deborah J. Mayhew The Experience Economy,作者为 B. Joseph Pine II 和 James H. Gilmore Experiential Marketing,作者为 Bernd Schmitt The Invisible Computer和The Design of Everyday Things,作者为 Don Norman Information Architects,作者为 Richard Wurman
救赎
网站开发必须是 「一个兼具包容与开放,融合了艺术、建筑和内容的整体性概念。设计者必须对应用程序和使用者接口有同步的认识和了解。」 Davis 和 Laroche 希望设计者立刻停止再犯的最大错误便是设计有多个目的的网页。「每个网页只能有一个目的,但是他们通常都包含着冲突的信息。」 目前,因特网「看起来像一个汽车碰撞的现场。」
| Jakob Nielsen |
|
Jakob Nielsen
通过平面媒体和出席研讨会来传播他的有效使用者接口设计原则。在这篇文章写作的后期,他已经在User Experience World Tour上传授他的意见。Nielsen 拥有博士学位,同时也是 Nielsen Norman Group的使用者倡导者和负责人(Nielsen Norman Group 是他与 Apple Computer 的前研究副主管 Dr. Donald A. Norman 所合创的)。在 1998 年以前,他是 Sun 公司的一位杰出的工程师。他在 Web 可用性的领域被公认为世界的权威。
Nielsen 已经获得了偶像级的地位,是如今讲谈会最受尊敬的使用者接口大师级主讲者之一。全球许多设计者对他推崇备至,然而还有许多人却想把他绊倒。
他用下述三个基本的原则来启发设计者:精致简约,越少越好和支持使用者任务、不要阻碍使用者。
通过这些原则,Nielsen 领导他的听众设计出更好的网站。在他看来,这就好比在万里长征的旅途中迈出了第一步。为了来改善网站造访者的使用体验,Nielsen 要求听过他的演讲或出席过他的研讨会的听众针对他们的网站做一个适当的改变。这些看似小小的变化往往产生了最大的影响。
为证明 Nielsen 的概念已经深深的影响着我们,他还特别指出他已经不把网页下载速度视为最迫切需要改进的因素。随着宽频时代的来临加上设计者逐渐设计出更有效率的网站,Nielsen 觉得到他已经改变了世界。
Nielsen 的戒律
你应该:
- 在为网站写程序时遵循 Web 的标准(从 W3C 标准开始,然后使用其它已经可接受的标准,例如 JavaScript 等)
- 遵循规范 -- 80% 到 90%的使用者都在做的就是规范
- 强调快速的响应时间(网页负荷和服务器容量两方面)
- 简明、客观、易于浏览
- 协助使用者决定去留:区分产品列表
- 支持搜寻的功能,但是别做的太繁复(以 Google 为标准)
- 在进行任何设计之前先做好任务分析(task analysis)
- 在设计时强调任务支持(例如,比较购物)
- 在设计过程中进行多次使用者测试
- 让残障人士也可访问网站
你不应该:
- 妨碍使用者:别用过度喧哗夺目的页面,别使用 Flash 做简介,不用具有推销性及不合适的图片来破坏内容(例如,笑脸照片)
- 包含未经请求的弹跳式窗口(在线求助除外)
- 去掉「上一页」(Back)按钮(打开一个新的浏览器窗口是一个常见的错误)
- 把功能设计元素做得看起来像广告(他们将会被忽略)
- 使用动态式的文字(moving text)
- 允许连结错误发生
- 隐藏送货成本或其它「陷阱」-这些会引起放弃购物
- 使用焦点团体或调查来指导交互式设计
- 不断重复设计- 在推出网站前深思熟虑,然后就保持同样的设计风格一年左右。
追随者
Nielsen 指出 Yahoo 最符合他的有效网站设计定义的网站。他认为「 它在您需要考虑的几乎所有因素方面一直都表现得很好。当您在不同的页面上时,您知道您要做什么。」他指出 Yahoo「 一直在改进设计,但是却一直以使用者经验为出发点。」
至尊经典
Nielsen 不仅非常重视他的最新著作Designing Web Usability:The Practice of Simplicity,也对 Scott McCloud 的Understanding Comics推崇备至。「 这本书提供了对简洁性概念和在视觉沟通中如何发挥作用的提出了非凡的洞察力。」除了 Nielsen 有关 Web 可用性方面的书籍,从事电子商务网站的人也应该看看他的电子商务可用性之 219 条设计指南(219 design guidelines for e-commerce usability)。另外,Nielsen 也推荐以下几个具有可用性资源的网站,这包括他自己的useit.com、Tomalak's Realm和Usable Web。
救赎
对于 Nielsen 来说,一个无错的网站需要实用的设计、一个精确的使用者响应系统和精简的设计。许多人对 Nielsen 将最精简设计列为第三项而感到震惊,但他马上响应说,「 我从不反对网站上以图形呈现,但是他们必须是内容的一部分。如果您在一个网页上有某人的传记,当然您需要他们的图片,但是您不需要制造一个闪烁的星状图来引起人们的注意吧!」
最后,为了阐述所有的设计者要遵循 HTML 标准和规范的重要性,Nielsen 以无所不在的交通灯为例:「 据我所知,红灯停、绿灯行是大家都熟悉的国际标准。但是,如果在一个十字路口有人决定根据自己的意愿改变颜色规范,您能想象这将发生怎样的情况吗?」 |
| Jared Spool |
|
Jared Spool
尽力不将自己定位为使用者接口设计者。然而通过他所成立的公司User Interface Engineering(UIE),他经常主讲有关有效网站设计的议题,发行了一个评鉴网站有效性的月刊,并举办一系列有关有效网站设计的研讨会。 UIE 创立于 1988 年,是一个独立的研究、培训和咨询公司,擅长于解决使用者接口设计和产品可用性的问题。它已经发展为全美领先的可用性研究单位之一,每年从事超过 400 笔软件和网站的可用性测试。
对 Spool 而言,他并不会花心思在想一个优秀的网站所该具备的因素,或有多少图形可以在浏览器上飞舞;与之相反的,他只将评论局限于对现实世界的事物。「我只能参考我所有的或我的公司所观察到的。」 那为什么 Web 设计团体会如此地关注他呢?也许是他传递信息的方法,又或许是因为我们恰恰需要有人把我们带回现实生活中。在任一情况下,Web 设计者都向 Spool 寻求答案。是的,Spool 确实有解答,而他的答案便是 42。
与Hitchhiker's Guide to the Galaxy中公认的答案 42所不同的是, Spool 也有问题,「 在设计得最好的网站上浏览时,网友究竟有多少时间能够成功达到他们的目标呢?」根据 Spool 的观察,答案是 42%。根据 Spool 简单而保守的推算,「所有的网站都是失败的。」那在这些失败的网站当中还算不错的呢? Spool 认为,他们是Amazon.com、eBay、Dell和CNN.com。最烂的网站则是Disney.com、About和任何售卖计算机配件的网站。
Spool 的戒律
由于 Spool 从未遇到过一个有效的网站,他既没有一个有待修复的问题列表,也没有列出构成一个有效网站的关键因素,「我是一个历史学家,尽力断定网站是否工作,而不是网站是否能工作。」然而,我们还是让他打破了沉默,从他口中得到了以下的片言只字:
- 了解网站的目的。
- 了解使用者的目的。
- 确保所刊登的内容能够达到您的目的(包括图形、广告等等)。
- 确保开发者了解网站如何赚钱。
至尊经典
对于这位神秘感十足的 Spool 感兴趣的设计者应该阅读Web Site Usability : A Designer's Guide和 UIE 的一系列与Designing Information-Rich Web Site有关的全面性的报告。 |
|
2005年2月28日
#
ASP.NET Web 页面生命中的一天
Dino Esposito
Wintellect
2003 年 8 月
适用于:
Microsoft® ASP.NET
摘要:了解为 ASP.NET Web 页面建立的事件模型,以及 Web 页面转变为 HTML 过程中的各个阶段。ASP.NET HTTP 运行时负责管理对象管道,这些对象首先将请求的 URL 转换成 Page 类的具体实例,然后再将这些实例转换成纯 HTML 文本。本文将探讨那些作为页面生命周期标志的事件,以及控件和页面编写者如何干预并改变标准行为。(本文包含一些指向英文站点的链接。)
目录
简介
真正的 Page 类
页面的生命周期
执行的各个阶段
小结
简介
对由 Microsoft® Internet 信息服务 (IIS) 处理的 Microsoft® ASP.NET 页面的每个请求都会被移交到 ASP.NET HTTP 管道。HTTP 管道由一系列托管对象组成,这些托管对象按顺序处理请求,并将 URL 转换为纯 HTML 文本。HTTP 管道的入口是 HttpRuntime 类。ASP.NET 结构为辅助进程中的每个 AppDomain 创建一个此类的实例。(请注意,辅助进程为每个当前正在运行的 ASP.NET 应用程序维护一个特定的 AppDomain。)
HttpRuntime 类从内部池中获取 HttpApplication 对象,并安排此对象来处理请求。HTTP 应用程序管理器完成的主要任务就是找到将真正处理请求的类。当请求 .aspx 资源时,处理程序就是页面处理程序,即从 Page 继承的类的实例。资源类型和处理程序类型之间的关联关系存储在应用程序的配置文件中。更确切地说,默认的映射集是在 machine.config 文件的 <httpHandlers> 部分定义的。但是,应用程序可以在本地的 web.config 文件中自定义自己的 HTTP 处理程序列表。以下这一行代码就是用来为 .aspx 资源定义 HTTP 处理程序的。
<add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"/>
扩展名可以与处理程序类相关联,并且更多是与处理程序工厂类相关联。在所有情况下,负责处理请求的 HttpApplication 对象都会获得一个实现 IHttpHandler 接口的对象。如果根据 HTTP 处理程序来解析关联的资源/类,则返回的类将直接实现接口。如果资源被绑定到处理程序工厂,则还需要额外的步骤。处理程序工厂类实现 IHttpHandlerFactory 接口,此接口的 GetHandler 方法将返回一个基于 IHttpHandler 的对象。
HTTP 运行时是如何结束这个循环并处理页面请求的?ProcessRequest 方法在 IHttpHandler 接口中非常重要。通过对代表被请求页面的对象调用此方法,ASP.NET 结构会启动将生成浏览器输出的进程。
真正的 Page 类
特定页面的 HTTP 处理程序类型取决于 URL。首次调用 URL 时,将构建一个新的类,这个类被动态编译为一个程序集。检查 .aspx 资源的分析进程的结果是类的源代码。该类被定义为命名空间 ASP 的组成部分,并且被赋予了一个模拟原始 URL 的名称。例如,如果 URL 的终点是 page.aspx,则类的名称就是 ASP.Page_aspx。不过,类的名称可以通过编程方式来控制,方法是在 @Page 指令中设置 ClassName 属性。
HTTP 处理程序的基类是 Page。这个类定义了由所有页面处理程序共享的方法和属性的最小集合。Page 类实现 IHttpHandler 接口。
在很多情况下,实际处理程序的基类并不是 Page,而是其他的类。例如,如果使用了代码分离,就会出现这种情况。代码分离是一项开发技术,它可以将页面所需的代码隔离到单独的 C# 和 Microsoft Visual Basic® .NET 类中。页面的代码是一组事件处理程序和辅助方法,这些处理程序和方法真正决定了页面的行为。可以使用 <script runat=server> 标记对此代码进行内联定义,或者将其放置在外部类(代码分离类)中。代码分离类是从 Page 继承并使用额外的方法的类,被指定用作 HTTP 处理程序的基类。
还有一种情况,HTTP 处理程序也不是基于 Page 的,即在应用程序配置文件的 <pages> 部分中,包含了 PageBaseType 属性的重新定义。
<pages PageBaseType="Classes.MyPage, mypage" />
PageBaseType 属性指明包含页面处理程序的基类的类型和程序集。从 Page 导出的这个类可以自动赋予处理程序扩展的自定义方法和属性集。
页面的生命周期
完全识别 HTTP 页面处理程序类后,ASP.NET 运行时将调用处理程序的 ProcessRequest 方法来处理请求。通常情况下,无需更改此方法的实现,因为它是由 Page 类提供的。
此实现将从调用为页面构建控件树的 FrameworkInitialize 方法开始。FrameworkInitialize 方法是 TemplateControl 类(Page 本身从此类导出)的一个受保护的虚拟成员。所有为 .aspx 资源动态生成的处理程序都将覆盖 FrameworkInitialize。在此方法中,构建了页面的整个控件树。
接下来,ProcessRequest 使页面经历了各个阶段:初始化、加载视图状态信息和回发数据、加载页面的用户代码以及执行回发服务器端事件。之后,页面进入显示模式:收集更新的视图状态,生成 HTML 代码并随后将代码发送到输出控制台。最后,卸载页面,并认为请求处理完毕。
在各个阶段中,页面会触发少数几个事件,这些事件可以由 Web 控件和用户定义的代码截取并进行处理。其中的一些事件是嵌入式控件专用的,因此无法在 .aspx 代码级进行处理。
要处理特定事件的页面应该明确注册一个适合的处理程序。不过,为了向后兼容早期的 Visual Basic 编程风格,ASP.NET 也支持隐式事件挂钩的形式。默认情况下,页面会尝试将特定的方法名称与事件相匹配,如果实现匹配,则认为此方法就是匹配事件的处理程序。ASP.NET 提供了六种方法名称的特定识别,它们是 Page_Init、Page_Load、Page_DataBind、Page_PreRender 和 Page_Unload。这些方法被认为是由 Page 类提供的相应事件的处理程序。HTTP 运行时会自动将这些方法绑定到页面事件,这样,开发人员就不必再编写所需的粘接代码了。例如,如果命名为 Page_Load 的方法绑定到页面的 Load 事件,则可省去以下代码。
this.Load += new EventHandler(this.Page_Load);
对特定名称的自动识别是由 @Page 指令的 AutoEventWireup 属性控制的。如果该属性设置为 false,则要处理事件的所有应用程序都需要明确连接到页面事件。不使用自动绑定事件的页面性能会稍好一些,因为不需要额外匹配名称与事件。请注意,所有 Microsoft Visual Studio® .NET 项目都是在禁用 AutoEventWireup 属性的情况下创建的。但是,该属性的默认设置是 true,即 Page_Load 等方法会被识别,并被绑定到相关联的事件。
下表中按顺序列出了页面的执行包括的几个阶段,执行的标志是一些应用程序级的事件和/或受保护并可覆盖的方法。
表 1:ASP.NET 页面生命中的关键事件
| 阶段 |
页面事件 |
可覆盖的方法 |
| 页面初始化 |
Init |
|
| 加载视图状态 |
|
LoadViewState |
| 处理回发数据 |
|
任意实现 IPostBackDataHandler 接口的控件中的 LoadPostData 方法 |
| 加载页面 |
Load |
|
| 回发更改通知 |
|
任意实现 IPostBackDataHandler 接口的控件中的 RaisePostDataChangedEvent 方法 |
| 处理回发事件 |
由控件定义的任意回发事件 |
任意实现 IPostBackDataHandler 接口的控件中的 RaisePostBackEvent 方法 |
| 页面显示前阶段 |
PreRender |
|
| 保存视图状态 |
|
SaveViewState |
| 显示页面 |
|
Render |
| 卸载页面 |
Unload |
|
以上所列的阶段中有些在页面级是不可见的,并且仅对服务器控件的编写者和要创建从 Page 导出的类的开发人员有意义。Init、Load、PreRender、Unload,再加上由嵌入式控件定义的所有回发事件,就构成了向外发送页面的各个阶段标记。
执行的各个阶段
页面生命周期中的第一个阶段是初始化。这个阶段的标志是 Init 事件。在成功创建页面的控件树后,将对应用程序触发此事件。换句话说,当 Init 事件发生时,.aspx 源文件中静态声明的所有控件都已实例化并采用各自的默认值。控件可以截取 Init 事件以初始化在传入的 Web 请求的生命周期内所需的所有设置。例如,这时控件可以加载外部模板文件或设置事件的处理程序。请注意,这时视图状态信息尚不可用。
初始化之后,页面框架将加载页面的视图状态。视图状态是名称/值对的集合,在此集合中,控件和页面本身存储了对所有 Web 请求都必须始终有效的全部信息。视图状态代表了页面的调用上下文。通常,它包含上次在服务器上处理页面时控件的状态。首次在会话中请求页面时,视图状态为空。默认情况下,视图状态存储在静默添加到页面的隐藏字段中,该字段的名称是 __VIEWSTATE。通过覆盖 LoadViewState 方法(Control 类的受保护、可覆盖方法),组件开发人员可以控制视图状态的存储方式以及视图状态的内容映射到内部状态的方式。
有些方法(如 LoadPageStateFromPersistenceMedium 以及其对应的 SavePageStateToPersistenceMedium),可以用来将视图状态加载并保存到其他存储介质(例如会话、数据库或服务器端文件)中。与 LoadViewState 不同,上述方法只能在从 Page 导出的类中使用。
存储视图状态之后,页面树中控件的状态与页面最后一次显示在浏览器中的状态相同。下一步是更新它们的状态以加入客户端的更改。处理回发数据阶段使控件有机会更新其状态,从而准确反映客户端相应的 HTML 元素的状态。例如,服务器的 TextBox 控件对应的 HTML 元素是 <input type=text>。在回发数据阶段,TextBox 控件将检索 <input> 标记的当前值,并使用该值来刷新自己内部的状态。每个控件都要从回发的数据中提取值并更新自己的部分属性。TextBox 控件将更新它的 Text 属性,而 CheckBox 控件将刷新它的 Checked 属性。服务器控件和 HTML 元素的对应关系可以通过二者的 ID 找到。
在处理回发数据阶段的最后,页面中的所有控件的状态都将使用客户端输入的更改来更新前一状态。这时,将对页面触发 Load 事件。
页面中可能会有一些控件,当其某个敏感属性在两个不同的请求中被修改时,需要完成特定的任务。例如,如果 TextBox 控件的文本在客户端被修改,则此控件将触发 TextChanged 事件。每个控件在其一个或多个属性被修改为客户端输入的值时都可以决定触发相应的事件。对于这些更改对其非常关键的控件,控件实现 IPostBackDataHandler 接口,此接口的 LoadPostData 方法是在 Load 事件后立即调用的。通过对 LoadPostData 方法进行编码,控件将验证自上次请求后是否发生了关键更改,并触发自己的更改事件。
页面生命周期中的关键事件是被调用以执行服务器端代码的事件,此代码与客户端触发的事件相关联。当用户单击按钮时,将回发页面。回发值的集合中包括启动整个操作的按钮的 ID。如果控件实现 IPostBackEventHandler 接口(如按钮和链接按钮),页面框架将调用 RaisePostBackEvent 方法。此方法的行为取决于控件的类型。就按钮和链接按钮而言,此方法将查找 Click 事件处理程序并运行相关的委托。
处理完回发事件之后,页面就可以显示了。这个阶段的标志是 PreRender 事件。控件可以利用这段时间来执行那些需要在保存视图状态和显示输出的前一刻执行的更新操作。下一个状态是 SaveViewState,在此状态中,所有控件和页面本身都将更新自己 ViewState 集合的内容。然后,将得到序列化、散列、Base64 编码的视图状态,而且此视图状态与隐藏字段 __VIEWSTATE 相关联。
通过覆盖 Render 方法可以改变各个控件的显示机制。此方法接受 HTML 书写器对象,并使用此对象来积累所有要为控件生成的 HTML 文本。Page 类的 Render 方法的默认实现包括对所有成员控件的递归调用。对于每个控件,页面都将调用 Render 方法,并缓存 HTML 输出。
页面生命中的最后一个标志是 Unload 事件,在页面对象消除之前发生。在此事件中,您应该释放所有可能占用的关键资源(例如文件、图形对象、数据库连接等)。
在此事件之后,也就是最后,浏览器接收 HTTP 响应数据包并显示页面。
小结
ASP.NET 页面对象模型因其事件机制而显得格外新颖独特。Web 页面由控件组成,这些控件既可以产生丰富的基于 HTML 的用户界面,又可以通过事件与用户交互。以前,在 Web 应用程序的上下文中设置事件模型是件有挑战性的工作。可我们惊奇的看到,客户端生成的事件可以由服务器端的代码来解决,而且只进行一些相应的修改后,此过程仍可以输出相同的 HTML 页面。
掌握这个模型对于了解页面生命周期的各个阶段,以及页面对象如何被 HTTP 运行时实例化并使用是非常重要的。