Posted by 忆向 四月 - 16 - 2011 ADD COMMENTS

华科是一个社团文化很浓厚的大学,冰岩作坊、联创、Dian是华科团队文化中领头的三辆马车。大学四年我经历了四个团队,确切地说是,两个团队加一个俱乐部,再加一个协会,所以对于组织策划会有些许的思考。

第一次与策划打照面早在大一时,当时在校网络与应用研发中心学习前台设计,我就很奇怪了:前台做设计,后台写服务,智囊团决策,那么策划是策划什么的呢?后来才知道,策划组是专门组织团队活动的,什么春游啊,秋游啊,素质拓展啊,总之是与团队建设,促进组员间感情交流有关啦。现在回过头来看,那时结交的朋友很多,且都很真,大家一起钻研过同样的技术,大家一起逛过武汉的各大景点,一起K歌,一起杀人游戏。从那时起,我就感觉策划的繁琐了,也一般都是大四的学姐学长来完成策划工作。你可能会笑了,不就大家集体出去玩一下么,有那么难么?有!出游前得调查民情,大家想去哪里,什么地方好玩,且要花费不大,场地足够,环境熟悉,距离合适,便于游戏,可以放松。总有人反对,总有人抱怨,所以这个调查必须全面,结果要能够迁就大多数人的感受。接着就要开始调研了,包括实地考查,协商联系那边的工作人员,考虑可能的天气,计算经费开支,统计大家的上课时间。地点确定后,又要开始考虑活动流程,什么时候游览哪里,什么时候游戏,做什么游戏,做游戏需要带什么,会有多少人参与等等,这也必然需要一个策划书之类,让大家知道那天会干些什么。这之后,就需要统一集合时间、地点、路线、联系人。当然我这里只是大体描述一下,实际中的工作会更多更细致,考虑突发事件,就需要做额外的策划。

当然,在网研中心的时候,只是享受着这一切,后来经历了一些之后,才感到这其中需要感激的人太多了。

今天在Dian的朋友可能都认为我是一个技术狂人,管理、策划都与我扯不上关系,他们的感觉没错,不过,我倒还确实做过很多非技术方面的工作,我做过团队照相师,组织过招新宣传工作,组织过校科技节的编程比赛,至少,我看过很多朋友成功策划与失败策划的经历嘛。Dian是个非常大的团队,160人左右,做任何活动都非常不容易。这么多人年终集体吃自助餐,导致人家餐厅里一下没吃的了,到光谷步行街,过马路直接导致交通阻塞,上电梯直接导致电梯停摆。这么多人看电影,只能包场,我们点什么电影院就放什么。这么多人游泳,就直接把游泳馆包下来了。这么多人逛动物园,动物园就停票专门为我们服务,那动物园的孔雀看到我们马上激素就上去了,立马开屏。所以,团队的每次组织策划都会成立专门的策划小组,活动的每一步都形成文件保留下来,组织者还要写总结,写建议,写纰漏,过程非常规范。

当我真正去主持组织策划工作时,我发现这是一门学问。我在组织团队招新时,非常幸运有学长指导我,不然事情很可能会更糟糕。比如当时招新要借用大学生活动中心的多媒体教室,我以为不是一件难事,一方面,团队在学校很有名气,另一方面,有足够的经费预算,而华科向外面企业借教室多少就是钱的问题。结果是我跑了三趟,就这么个自认为的小事都没有搞定,第一次去是周五下午,主管老师不在,让放完假再来,第二三次就是各种麻烦啦,什么预约系统上不去,理由不充分,甚至说我与老师说话的语气不温和,后来听取了朋友的意见,写了个条子,盖上学院的章,到那主管老师的办公室时,直接拨通导师的电话,让导师和她直接对话,这主管老师的语气一下和蔼好多,只几分钟教室就借到了。后来才知道,其他团队组织活动时也常常被校领导卡住,还听到联创某同学极具魄力的一句话,“你们(校领导)不干,可以!但不要阻碍我们干!”还有一次,我组织人去播放招新宣传片,一切都弄好了,才发现从游泳馆的配电房借电不行,因为根本联系不到管理人员。这个时候我们想从保安亭借电,又近又方便,结果聊了N久未果,计划以失败告终,后来才知道,两包烟就能解决的事情,被我搅得复杂了。记得宣讲会现场的布置也是相当有讲究的,我们使用年鉴、宣传册、饮用水占据后面几排,以防止华科学生不往前坐的惯性;我们设计流程菜单和宣传单,以保证早到的同学有事可做;我们提供小装饰品,以吸引同学前来;我们安排迎宾人员,以保证给到来的同学留下服务意思这一印象,如此等等详尽的考虑。无疑,策划中很大一部分就是与人打交道,沟通就是要明白人之间的相处规则,人性、心理都是影响成败的要素。

失败的策划我也见过很多,一次中国移动研究院的院长来给我们做报告,团队派了一批人去做流程策划,,有同学去实地调查音响设备时,找不到负责的老师,以至于进不去,想想,管院报告厅何其豪华啊,多媒体设备应该不会有问题的,结果恰恰那天投影设备出现故障,后果我就不多说了。前些时,我们班与外语学院的MM联谊,组织一起摘草莓,大家都知道摘草莓就在农科院附近,想想周围应该有很多草莓种植户,但真正去的时候,才发现农田倒是很多,草莓却不知道在哪,结果就是外语学院的MM和我们在田间小道上泥泞了两个多小时,最后摘草莓也只20分钟,关键是大家没有一个合适的场地坐下来交流,活动结束,也还是两个班互不认识。还有很到扫兴的经历,说不定你也经历过的:集合大伙去唱KTV,到了才知道,没有房间;同学聚会,男生聚集在网吧打游戏,女生站在外面无聊;大伙去聚餐,到了才知道吃火锅,结果有部分不吃辣的人只能郁闷;计划去某个地方玩,结果有的人步行,有的人骑车,有的人已经到了。如此很多的不快。

关于集合的时间我就想好好说说。策划进行一次活动时,往往要统一集合时间,怎么设计一个好的集合时间都是很讲究的。我是一个事情比较多的人,所以可能对时间更敏感一些。我大四的时候加入了吉他协会,尽管知道自己有毕业设计,有项目组,但还是想把生活过得不那么技术些。一次协会组织贴海报,时间定在中午12点半,正好我中午会有休息时间,就答应会帮忙。结果到集合时间,竟然一个人没有看到,我以为我找错地方了,于是给组织者打电话,对方告诉我让我等一下,我问多久,答案是15分钟。一个人傻傻地在食堂门口站15分钟纳?我说我先回寝室,好了再联系我。结果下午我在实验室正忙的时候,让我过去,我自然过不去了。晚上时收到责备短信,说我表面热心,实际不干事。我只能倍感歉意,但也非常不快。如果计划有变,就需要提前通知所有人,原来的人员安排就会有变。当然,我只是学生一个,不足挂齿,曾有一个同学就闯过大祸。那是学生与导师参加一个展会,他考虑到人有迟到的心理,就把集合时间提前了半个小时,结果导师们放下手头的工作与学生们在马路上等了半个小时的车,以为是雇的车来晚了,后来知道是组织者的“精心设计”,结果被批,只能同情。迟到心理在在当代学生中确实很严重,比如上午8点上课,大家都喜欢迟到五分钟,曾经种子班考虑到大家熬夜普遍,影响课堂效果,就让我们自己安排上课时间,大家一致同意改为8点半上课,结果如何呢,还是很多人喜欢迟到五分钟,五分钟啃个面包都嫌短,但就是有这种心理,谁都不愿意等别人,就喜欢被别人等。有一个学管理的同学就让人叹服,本来是2:00集合,但他通知1:57,如果你收到一条短信通知你1:57集合,你会不会觉得这个时间很扎心呢?如果会,那么要的就是这个效果。

所以当领头很威风,但也得有能力才行。策划还需要有气度。参与活动的人众多,总有不满意的,总有人会抱怨“那个出的骚主意”“早知如此,我就不来了”,也遇到过发生争执,欢聚反倒滋生出矛盾来的。相对于普通参与者,组织者要更有气度,绝对不能大叫一声:“老子不干了还不行么!”,也会有人这么大叫:“有本事你来做啊!”当然,我也想要求众人都来体谅领头的不容易,但是这篇文章是写给策划者的。

以上愚见,欢迎探讨!

Tags : , 杂文
Posted by 忆向 十二月 - 17 - 2010 2 COMMENTS

过了大三,种子班的课程也就全部结束了,东五教室,那个曾经洒下无数汗水的地方也就让给了08级种子班。至今告别种子班的课程已有半年,但是回忆当初的日夜奋战还是感触颇多,同学几个走在一起,遥想当年,也是眉飞色舞,五味俱全。

种子班是学校的实验班,也是国家的一块创新教育试验田,所以它的评价体系,考核体系,培养模式,指导方针都与普通班很不一样。但并不是说优越,只是在探索。种子班以工程实践为主,弱化课堂讲授,强调自主及快速学习,强调“干中学”,考核以课程设计为主,课堂教育引用国外模式,《批判性思维》《信号完整性与电磁兼容》是直接从国外请来的老师,《工程导论》是学校的院士授课,《科技创新方法论》则是哲学系老师授课。种子班的办学目的是“培养一批兼具技术力和领导力的精英之才”。

当然目前种子班也面临一些问题,包括课堂与项目在时间上的冲突,理论与实践的切换矛盾,评价的公平性问题,考托考G没时间等等之类。

选择了就要担当,挺过种子班辛苦的磨砺,本身就是一种胜利。无尽的课设,无尽的熬夜。还清楚地记得,《Linux初步》的课设要求,小于3M的内核,小于32M的Image,支持用户登录及SSH远程登录,为了这个课设大伙集体在东五熬夜,困了就睡课桌,饿了就吃泡面,一个个从不懂Linux一下就变成了Linux高手,尽管非常辛苦,但也乐趣无限,半夜三更合影,侃MM,讲冷笑话。经历过生死的战友,才会显得弥足珍贵。还有《批判性思维》课上,大伙分组讨论,然后展开激烈的争辩,辩论来辩论去,尽管最终很难达成一致意见,但是听到他人的妙论,发现常理后面的玄机,都会让人感觉受益匪浅。很多课都是向我们灌输知识,但是很少有课是教我们如何去思考,《批判性思维》就是这样一门课,一门西方学生的必修课。《信号完整性与电磁兼容》是由来自美国Rose-hulman理工学院的宋健健老师讲授的,一个与学生走得很近的教授,他和我们一起喝酒,带我们去武汉高压所参观电磁暗室,课上请我们吃巧克力,但是亲近学生并不代表对我们的要求低。课上我们感觉用英语表述专业问题很吃力,他很耐心,然而并不让我们使用中文;他不在意给低分,我们的作业他都认真批改,只得了十几分,他也红笔大书其上;当他发现我们有抄作业的行为时,他给我们发邮件,告诫我们责任二字的重要性,“Rose-Hulman expects its students to be responsible adults and to behave at all times with honor and integrity.”。中国教师往往把自己的职责定位为讲授知识,而实际上,教师的品德或者恶习,进取或者无为,善良或者诡诈也都在潜移默化地影响着他的学生。当然还记得《操作系统及设计》课上详尽的剖析,还记得《多媒体与数据库》课上冗长的PPT,等等,等等。

07级种子班略带点悲剧色彩,一方面,04级种子班有四个女生,05级有两个女生,06级则只有一个,历史的演变是有规律的,07级种子班就光荣地成为了和尚班(08级种子班居然没按规律来,愤然),另一方面,前几界种子班都有各类成果留下,有专利,有论文,有产品,有电赛一等奖等,而我们这一界种子班,似乎没留下什么,也没有引以为豪的印记。尽管如此,但我知道咱07级种子班的19名硬汉,都是有想法,有进取心的,未来会述说我们的辉煌。

Tags : , 杂文
Posted by 忆向 十二月 - 17 - 2010 ADD COMMENTS

我来整些易懂易用的东西吧,关于什么呢?history的用法,请不要小看这个命令,如果你能够灵活,不仅能提高效率还能让菜鸟仰望一把。

首先大家都应该知道history命令的作用吧,就是记录用户在终端输入的命令,Ubuntu下记录文件为~/.bash_history,用户可以使用Ctrl+P,或者按方向键的上下来查找之前使用过的命令,以避免重复劳动。网上都说history默认记录1000条命令,感觉应该不只,但没有查到具体在什么地方设置。

history常用使用有:
history 查看历史命令
history -c 清除本终端的历史记录
history 1999 执行记录中的第1999号命令,1999只是随便说的一个数

大家有时候并不希望把当前的输入让history记录下来,因为可能不想按太多的方向键,这里有个小技巧,以空格开头的命令不会被记录,即先敲一个空格然后输入命令,这样history就不会记录本次输入了。

history更有用的一个特性就是事件指示符。

我们先来看一个常常会遇到的场景,就是输入一长串命令后,猛然发现自己忘记了敲sudo了,然后就郁闷啊,聪明一点的补救就是,先按Ctrl+P,再按Ctrl+A,输入sudo,再回车。更好的办法是直接输入sudo !!,回车。这里的!!就是使用了history的命令指示符。

比如上面我提到的history 1999,可以直接写成!1999,给人的感觉是!是history的简写。!-1表示倒数第一条,!-2表示倒数第二条,!-3依此类推。回到上面的sudo !!,后一个!等同于-1,所以也可以写成,sudo !-1。

我们再来看另一个常常遇到的场景,使用cc test.c -o run来编译代码,做了些修改后,你要么选择重新输入cc test.c -o run,要么不停地按Ctrl+P来打到刚才输入的命令,一个更好的办法就是使用!cc,然后回车。这个命令的意思是寻找最近一个以cc开头的命令,当然如果你不记得是以什么开头了,只记得有run这个单词,你可以输入!?run?,这个也很好理解,就是执行最近一个包含run的命令。

有时候你还会遇到这个场景,就是一长串命令通过Ctrl+P找到了,不过要对中间的某个单词作修改,好吧,这个没什么聪明的做法了,傻傻地一个劲的按方向键吧。那这时!!:s/test.c/main.c/可能会显得相当有用了,这个命令的作用是执行上一条命令,不过把其中的test.c替换成main.c,这里的s替换命令,想必大家不陌生,这与vim中是一致的,既然一致,什么正则表达式啊,就都可以用上了。

事实上,当你看到history这个命令的man里,你会惊讶地发现,这个简单得不足以引起注意的命令,里面居然别人有洞天。

Tags : , Ubuntu
Posted by 忆向 十二月 - 1 - 2010 ADD COMMENTS

图像处理的嵌入式项目中常常要将图片提前写到板子的SDRAM里面,然后在线调试,如果每次都从摄像头中拍摄图片,是很麻烦也很不稳定的。这就涉及到一个小工具,将各类格式的图片转换为文本,即一连串的0~255之间的整数,然后改写成一个巨大的二维数组,再将这个数组烧写到芯片中去。

如下是使用Python实现的这一功能,选择Python实现有很多好处,首先解释性语言,不需要编译,修改起来方便,同时,各种格式图片都能方便读取,如果使用C语言,避免不了还要用到ImageMagick库。

#!/usr/bin/env python

import Image

def pic2txt(infile,outfile):
	ff = open(outfile,'w')
	f = Image.open(infile)
	width,height = f.size
	ff.write('['+str(height)+']['+str(width)+']\n') #将大小写到第一行
	s = f.tostring() #将图片内容转换为字条串
	I = 0
	#get the proper mid pixel value
	min_val = ord(min(s))
	max_val = ord(max(s))
	mid_val = (min_val+max_val)/2
	print "min:mid:max = ",min_val,":",mid_val,":",max_val
	#jpg maybe RGB or Gray
	isGray = 1
	if width*height*3 == len(s):
		isGray = 3
	#start to sample
	while I<width*height*isGray:
		n = ord(s[I])
		if n<mid_val: #以mid_val为阈值
			n = 0
		else:
			n = 255
		ff.write(str(n))
		ff.write(",")
		I = I + isGray
		if I%(width*isGray) == 0:
			ff.write("\n")

	ff.close()

if __name__=="__main__":
	infile = 'test.jpg' #要读取的目标图片
	outfile = 'result.txt' #要写入的最终文件
	pic2txt(infile,outfile)

JPG有可能有RGB三个分量,也可能是灰度图,本身只一个分量,嵌入式中,尤其是基于DSP的图像识别,常常处理的是灰度图。

Tags : , Python
Posted by 忆向 十一月 - 30 - 2010 2 COMMENTS

到快要离开学校,结束自己的读书生涯时,突然又非常想学习,非常想看些书,甚至有把寝室书架上的书全都过一遍的冲动。

最近看了《我与商业领袖的合作与冲突》这本书,书看完了,来写些感想,以便日后再来温故。

此书获得“商业图书最佳传记奖”,由中国第一职业经理人李玉琢结合18年的商海经历而著。全书300页,均分为三部分,每一部分100页,分别记录了作者在四通,华为,利德华福三个顶级单位工作的心路历程。曾听一朋友说一个笑话,说某某人到A公司不过两年,A公司就垮了,又转到B公司,又不过两年B公司也垮了。而与这个笑话正好相反,作者李玉琢到四通时,四通一无所有,从零到上市,从上万元到上百亿资产,到成为中国民营企业的一面旗帜,而此时作者因忍受不了权力斗争离开了四通,进入华为。当时的华为名不见经传,属于刚刚起步阶段,到作者离开时,华为成为电信时代的代名词,一点几万起步,转化为百亿资产,成为中国民族产业的骄傲。在作者进入利德华福时,2000万的投资已经亏损殆尽,直等解散关门,而在作者离开利德华福时,起死回生的利德华福已经成为高压变频器领域的知名品牌,近千万的亏损转变为上亿元的年收入。这让我突然想到那句话,“在我离开时,这里应该比我初到时更加美好”。一个人在知天命之年,还能勤勤恳恳,积”跬步“,欲至千里,让人无比钦佩。本书名字中的”商业领袖“,我想应该包括四通的万润南,段永基,联想的柳传志,华为的任正非,得德华福的于波等。总之,这是一本中国式管理方面的极好教材,书中细节,兹不一一,只记录些,令我感受极为深刻的东西。

”英雄情结,自尊自爱,锋芒必露“,这是作者对自己认识,在书中也反复提到,作者对它的解释是:”永远追求上进,永远靠本事吃饭,永不与环境妥协“。在看完全书,我觉得这些认识是相当真切的,作者性情豪爽,公私分明,有意见就提,即便与领导争得面红耳赤。作者身居要职,为拒绝送礼,闭关不出。作者被人评价为”过分爱惜自己羽毛的人“。感叹于作者的性情,做人本应如此,做男人更应如此,勾心斗角,背地里坑人,不是大丈夫所为,再怎么爱惜自己的羽毛也不会过分。当然英雄常常气短,作者忍受不了无理的怀疑,接受查帐之时,也是拂袖而去之日,就这样作者离开了花去8年心血的四通。此类的原因,作者后又离开了奋斗了四年的华为,最后又离开了像抚养孩子一样子抚养大的得德华福。其实书中文字也充斥着一股豪情,作者喜欢使用“争战”,“战役”,“突围”,“牺牲”,“将在外”之类词,也喜欢引用兵法。

我一直觉得,工作无非分两种,给人家打工,和为自己劳动。全书最让我不解的是,作者18年来都是给人家打工,为他们做经理人,而作者的个性中强烈的自尊自爱成份,则导致了不能委屈求全,不能“屈”就导致了激烈的冲突,为人所排挤,被人猜疑。

口才与文笔也是创业者必备的素质。我不懂管理,也不懂经济,所以对书中资本运作理论不甚理解,其实作者也是技术出生,并没有管理专业的背景,所以此书应该算做作者的”亲身实践的果实“。对于作者的企业实践中的成功,撇开优秀的管理,前瞻的视野不谈,我想作者的成功,相当程度上还利益于其口才与文笔。”打工意识“大辩论上,作者一席话,赢得所有在场员工的拥护与呼喊,正是作者的极富感染力的演讲,奠定了这个普通干部在整个四通集团中的影响力。正是作者初到得德华福的一次鼓舞,激起了利德华福走出死亡的勇气。文笔方面,作者在利德华福的65个月中,140多篇”大字报“,篇篇激荡人心,在公司内外都树立了良好的企业形象,使其成为了企业精神。仔细想想,Dian团队的每月简报,其想法应该来源于此,而刘玉老师的口才,也应是Dian团队得以创立的因素之一。苹果的Jobs,美国总统Obama也都是口才高手。

平凡人太多了,我必须伟大起来。书中提到的各位商业领袖,他们都有伟大意识。万润南在创办四通时,提出”四通要做中国的IBM,IBM就是世界的四通“,任正非提出莫贝克的目标是”成为亚洲第一“,而作者在接手利德华福时的就立下目标要让这个濒临死亡的企业在六年内成为业界最优秀的企业。有不一样的梦想,才能造就不一样的人。伟人之所以伟大,就因为他们知道自己必须伟大起来。

老话重提,身体是革命的本钱。”在为事业奋斗的同时,我希望能兼有一个幸福的家庭与一个健康的身体”,这句话给我的印象非常深刻。如果按重要性给人的各种素质排个序,第一是人品,第二是能力。如果按重要性给一个男人生命中的各组成成份排个序,第一是健康的身体,第二是幸福的家庭,第三是辉煌的事业。作者在冠心病,心绞痛,前列腺增生等各种病痛的煎熬下,不得不有所放弃。在生命面前,事业就显得无足轻重了。2000年,作者不得不放弃在深圳的事业,坚持回到北京的家。

优秀的企业做技术,卓越的企业做文化,顶级的企业做历史,”百年老店“难求,从文化上引领卓越还是可以办到的。文化的基调就决定了员工做事的态度,以及精神风貌。作者只认可四通前期的文化,包括”四通是四通人的四通“,”上下同欲者胜“,”我们创造了四通,四通也创造了我们“,”没有效益的企业就是犯罪“,”我们是一群有缺点的人聚焦起来干一件大事“,”你有多大的能力,就给你铺多大的垫子“,”金钱有诱惑力,而事业才有凝聚力“,如此等等,从中你可以看到早期四通奉行的主题是,”创业“,”主人翁“,”认识自身缺点“,“宽容”,”伟大的事业“,所以工人会把四通看成自己的事业来对待。四通有足够大的胸怀,”离开四通的人不要再回来,如果你出去能够创造另外一个四通,那么这是四通最大的成就“,四通提供资金,提供培训,来支持员工干属于自己的事业。现在随处可见的”竞业禁止“,表现出当代企业者的狭隘与浅陋。作者认为,四通的转折点就是”打工意识“的提出,这也是在四通辉煌时期,干部们开始争夺享受成功的盛宴,“打工”文化像毒瘤一样,立马吞噬了民心,侵蚀了整个四通。在华为,作者从来都不认可华为文化,华为的文化为”狼文化“,可谓之为粗暴的进取,”说骂就骂,说踹就踹,说打就打“,华为在创办头七年,就已经走了1000人左右,而实际员工只有800左右,平均一年就有上百人离开,铺张浪费,用金钱树立企业地位。而到利德华福时,作者传承了四通的文化,广开言路,”企业因我添锦色“,”听多数人的意见,跟少数人商量,一个人说了算“(独裁与民主的和谐),如此等等。在考虑企业文化时,应该考虑大多数人的利益,考虑员工的利益,这样才是一个同心同德的企业。

书中还谈到了股权分配与”企业政治“的问题。创业容易守业难,这种难度致使事业长青几乎是不可能的,百年老店更是不可求的。四通在初业初期没有解决好股权分配的问题,这致使在四通走过创业阶段后就内战不断,都各个谋求自己的私利,不顾大局,争着比着挥霍胜利的果实,作者认为任正非的聪明在于,将股权分配给所有员工,把股权稀释到1%,在强调51%的绝对控股时代,这一做法是创造性的,也是需要胆量的,任正非也是有胆量的,”哪一天,员工聚集起来把我赶走,那说明华为成长起来了,华为不再需要我了“。作者认为柳传志的聪明之处在于,将股份均分给每位最初的创业者,这样也起到了制衡的作用。当合伙干一翻事业时,应该先把分配问题明确,”亲兄弟,明算账“还是很有道理的。

当企业变得庞大,机构变得复杂,权力发生纷争,就容易产生”企业政治“,作者最痛恨在公司内玩弄权术的人,作者自身也深受其害。结帮成派,互相猜忌,以权压人,巴结一些人,整死另一些人,这就是企业中的政治气息。其实团队大了,“企业政治”难免出现,在Dian团队内也常常遇到这样的问题,当处理一件事时,不分析实际情况,而是哭着喊着“某某老师说了的”,“某某老师肯定会不高兴的”,这都是“企业政治”的端倪。

我很佩服作者的育人思想,作者认为企业的要义是要“培养一批能独挡一面的将才,那么有一天自己不在了,公司还能正常运转”。“这是事业长青的无二法门”。很多公司”把女人当男人,把男人不当人“,把员工看成挣钱的机器,则忽视了员工自身发展的需要,觉得只要高工资,必然能留住人,这显然只能实现眼前利益,公司很难进一步扩大发展。

书还提到的经典理论有:

一件事如果没有人带头,就很难办成。

不能承担责任的人不能担重任。

人的差别就在于敢与不敢之间。

企业应该保持危机意识。

四通战略思想是,培养四通人,培养企业家。

能把一件在别人看来办不成的事情办成,那就是成功。

股份只代表说话的权力,而并不解决稳定问题。

所有的钱都想赚,这是中国人最不讲言义的一种表现。

做一个过分爱惜自己羽毛的人。

一个人不被放在企业老总的位置上,就不会系统思考问题,也不会磨炼出企业家必备的胆识与魄力。

企业不只具有经济作用,它还在创造企业文化,创造一种精神财富。在这两个创造过程中,一批企业管理者,一批适合市场经济的员工被培养起来,这才是一个真正企业的全部价值所在。

时常要让自己因目标的重要和伟大而兴奋起来。

”应有的信任“,在中国企业中最难获得。

我们要重视自己的工作,不是等别人来重视,而是要引起别人的重视。

产品可以说话。

对于会宣传的企业来说,哪里都是讲台。

寻找投资者不难,寻找优秀的经营管理者太难。

我不怕任何人向我的能力发出的任何挑战,但是对我人品的任何形式的怀疑,换来的都将是我的拂袖而去。

Tags : , 杂文
Posted by 忆向 十一月 - 29 - 2010 1 COMMENT

关于C语言中的四舍五入,本来不是什么大问题,但是吃过亏后,就发现这么个小问题也能整得我痛苦不已。 在C98标准中,标准C函数库好像是没有关于四舍五入的函数的,到了C99标准才出现了ceil(),floor(),nearbyint(),round()之类丰富的取整函数。现在大家使用的gcc都是C99标准了,而Windows下的VC(包括VS2008)还是C98标准,所以你需要遵从严格的”三从四德“,包括没有内联inline,没有单行注释//,变量要写在代码块的前头,等等,最大的郁闷就是没有那些可爱的函数的支持。 针对C98,人家在处理四舍五入时,习惯上使用加0.5再取整的方法,但是这个方法是有极大缺陷的,或者说是很强的限制条件的。前些时为种子杯(一个校级的软件编程比赛)决赛搭框架时,就被这个方法害惨了。 现在有一个浮点型变量f,通过如下语句是否可以四舍五入呢?

int(f+0.5);

不行,问题在于它对负数不行,如果f=-1.9,那么结果为-1,而不是想要的-2。你要注意对负数的取整相当于靠零取整,其效果与floor()函数在负数时,取整方向正好相反。再者对于负数来说,你需要做的是-0.5,而不是加0.5。当然对于负数的四舍五入,怎么定义的,不知道数学上有无定义过,这里就理解为四舍五入到最邻近的整数,也是非常合理的。因为我是要在一个长长的计算表达式里使用,当然就不想使用if判断,而且感觉问题如此简单,压根也没有想到会出那么多乱子。 各种曲折我也就不说了,直接摆上我的写法,当然尽管一改再改,一错再错,我硬是没有使用if判断。

float f = -2.9;
printf("%d\n",(int)(f+f-(int)(f)));

你可以发现,这里的技巧就是f-(int)(f)如果为负数,那说明f是负数,其差值为负,其大小则决定了是四舍,还是五入,如果差值正好为-0.5,那正好是我们所需要的,所以便将差值加到f上,最后取整,得到结果。你仔细想想就会发现,如果f为正数,它应该也能工作得很好,我就不赘述了。 如此,我就纠结了一下午,怎么也不会想到是四舍五入出了问题。对于解决方法也想过,写个函数,使用if判断一把,但最终没有屈服。 如果你使用C99的编译器,你就不要跟自己过不去了,果断使用round()函数吧。

Tags : , C++
Posted by 忆向 十一月 - 24 - 2010 1 COMMENT

[]是一个三目函数(可以这么理解,但很可能不正确),所以使用时,需要将三个参数用空格分开,如[ "abc" = "cde" ],那么命令[接收的三个参数分别为"abc",=,"cde",缺少哪一个空格都会有问题。

缺少最开始的空格,会报错“找不到["abc"命令",因为Bash把它俩看成是一块的了。没有最后一个空格,命令[都会报错,告诉你命令[不知道参数要读到哪里为止。缺少=两边的空格,那么该条件判断总为真,因为它把中间的整个看成了一个字符串,字符串不为空(因为至少有一个=号嘛),所以总为真。

当一个变量没定义,或者定义为"",那么使用下面的语句是正确的(注意代码中的空格与引号):

arg=""
if [ "$arg" = "" ]; then
	echo yes
else
	echo no
fi

当一个变量没有定义,或者定义为"",使用以下写法命令[会报错:

if [ $arg = "" ]; then
	echo yes
else
	echo no
fi

估计是当一个变量没有定义或者为""时,Bash便不会作为参数传递,导致[抱怨缺少参数,错误信息为:bash: [: =: unary operator expected。

还有一种写法也是常见到的:

if [ xxx$arg = "xxx" ]; then
	echo yes
else
	echo no
fi

因为在变量arg前加了xxx,所以即使变量arg没有定义或者为"",也能够保证命令[能够得到三个参数,达到判断的效果。当然加xxx还是yyy完全由你自己决定。除此外还有两种解决方法,方法一为使用默认参数(当然这里的NULL也是随意的):

if [ ${arg:-NULL} = "NULL" ]; then
	echo yes
else
	echo no
fi

方法二为使用[[]]:

if [[ $arg = "" ]]; then
	echo yes
else
	echo no
fi

[命令可以看成是一个三目函数,同时也可以看成是test函数的简写。如果只是查看某个变量是否为空,如下写法也许会更方便:

if [ -z $arg ]; then
	echo yes
else
	echo no
fi

相当于

if test -z $arg; then
	echo yes
else
	echo no
fi

脚本看多了,发现各家都有自己的风格,Linux下的脚本还常常出现如下的风格:

[ "abc" = "cde" ] && echo yes || echo no

这个风格不错,尽管不大好理解,不过一行能搞定,感觉比较爽。

到最后还是要说一句,[是一个命令,一个以符号为名字的命令,就你Javascript中的$()函数一样,名字奇怪了点罢了。你可以通过命令whereis [来找到它,估计会在/usr/bin/下面,不要把它误解为Bash的关键字,或者是一个内部函数什么的。

Tags : , Ubuntu
Posted by 忆向 十一月 - 24 - 2010 ADD COMMENTS

小谈一下腾讯面试的感受。

尽管已经想好去百度了,但早先内推到了腾讯,还是如期参加了腾讯的笔试,接着是好几次面试,到后来的HR面,再最后就是拒腾讯了。

腾讯给人的感觉是相当注重应届学生的课堂成绩,从几个方面可以体现:1,在网上投简历时,居然要填写自己在院系的排名,同时还要填写加权成绩。2,腾讯的笔试题目都不难但是面很广,很靠近课本,从二叉树遍历到快排,到进程调试,到死锁,到编译原理,到状态机,到物理地址逻辑地址转换,问题不深,且都很理论,总之,只要你好好看书,都答得上来,没有刁钻的问题。3,面试要带成绩单复印件,研究生,本科生都 要带。4,面试时面试官喜欢拿着你的考卷,来估计你的水平。所以,腾讯喜欢成绩好的老实人。这与腾讯“在模仿中超越”的理念是一致的。

我还是相当喜欢腾讯的面试官的。记得,由于武汉的公交堵得太厉害,加上自己突然拉肚子,第一场面试,我迟到了半个多小时,结果面试官直接打电话过来,热切询问我现在在哪,让我到了直接去找谁谁谁。让人感到自己受到了重视。另一方面,腾讯的面试官都比较年经,似乎大都不过30岁,到了30的估计都是元老级别了,可能因为年龄相差不甚大,而且又都是搞技术的,聊起来还很投缘,话题很广,也不避嫌。聊到未来IT的发展走向,聊到对腾讯的看法,其间,我直接说,腾讯让我感到畏惧,IT这块大蛋糕上,腾讯哪里都要插上一脚,什么都要分一杯羹,面试官笑着说:”你来腾讯了,你就不会畏惧了,你会感到我们做的东西还太少了。“ 由此可见,腾讯员工对腾讯的发展模式还是相当认同的。后来还聊到了武汉的公交,问我如何才能解决武汉的公交问题,我说,没办法解决了,只能借助于地铁了。还聊到对本科生与研究生的看法,面试官笑言,自己是研究生,可是自己的Leader是本科生,让我不要担心学历问题。无论是一面,二面,还是三面,都聊得很开,你似乎可以感觉到面试官很可能会是自己以后的同事,而他们就是想通过聊天,来看看你是否适合交朋友,是否合适一起工作。想必腾讯的文化应该是相当开明自由的。

是不是面试就不考技术了呢?也不是,只是比较简单,如何用递归来逆置一个字符串;C语言实现文件读写操作;对一个数组填充随机数,每个位置填充的随机数与其位置值不等,这些都是要当场在纸上写出程序的。还包括,apache的配置脚本的编写,apache线程池问题,系统启动原理,TCP/IP,Ajax原理,网游中的服务器与客户端通信问题,这些都只需要说说原理,说说自己的看法就OK了。搞技术的人碰到一起,交流起来很方便,我问面试官,对于我目前的知识掌握情况,有什么看法或者好的建议,面试官给了我一些很好的建议,建议我去学习一下apache的源码,只是会使用第三方软件,哪怕是开源的,对于实际的项目也是很受限的,要学通后,能够根据协议自己灵活的实现,这样才不会为别人的代码所限制,才能减低维护成本,减少出错效率。由于腾讯对技术的要求似乎很低,加上大量的扩招,所以让人无法不担心以后工作的同事会是什么水准,不过,如果周围人都太牛了,也不是好事,难有出头之日。

腾讯的HR是一个瘦弱的年轻人,一看就能猜到是搞技术出生的。同时,该HR也是一个很开明的人,知道我已经拿了百度的Offer,他并没有鄙视百度一翻然后夸耀腾讯如何如何好,两家公司他都分析了优劣,腾讯薪水较百度薪水低,他也挑得很明。再后来就是拒腾讯了,没有什么尴尬。

由于前段时间事情比较多,上面是回想的一个月前的事情,经历了QQ360事件后,对腾讯又有了新的认识,当然对QQ或者360增加的都是负面的认识,腾讯还很不成熟,完全没有大公司的气度,把用户的电脑当成自家的牌坊,它吵吵嚷嚷,大家就只能受着,当然QQ和360都是做流氓软件起家,迅速的膨胀让他还没有意识到一个大公司的责任,全然一股野蛮味道。发展至今,腾讯好像从没想过自己做蛋糕,让IT蛋糕变大,也从来没有想过要创造一个先进理念,让境界提升,反而不断地把面铺开,继邮箱,校友,影音之后,接着又是《葫芦娃大战群妖》,现在入手杀毒,系统维护,可见”一站式“系统透露着腾讯图谋IT垄断的巨大野心。哪一天,你发现世界上除了微软和腾讯,就不再需要其他公司时,它的目的就达到了,再或者腾讯也做操作系统,那微软也都不需要了。

工作只分两种,给别人打工,和为自己劳动。我的目标是后者,诚然腾讯的野心还是太让人畏惧了。

Tags : , 杂文
Posted by 忆向 十月 - 21 - 2010 2 COMMENTS

如果你的Ubuntu桌面是KDE,那么默认其右键会有打开终端的菜单项,同时打开的终端自动转到当前的路径下,而如果你是Gnome桌面,那么默认是没有这个功能的,这个就有点令人恼火,首先你要打开gnome-terminal,然后再一步步cd到当前路径下,工作起来太影响效率了。

这里介绍如何为Gnome的右键菜单中添加“gnome-terminal“菜单项,其实现步骤如下:

在~/.gnome2/nautilus-scripts目录下添加名为“gnome-ternimal”的脚本文件,其内容为

#!/bin/bash

if [ -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then
	set $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
	if [ $# -eq 1 ]; then
		destination="$1"
		# Go to file's directory if it's a file
		if [ ! -d "$destination" ]; then
			destination="`dirname "$destination"`"
		fi
	else
		zenity --error --title="Error - Open terminal here" \
 	       --text="You can only select one directory."
		exit 1
	fi
else
	destination= \
       "`echo "$NAUTILUS_SCRIPT_CURRENT_URI" | sed 's/^file:\/\///'`"
fi

# It's only possible to go to local directories
if [ -n "`echo "$destination" | grep '^[a-zA-Z0-9]\+:'`" ]; then
	zenity --error --title="Error - Open terminal here" \
	--text="Only local directories can be used."
	exit 1
fi

cd "$destination"
exec x-terminal-emulator

保存后,用chmod命令为这个bash脚本添加可执行属性。

这样我们的目的就达到了,你右键就会发现菜单中多了”Scripts“选项,其下一级子菜单就有”gnome-ternimal“选项,点击就会打开一个终端,而且路径已经转到了当前路径。

如果你想知道为什么以上的做法可行,或者想读懂上面的bash脚本,而不是任由我蛊惑,呵呵,那我很欣赏你,下面有一段相关说明会帮助你理解上面的做法。

”在~/.gnome2/nautilus-scripts/目录下的所有可执行文件都会出现在右键菜单的“Scripts”选项下,其子选项的名字就是可执行文件的名字,选择一个,那么该目录下相应的可执行文件就会执行。当从一个本地文件夹中右键点击菜单时,被选中的文件名会作为参数传递给可执行文件,而如果是在一个远程的文件夹中右键,比如web目录,ftp目录,那么不会传递任何参数给可执行脚本。
任何情况下,Nautilus都将设置下面一些环境变量,它们将被可执行脚本所用:
NAUTILUS_SCRIPT_SELECTED_FILE_PATHS: newline-delimited paths for selected files (only if local)
NAUTILUS_SCRIPT_SELECTED_URIS: newline-delimited URIs for selected files
NAUTILUS_SCRIPT_CURRENT_URI: URI for current location
NAUTILUS_SCRIPT_WINDOW_GEOMETRY: position and size of current window
NAUTILUS_SCRIPT_NEXT_PANE_SELECTED_FILE_PATHS: newline-delimited paths for selected files in the inactive pane of a split-view window (only if local)
NAUTILUS_SCRIPT_NEXT_PANE_SELECTED_URIS: newline-delimited URIs for selected files in the inactive pane of a split-view window
NAUTILUS_SCRIPT_NEXT_PANE_CURRENT_URI: URI for current location in the inactive pane of a split-view window”

所以,上面我们所添加的脚本做的事情很简单,只是获取了当前的路径,然后在打开终端前先cd过去,如此而已。

Tags : , Ubuntu
Posted by 忆向 十月 - 14 - 2010 ADD COMMENTS

[转载]李开复 2006年5月

算法是计算机科学领域最重要的基石之一,但却受到了国内一些程序员的冷落。许多学生看到一些公司在招聘时要求的编程语言五花八门,就产生了一种误解,认为学计算机就是学各种编程语言,或者认为,学习最新的语言、技术、标准就是最好的铺路方法。其实,大家被这些公司误导了。编程语言虽然该学,但是学习计算机算法和理论更重要,因为计算机语言和开发平台日新月异,但万变不离其宗的是那些算法和理论,例如数据结构、算法、编译原理、计算机体系结构、关系型数据库原理等等。在“开复学生网”上,有位同学生动地把这些基础课程比拟为“内功”,把新的语言、技术、标准比拟为“外功”。整天赶时髦的人最后只懂得招式,没有功力,是不可能成为高手的。

算法与我

当我在1980年转入计算机科学系时,还没有多少人的专业方向是计算机科学。有许多其他系的人嘲笑我们说:“知道为什么只有你们系要加一个‘科学’,而没有‘物理科学系’或‘化学科学系’吗?因为人家是真的科学,不需要画蛇添足,而你们自己心虚,生怕不‘科学’,才这样欲盖弥彰。” 其实,这点他们彻底弄错了。真正学懂计算机的人(不只是“编程匠”)都对数学有相当的造诣,既能用科学家的严谨思维来求证,也能用工程师的务实手段来解决问题——而这种思维和手段的最佳演绎就是“算法”。 记得我读博时写的Othello对弈软件获得了世界冠军。当时,得第二名的人认为我是靠侥幸才打赢他,不服气地问我的程序平均每秒能搜索多少步棋,当他发现我的软件在搜索效率上比他快60多倍时,才彻底服输。为什么在同样的机器上,我可以多做60倍的工作呢?这是因为我用了一个最新的算法,能够把一个指数函数转换成四个近似的表,只要用常数时间就可得到近似的答案。在这个例子中,是否用对算法才是能否赢得世界冠军的关键。 还记得1988年贝尔实验室副总裁亲自来访问我的学校,目的就是为了想了解为什么他们的语音识别系统比我开发的慢几十倍,而且,在扩大至大词汇系统后,速度差异更有几百倍之多。他们虽然买了几台超级计算机,勉强让系统跑了起来,但这么贵的计算资源让他们的产品部门很反感,因为“昂贵”的技术是没有应用前景的。在与他们探讨的过程中,我惊讶地发现一个O(n*m)的动态规划(dynamic programming)居然被他们做成了O(n*n*m)。更惊讶的是,他们还为此发表了不少文章,甚至为自己的算法起了一个很特别的名字,并将算法提名到一个科学会议里,希望能得到大奖。当时,贝尔实验室的研究员当然绝顶聪明,但他们全都是学数学、物理或电机出身,从未学过计算机科学或算法,才犯了这么基本的错误。我想那些人以后再也不会嘲笑学计算机科学的人了吧!

网络时代的算法

有人也许会说:“今天计算机这么快,算法还重要吗?”其实永远不会有太快的计算机,因为我们总会想出新的应用。虽然在摩尔定律的作用下,计算机的计算能力每年都在飞快增长,价格也在不断下降。可我们不要忘记,需要处理的信息量更是呈指数级的增长。现在每人每天都会创造出大量数据(照片,视频,语音,文本等等)。日益先进的记录和存储手段使我们每个人的信息量都在爆炸式的增长。互联网的信息流量和日志容量也在飞快增长。在科学研究方面,随着研究手段的进步,数据量更是达到了前所未有的程度。无论是三维图形、海量数据处理、机器学习、语音识别,都需要极大的计算量。在网络时代,越来越多的挑战需要靠卓越的算法来解决。 再举另一个网络时代的例子。在互联网和手机搜索上,如果要找附近的咖啡店,那么搜索引擎该怎么处理这个请求呢? 最简单的办法就是把整个城市的咖啡馆都找出来,然后计算出它们的所在位置与你之间的距离,再进行排序,然后返回最近的结果。但该如何计算距离呢?图论里有不少算法可以解决这个问题。 这么做也许是最直观的,但绝对不是最迅速的。如果一个城市只有为数不多的咖啡馆,那这么做应该没什么问题,反正计算量不大。但如果一个城市里有很多咖啡馆,又有很多用户都需要类似的搜索,那么服务器所承受的压力就大多了。在这种情况下,我们该怎样优化算法呢? 首先,我们可以把整个城市的咖啡馆做一次“预处理”。比如,把一个城市分成若干个“格子(grid)”,然后根据用户所在的位置把他放到某一个格子里,只对格子里的咖啡馆进行距离排序。 问题又来了,如果格子大小一样,那么绝大多数结果都可能出现在市中心的一个格子里,而郊区的格子里只有极少的结果。在这种情况下,我们应该把市中心多分出几个格子。更进一步,格子应该是一个“树结构”,最顶层是一个大格——整个城市,然后逐层下降,格子越来越小,这样有利于用户进行精确搜索——如果在最底层的格子里搜索结果不多,用户可以逐级上升,放大搜索范围。 上述算法对咖啡馆的例子很实用,但是它具有通用性吗?答案是否定的。把咖啡馆抽象一下,它是一个“点”,如果要搜索一个“面”该怎么办呢?比如,用户想去一个水库玩,而一个水库有好几个入口,那么哪一个离用户最近呢?这个时候,上述“树结构”就要改成“r-tree”,因为树中间的每一个节点都是一个范围,一个有边界的范围(参考:http://www.cs.umd.edu/~hjs/rtrees/index.html)。 通过这个小例子,我们看到,应用程序的要求千变万化,很多时候需要把一个复杂的问题分解成若干简单的小问题,然后再选用合适的算法和数据结构。 并行算法:Google的核心优势 上面的例子在Google里就要算是小case了!每天Google的网站要处理十亿个以上的搜索,GMail要储存几千万用户的2G邮箱,Google Earth要让数十万用户同时在整个地球上遨游,并将合适的图片经过互联网提交给每个用户。如果没有好的算法,这些应用都无法成为现实。 在这些的应用中,哪怕是最基本的问题都会给传统的计算带来很大的挑战。例如,每天都有十亿以上的用户访问Google的网站,使用Google的服务,也产生很多很多的日志(Log)。因为Log每分每秒都在飞速增加,我们必须有聪明的办法来进行处理。我曾经在面试中问过关于如何对log进行一些分析处理的问题,有很多面试者的回答虽然在逻辑上正确,但在实际应用中是几乎不可行的。按照他们的算法,即便用上几万台机器,我们的处理速度都跟不上数据产生的速度。 那么Google是如何解决这些问题的呢? 首先,在网络时代,就算有最好的算法,也要能在并行计算的环境下执行。在Google的数据中心,我们使用的是超大的并行计算机。但传统的并行算法运行时,效率会在增加机器数量后迅速降低,也就是说,十台机器如果有五倍的效果,增加到一千台时也许就只有几十倍的效果。这种事倍功半的代价是没有哪家公司可以负担得起的。而且,在许多并行算法中,只要一个结点犯错误,所有计算都会前功尽弃。 那么Google是如何开发出既有效率又能容错的并行计算的呢? Google最资深的计算机科学家Jeff Dean认识到, Google 所需的绝大部分数据处理都可以归结为一个简单的并行算法:Map and Reduce(http://labs.google.com/papers/mapreduce.html)。 这个算法能够在很多种计算中达到相当高的效率,而且是可扩展的(也就是说,一千台机器就算不能达到一千倍的效果,至少也可以达到几百倍的效果)。Map and Reduce的另外一大特色是它可以利用大批廉价的机器组成功能强大的server farm。最后,它的容错性能异常出色,就算一个server farm里面的机器down掉一半,整个farm依然能够运行。正是因为这个天才的认识,才有了Map and Reduce算法。借助该算法,Google几乎能无限地增加计算量,与日新月异的互联网应用一同成长。 算法并不局限于计算机和网络 举一个计算机领域外的例子:在高能物理研究方面,很多实验每秒钟都产生几个TB的数据量。但因为处理能力和存储能力的不足,科学家不得不把绝大部分未经处理的数据丢弃掉。可大家要知道,新元素的信息很有可能就藏在我们来不及处理的数据里面。同样的,在其他任何领域里,算法都可以改变人类的生活。例如人类基因的研究,就可能因为算法而发明新的医疗方式。在国家安全领域,有效的算法可能避免下一个911的发生。在气象方面,算法可以更好地预测未来天灾的发生,以拯救生命。 所以,如果你把计算机的发展放到应用和数据飞速增长的大环境下,你一定会发现,算法的重要性不是在日益减小,而是在日益加强。

给程序员的七个建议

(1)练内功。不要只花功夫学习各种流行的编程语言和工具,以及某些公司招聘广告上要求的科目。要把数据结构、算法、数据库、操作系统原理、计算机体系结构、计算机网络,离散数学等基础课程学好。大家不妨试试高德纳所著The Art of Computer Programming里的题目,如果你能够解决其中的大部分题目,就说明你在算法方面有一定的功力了。

(2)多实战。通过编程的实战积累经验、巩固知识。很多中国大学毕业生缺乏编程和调试经验;学习C语言,考试过关就算学会了;课题项目中,只要程序能够编译,运行,并且输入输出满足要求就算了事。这些做法是不行的。写程序的时候,大家必须多想想如何把程序写得更加精炼、高效、高质量。建议大家争取在大学四年中积累编写十万行代码的经验。我们必须明白的是:好程序员是写出来的,不是学出来的。

(3)求实干。不要轻视任何实际工作,比如一些看似简单的编码或测试。要不懈追求对细节一丝不苟的实干作风与敬业精神。我发现不少程序员对于知识的掌握很肤浅,不求甚解,没有好奇心,不会刨根问底。比如,学会了C++,是否了解一个对象在编译后,在汇编代码中是如何被初始化的?这个对象的各个成员在内存中是如何存放的?当一个成员函数被调用时,编译器在汇编代码中加入了哪些额外的动作?虚函数的调用是如何实现的? 这些东西恐怕在编程语言或编译原理中都没有详细提到,只有通过踏实的实干才能真正掌握。

(4)重视数学学习。数学是思维的体操,数学无处不在。学计算机至少要学习离散数学、概率论、布尔代数、集合论和数理逻辑。这些知识并不难,但是对你未来的工作帮助会很大。 尤其当你对一些“数学密集型”的领域如视频、图像处理等有兴趣时,这些知识将成为你手中的利器。

(5)培养团队精神,学会与人合作。今天的软件工程早已经不是一个人可以单独操作的,而必须靠团队合作才能成功。不懂得合作的人是不能成大器的。大家要多去寻找可以与人一起做项目的机会。

(6)激励创新意识,培养好奇心,不要死记硬背。没有掌握某种算法技术的根本原理,就不会有应变和创新的能力。想成为一位好程序员(其实从事任何一个行业都是如此),重要的是要养成钻研,好奇,创新,动手,合作的优秀习惯,不满足于填鸭,不满足于考试交差,不满足于表象。这不是学几门课能够一蹴而就的。

(7)有策略地“打工”。在不影响学业的前提下,寻找真正有意义的暑期工作或兼职。去找一个重视技术的公司,在一个好的“老板”指导下完成真正会被用户使用的程序。不要急于去一个要你做“头”而独挡一面的地方,因为向别人学习才是你的目的。找工作也是一样,不要只看待遇和职衔,要挑一个你能够学习的环境,一个愿意培养员工的企业,一个重视你的专业的公司。最后,还要挑一个好老板。 希望大家都能把握机会,养成好的学习习惯,把算法学精学透;希望大家都能有一个美好的未来!

Tags : , 杂文