克莱's profile克莱沃曼PhotosBlogListsMore ![]() | Help |
|
March 30 我大学是如何学习coding的记得大一学PASCAL的时候,觉得特别的难。刚开始接触,很难理解计算机的语言。虽然最后考了95分,可是根本没有真正的学会。后来又学了C语言,也没有什么coding的感觉。一直到了大三的第一学期,还是对计算机一窍不通,甚至不知道应该如何开,关计算机。看到非计算机专业的朋友熟练的操作着计算机,心里真不是一个滋味。也有大专的朋友show给我他的C,C++的程序,给我海阔天空的讲解了一番,心里真是佩服。大三第一学期过后的春节,说通父母给买了第一台计算机,从这个时候就真正开始了我的coding学习。 首先是要把C语言补回来,把C语言教程看了一遍,把语法理解,练习了几个小程序,找了找感觉。这个阶段是很快的,可能就是几天的时间吧,毕竟以前还是学过C的,然后开始学C++。当初问过老师,学C++需要多长时间。老师的回答是三个月。买了本C++教程,一天看完。心里很不以然老师说的三个月,感觉跟C差不多,就是多个class。后来就买了两本编游戏的书,开始模仿和练习编游戏,这样在当时我们的机房DOS系统下,我是专业里唯一一个能用GUI编程序的人。所有的assignment,我都编两个版本Text mode and UI mode, Text mode送给好朋友,UI mode自己用。这样半年之后,我才突然发觉,原来这才是C++。自己用了半年的时间才真正的学会C++。(C与C++的最大区别在于设计的思维:面向过程和面向对象,C到C++的转变是需要一个过程的)。这个时候再看当时show给我程序的朋友的C++的程序时,才发现他根本没有学会C++,他只是用C++在做C程序而已。 C,C++学会了,下一步怎么办?我的性格是愿意学习最难的东西,因此就选择了VC。当初去北京书店门口看到了广告“VC程序员试用期月薪4000”,觉得是天文数字了,也更坚定了要学习VC的决心。当初的学习条件还是非常艰苦的,市面上就两本书,我还很清楚的记得,一本是四川大学出版的,一本是龙门书局出版的。四川大学那本是入门的傻瓜教程,主要是教你怎样使用Visual Studio而已,没有深入的学习指导。龙门书局是翻译的微软的,讲的对我来说太深了,没法理解。因此主要学习川大那本,可是那本书还有问题,我按照书上所讲的去做,行不通。VC学习陷入困境,没有书可以查询,没有人可以问,自己也没有理解VC的精神。只能放弃VC,转而VB。VB当然很容易了,基本上不用怎么学就上手了。半年之后,有朋友想让我帮助编一个截取VCD片断的小程序。我用VB实现之后,准备给他用。然而,我却发现缺少dll, 这样我就把这个dll铐过去,又发现缺少其他的dll。搞了几次还不行,我也恼火了,就想能不能用VC试试。这次又拿起VC感觉就好多了,不但实现了这个小程序,并且第一次感觉VC入门了。从此之后,就走向了VC这条路。基本上来说,我是学校唯一一个会VC的人,而且几年以后也不过只有两个人会VC,另一个是跟了我一年,我带起来的。后来龙门书局的书也能理解了,再后来VC的书就慢慢多了,学习起来就越来越方便了。以我从小到大的学习经历来说,学习托福那段时间是最苦的,学习VC的这段时间是最难的。后来也没有再碰到这么大的困难学一个东西了。 Basically, 大学学习coding的时间是一年,半年从C到C++,半年从VB到VC。一年之后去单位做实习了。这一年发生了三件时间,比较值得回忆。 1。女朋友是通信系的,我帮助做了一次C语言的作业,没想到老师拿做范例在全系进行讲解。 2。MIS课程,我设计了一套足球俱乐部的管理系统,包括球员状态的纪录以及出场阵容的预测。老师对我的设计打分很一般,第一次上机我去找老师。因为家里有电脑,而且也喜欢编程序,因此我所有的课程都是第一次交作业,让老师验收。这个做法遭到了不少老师的抵抗,一直到我在国外读研究生的时候,才有老师欣赏。去找老师验收作业,他以为我是要讨论给我设计的分低的问题,就说“你设计的很好,可是不可能实现,因此我没有给你高分”。我说“我已经做完了,是来找你验收的”。他的脸色很不好,说“我一会儿去”。我走了,可是左等也不来,右等也不来,又看到别的同学叫他,他都出来,我也急了,硬把他给揪过来了。他看完之后没有说什么,问我是一个人做的,两个人做的。因为,我要帮一个哥们,就说是我们两个一起做的。他就说,“如果是你自己做的,我给你10分都嫌少(10分满分),如果是你们两个做的,我顶多给你8分”。后来的分数是7分。最后这门课程是我大学以来分数最低的(除了编译),不到70分。后来我读研的那个老师,也是说我的设计实现起来很困难,让我修改,我后来让他surprised的了,他却给了我全班最高分,唯一的90分。不过大学这个老师,后来对我还是很好的,在我困难的时候,帮了我很多,后来也含蓄的跟我表示过,不喜欢别人什么都没做,我帮他们。 3。编译原理的课程,因为不喜欢老师的教学风格,因此上课从来不带课本,都是自己拿本C++的书座在最后一排,自学。被老师看到过一次,问我为什么不看课本,我说没带,他再问我,我就一话不说了。应该是记住我了,而且很生气。这门课程上课没有听,下课也没有学。最后到了期末的上机实习,作业是Basic的解释程序。听说上一届的没有一个人能做出来的,我就回家了3天,一边自学编译原理,一边设计,编程。3天之后回到学校,大家都用怀疑的口气问我怎么样,没想到我的回答是“做出来了”。我们这届最后还有另外一个人做出来了,因为我是用C++,他是用PASCAL,而要求也是PASCAL,因此其他的人基本都是抄的他的了。第一次上机,我跟那个老师说,可不可以用C++,他说可以。我就说我做完了,你验收吧。他看了之后说了一句“挺好”。后来这门课,我不及格,上机10分给了我5分,理由是我上机时间太少。这事情在我们学校闹得很大,因为我平时的成绩基本都是80多分,90多分的也不少。后来进行试卷的review,其他学校的老师都不敢过来,只能自己学校review,最后的评语是“***同学不是无稽之谈,老师也有犯错误的时候”。可是,为了系里在学校的面子,还是牺牲了我。他们保证我补考肯定没有问题,可是我已经不敢相信他们了,因为补考不过,我毕业都有问题了。因此就在大四的时候多选了两门课来代替这门课的学分,也造成了自己断绝考验的准备,毕业就工作的现实。 学校是挺打压人才的,当然自己那个时候也很不懂事,在注重技术的时候,忽略了做人的一些要素。这里我想说的是,编程序一定要靠实践的积累,只有多动手,才能更深的理解问题,另外技术牛了之后也要更注意做人的方式,在中国很多时候会做人比会工作可能更重要。两个方面一起抓,以后才更容易有更好的发展。希望我的经历能给大家一点借鉴作用。 March 28 我的英文学习经历(从不及格到高考123,到4,6级,到雅思,托福)最近发现不少网友都关心英文学习的问题,有些人没有什么信心,那么我想把我的经历也写一下,希望对大家有所帮助。 首先声明,自己的英文一直很烂,即使到现在也很烂,幸运的是我的英文并没有阻碍我发展的步伐,虽然英文好有可能发展的更好。但是,至少我的英文还过得去,能够应付日常生活和工作。一般来说,搞技术的到达这样的程度也OK了,60分吧。 从小自己就对文科非常的反感,语文,英文,地理,历史,都厌恶的不得了。初一开始了英文学习,除了26个字母,好像就没学别的。考试基本都是不及格。时间太长了,记忆也不是很清楚了,总之我考高中的时候估分是30多分(100满分)。后来还比较幸运,最后的分数是73分,使我顺利考取了重点高中。这个应该是我初中最好的一次分数了,可能跟我考前的突击有关。 高中还是不爱学英文,因此成绩主要是50多分,60多分这个水平。这种状况一直持续到高三的第一学期的期中考试之后。班主任跟我的一次谈话对我的一生起到了很大的作用,也改变了我的命运。他跟我说“你应该努力,你的成绩如果考上大学也就考上了,考不上也差不了几分,会很可惜”。我惊异的问他“我还有可能考上大学?”。这是我第一次把大学跟自己联系起来。虽然初中有同学跟我说“你以后一定能考上大学”,初中班主任也跟我父母说过“他如果能考上重点高中,我保证他一定能考上重点大学”。这些我都没有在意,因为我是一个很贪玩的学生,大学离我太遥远了。可是这次不同了,也许自己长大了吧,也许高考又确实离自己很接近了吧,总之我从这个时候起才真正的开始我的学习。(以前的光阴都浪费了)。闲话少说了,我的英文学习经历也就是从这个时候开始的。 对于英文的学习,我的理解是两个基础,四个技能。两个基础就是:单词和语法。四个技能是:听,说,读,写。这里也叙述一下自己在这几方面的学习方法和过程。 1。高考的准备:由于基础太差,因此各个方面都需要弥补。单词手册背了2,3遍,买了本语法书,看了一遍。这样成绩就能稳定在70多分了,然后就没长进了,怎么考试都是这个成绩。后来老师让每人买一本阅读题的书,可能是有回扣吧,总之非常不适合,单词量太大,阅读的难度远远超过了高中水平,印刷也不好。不过我到现在也不明白当时是怎么回事,我用了2天的时间什么也没干,就看那本书了,虽然看不懂在讲什么,做题也对不了几道。总之,看完这本书之后,没有感觉水平增长,可是再考试就是80分的水平了。最终高考从60分的水平追到了80分的水平,用了一个半学期。我想这个阶段单词,语法,阅读的基础是打下了。不过,听,说,写基本还是零。 2。四级:大一第二学期过得4级,也没有什么特殊的准备,主要是靠高中的基础吧。专门背了一下四级的单词,当时的感觉是有一半的单词都不会。其实,到了大学我还不会音标,我还不能把一个英文句子念出来。这一点也不夸张,我初中老师教音标的时候我就没学。高考也不考口语和听力。因此买了盘磁带,自学音标,也开始坚持念课文。其实,一直到现在我还有很多音标不是很明白,也请教过一些人,包括北外的学生,也没给我讲明白。我现在觉得,汉语里没有的音标,我发音都有问题,也分不清楚。当时念英文是很怪怪的,现在应该好多了。 3。六级:大二第二学期过得6级,当时没有什么学习的方向。因为,过了4级,就不在上英文课了。自己不太清楚应该怎么学习去过六级。我主要做的工作就是去图书馆借英文小说看,一共看了10本左右吧。也没有专门背单词,后来拿起4级单词手册的时候,竟然发现里边的词几乎全都会了。看来阅读对单词量的增长很有帮助。也专门练了一下听力,《step by step》,VOA,有点进步,可还是很差。 4。雅思:因为雅思就是要考听,说,读,写,并且4项的比重是一样的。因此,只是阅读水平高是没有用的,最后要算平均分的。当时除了阅读,其他都很差。因为大学的时候专门练过一段时间听力,因此就集中在口语和写作上了。当时的实际水平是不能说一句英文,也不会写出一个完整的句子。口语我是去人大口语角练的,没有进步很大,可是至少可以张口说了。因为考试的范围还是有限的,把一些试题的答案事先进行了准备。写作可就难了,当时我是背了10几篇托福的文章,每天坚持练一次写作考试。这样准备一两个月,就很有感觉了。也总结了考试的一些技巧,最后写作考了8分(总分9分)。据说中国人可能没有能考满分的,所以我的写作在这次考试的准备中也建立了良好的基础。剩下就是听力和口语不行了。 5。托福:第一次在新东方做托福的练习,听力考试50道题,我只做对了22道。回家的路上,我很想哭,很伤心。我知道我听力很烂,可是没想到这么烂。后来就全力攻听力了。第一个月,每天听8个小时,第二个月受不了了,每天听4个小时,第三个月每天2个小时。终于,最后的托福考试没有拖后腿。58分,虽然跟牛人没得比,可是自己已经满足了,毕竟基础太差了。 后来的日子,单词,语法,阅读,写作都不再是很大的问题了。听力和口语就变成了我最大的痛苦了。在国内觉得听说也还OK了,到了国外才发现,老外说英文我根本就听不懂,我说英文老外也不明白。毕竟,中国自己人听自己人的英文还是要容易多了。后来意识到,自己对很多单词的发音竟然一直以来都是错误的。这也用了很长一段时间去修正。其实,一直到现在我的听力口语还不能算过关,上学的时候总是跟中国人一起,说英语的机会并不多,打电话一直很发憷。听广播,看电视,感觉也不少了,就是不觉得有进步。其实,自己也知道应该怎么去增强口语和听力,就是要下苦功夫,只是自己还没碰到太大的困难,没受到太大的刺激,没有动力去做了。现在就是希望能慢慢的改善。不过还好,现在的工作都是英文的环境,工作几个月听力还是感觉到了进步。刚来的时候,开会什么都听不懂,现在只要自己认真去听,还是能听个八九不离十了。电影还听不太懂,但是动画片好像也差不多了,这也是进步的表现。口语也进步了吧,至少打电话没感觉什么困难了。 口语,听力语言环境非常重要。对于国内的朋友就真的要下苦功才有可能学好的。我有同学人大毕业的,英文太牛了。可是他说他刚出国就是这水平。人家从刚开始学英文就很用功学习,大学坚持听VOA4年。所以,努力才是学英文的关键,不要灰心,只要肯努力都能学好。 March 20 我对UI自动化测试的理解引用一位很好的同事也是很好的朋友的一句话“UI的自动化,听起来很神秘,学起来很简单,真正用起来却很困难”。通过自己的经历,我很赞同这句话。最开始确实觉得很神秘,可以用程序来控制鼠标,键盘去操作软件,以前从来没接触过。后来学了一下几个流行的测试工具,感觉没什么东西,就是record and play。可是,真正用到项目里的时候确实是困难重重。这里想谈一下自己的感受,这方面不是专家,不过应该给测试的新手能有所帮助。 UI自动化最关键的一点是要选择一个适合自己项目的工具。每个测试工具都有它的优点,有它的缺点,每个被测试的项目也有它自己本身的特点。比如,项目是用什么语言编写的,C, C++, Java, or C#? 还有就是项目是什么类型的,Desktop or Web Application? 很难说一种工具就可以搞定所有或者大部分的项目,也很难说一个项目就能单纯的靠一种工具来搞定。也不太可能你专门开发一个工具来100%或者90%以上适合自己的项目,除非你的公司是微软,Google才有这个实力。因此对测试人员来说就有两个要求,一是要掌握尽可能多的工具,要了解它们的优缺点。这样才能在不同的项目中,一个项目不同的components去合理的应用它们。第二就是要有一定的开发功底,在测试工具不能胜任的时候,自己开发工具来作为补充。当然更可能的情况是每个公司只是拥有一种工具的license, 你没有选择的权利,这样你的开发能力就更加的重要了。(这里所说的开发能力不是自动化脚本的编写,主要是指C, C++, 至少是C#, Java的开发能力)。 下面说说如何去使用测试工具。最初接触就是record and replay, 感觉非常的简单。也碰到有些人竟然认为自动化测试就是record and replay。我必须说他们很无知,有这种思维的人可能以后都很难成大器,因为他们理解问题的能力太浅显了。希望论坛没有朋友会这么认为。(这里我说话不太好听,是因为为这种人生了太多的气了,希望大家谅解)。其实,我们record的script基本上每一句话都需要进行修改和优化。 UI自动化最重要的一件事情就是得到要操作的对象,比如一个textbox or button。必须先能够访问他们,得到他们才能够操作他们。这其实也是recording script的唯一的用途,告诉我们如何能够得到这个对象。这里会有两个问题,一是测试工具不能够得到这个对象。另外就是测试工具的脚本得到了这个对象,可是在replay的时候,对象却不存在。可以说UI自动化最核心的chanllenge就是是否能够得到对象了。得到了对象其他的相对来说都会容易很多。那么如果出现这两个问题怎么办呢?首先要分析是谁的问题?如果是测试工具本身的对象识别能力的问题,那只能找其他的方法绕过去了。比如自己用高级语言编些程序,或者用其他的方法来跳过操作这个对象来执行同样的操作。这个地方最能考查一个人水平的高低了,有些人束手无策,有些人就能够想到有效的办法。而且这个地方的chanllenge往往比一般的开发人员的工作要有难度。如果是程序本身的问题,就可以报bug了,让开发人员来修正。其实,程序的accessibility的bug是很多的,而且大部分公司或者开发人员都不重视,也许你报了也没用,没人理。可是他们如果不fix就会block你的Automation。对accessibility的重视程度也可以看出一个公司的自动化测试水平的高低。 以上讲了UI Automation的核心问题:怎样得到要操作的对象。有问题的话,解决办法是开发人员fix, 等待测试工具的升级,自己想workaround。得到了对象以后的chanllenge更多的是测试流程的控制和对异常的处理。自动生成的script,操作之间的timeout是定死的,这也是我们需要修改script的最重要的原因。我们要操作的对象,往往在timeout之后还没有出现,或者还没有enable。这个时候自动生成的script在replay的时候就会出错。那么我们就需要修改代码来等待足够的时候,一般的测试工具都提供了这样的功能。注意不要只是Sleep,这样的话无论这个对象出现的多快,你都是一定要等这段时间的。通常都是,约定一个时间,对象出现或者可用后就立即返回,无须等待剩余的时间。如果最后还没有出现就抱错吧。还有一个比较重要的问题就是其他意外窗口的干扰,比如一个窗口突然出现盖住了你要操作的对象怎么办?这时候你需要把你要操作的对象重新激活到桌面的最前面,这样鼠标才能正确的点击到目标的身上。还有一个比较好的办法就是不用鼠标去点击,调这个对象的click函数。也就是说,平时是鼠标点击然后激活click函数,我们可以直接用程序激活click函数。这样,即使目标被其他窗口盖住,也可以正确的执行你期望的操作。 以上是我想到的UI自动化的一些基本问题。以我的经验来看,你在自动化的过程中还是可能出现很多你意想不到的问题。这些问题可能的原因也是千奇百怪,可能是软件的bug,可能是测试工具的bug,甚至可能是操作系统的bug。对这些意想不到问题的解决能力非常重要,一方面通过测试经验的积累,另一方面就一定要靠你的想象力和创造力了。从自动化测试遇到的这些难题来讲,比一般的开发工作要困难得多。这里也说一下,水平高的测试人员不比开发人员差,比他们还要强。当然了,开发也有很多的难题,总的来说还是会比测试遇到的难题更多更难。因此,开发,测试没有水平高低的区别。真正的水平就是对难题的解决能力如何。 一般来说,desktop软件要比html网页容易一些,windows程序要比java容易一些。也就是说一般的测试工具对windows deskop的支持都比较好,对jave和html的支持会比较差。这是因为微软对programatic accessiblity有着严格的定义与要求。因此,如果你测试windows程序,自动化起来就省力多了,测试java程序就麻烦多了。我当时选择的Test Complete, 因为公司只有Silktest的license,虽然对java支持,可是支持的很不好,也许是版本太低了。而我发现新版的Test Complete竟然增加了对Java的支持,而且效果还不差,就选择了它。Winrunner我试过,好像得需要插件,我没有。Robot我忘记怎么回事了,好像也不是很好用,装不上还是怎么了。不太清楚他们对Java的支持如何。个人对Test Complete的功能,价钱,灵活性还是比较满意的,可以用来做一些东西,大家如果没经验可以从这个工具入手,建议用jscript语言。 March 19 我的google面试经历以前投过google,都会收到没有合适位置的礼貌性回信。后来自己的经验背景增强以后,又重新投过。不久收到回信,又是没有合适的位置。有些失望。不过10几分钟以后,又收到一封来信要跟我商量电话面试的时间。Google的招聘过程相比其他大公司来说显得有些混乱,这也是经历过Google面试人的共同感受,在我电话面试的时候也专门的跟面试官提起过,他也承认他们的面试流程存在问题,正在改善。这可能也是Google在全力扩张时期的一个必然要经历的阶段吧。 Google的测试人员分为两种SQAE和SET,SQAE90%都是手工测试,因此面试只需要懂得基本的编程技术即可。SET90%都是自动化测试,因此对编程,对算法的要求都相当的高,可能是业界对测试人员要求最高的了。 电话面试大概是去年2月底吧,也可能是3月初。电话是从Mountain View总部打过来的,因为时差的原因,面试只能在早上进行。电话面试全英文的,问了很多技术的问题,也问了我自己的工作经验。我说我的产品专门让你们的Google desktop不起作用,他也很感兴趣。没想到最后竟然用中文跟我对话,很surprised,以为是个老外,原来是个台湾人。最后跟我用中文说了一句,“我觉得你很好,真的”。心里很高兴。也问了一下是考虑我总部的职位还是北京的职位,他说是北京的,我说OK了。 不久安排Onsite面试,问需不需要定机票,可以订世界任何城市到北京的机票。看来北京的招聘是下了大成本的,不过我不需要,有点遗憾了。不幸的是,面试的前一天早上开始发高烧,都不能坚持上班了,面试的时候依然在高烧状态。HR是个小女孩,只懂得一点中文,英文速度非常快,我听着也比较困难,幸好话不多。面试一共四关,全部是中文面试。都是总部派来的台湾或者大陆会讲国语的工程师。第一关是一个SQAE,应该不怎么懂编程。面试了一些可能是她工作中常用到的技术,不难,不过我没怎么用过,我搞得东西她也不懂,感觉考察不出自己的水平。好像也问了一道算法题,我没有答出来。第二关是一个SET,因为职位相近,因此这关感觉最好。谈得很投机,问了两道算法题,竟然有一道就是刚才没做出来的。这次集中精力,做出来了,不过回答的有些糊涂,也确实脑子高烧的糊涂。她也问我怎么这么糊涂,我说我在发高烧,这道题刚才那个人就给我出了,我刚才没答出来。她责怪我怎么不早告诉她,还说要告诉刚才那个人给我把review写好点。后边两关是两个developer, 难题全部出在了算法。这是我第一次面试算法题,以前从来没经历过算法面试。总之答得不好,脑子烧得糊涂,又没有准备。第三关的人感觉态度挺冷淡的,也可能看我面试效果不好,我也没跟他说我在发烧。第四关的人感觉挺nice的,我不会,他也告诉我答案了。确实不容易,都不是直接能出来的,需要数学的推理,根据推理后的结果,才能生成程序。这个东西必须事先准备,否则基本是不可能做出来。 感觉面试的效果很不好,离开的时候,送了一件T-shirt, 一支笔,一本李开复的书。我跟HR说,如果SET不行的话,能不能考虑我做SQAE。她说会把我的意思告诉committee的,一个月之后出结果。 之前面试了不少公司了,都是因为待遇的问题没有谈妥。也挺崇拜Google, 也很珍惜这次机会,很不理解为什么会突然发烧,这么影响自己的面试表现。 等了一个多月了,根本没有跟我联系。发信去问,几天后那个组织面试的HR给我打电话过来,问我为什么想跳槽,还问我给我Local的待遇能不能接受,我说能。后来就再也没有音讯了。 国内求职不顺,只能考虑国外了。总之6月在国外工作的时候,Google的总部有人跟我联系,说对我感兴趣,并且是总部的职位,SET。这个时候已经拿到另外大公司的offer,只是还没有最终确定,还没有100%。因此又参加了他们的电话面试。先是HR的人,问得到都是技术上的问题。只是很死板,好像他们根本不懂,只是拿着试题和答案发问。记得我回答的也不好。没两天安排技术面试,到现在我也不明白是那个HR的面试我通过了,还是没通过,这次面试只是另外一个部门呢?总之都不是同一个人组织的。 面试的可能是一个老印,英文不是很容易听。用Google的Online 那个字处理软件。我听不懂就让他写在上边。还是那些东西,不过这次有经验了,算法题基本都做对了。总之,我感觉是挺好的。没想到组织中国面试的那个HR又发邮件跟我联系了,问我还做不做北京的SQAE的职位。我说不做了,可以考虑总部的SET的职位。她说问问领导,后来跟我说可以,不过还要重新面试,而且是SQAE。我告诉她我正在跟Google的其他部门进行SET的面试,另外也告诉她了,我已经得到其他公司的SET职位。因此我们就不再继续下去了。 后来另外一个部门的HR给我写信说我的电话面试不错,希望能再安排一次面试。没有回,准备去新公司上班了。已经上班以后,又收到她的邮件说希望再跟我安排一次面试,这次就明确说明了我已经开始新工作了,不再考虑跳槽了。以下是她给我的最后一封邮件,我和Google的缘分也结束了。 Hi XXXX, Congratulations on your offer with XXXX and thanks for following up with me. I greatly appreciate it! If things should change with your situation, please let me know. The door is open to continue at anytime with your application at Google. Cheers to you!! XXXXX March 18 关于海归的薪水问题
如果不是外派,基本都是给local的薪水。也就是说跟国内人相比,如果水平相同,薪水应该是一样的。如果还是中国国籍,保险,住房基金等等都有。如果加入外国国籍,这些就都没有了。不过有些公司会补在工资里。总的来说,外籍在待遇上没有任何优势,反而有劣势。 March 16 我的海归20个月的过程和感受(3)下面先说一下中国当代的三座大山:住房,教育,医疗 其实,20万的年薪应该在国内能活得很滋润了,购买力确实比加拿大一般的薪水高很多。但是,如果我们考虑到三座大山,情况似乎就变得复 杂起来。首先,房子现在是要比加拿大贵,而且还一个劲的涨,政府越调控,涨的越厉害。最近稍微缓慢了些,但是趋势不会改变。价格的不 断上涨,我认为有以下几个原因。 1。符合全球的现状:现在,加拿大,美国哪里的房子不是在涨,热点地区涨得也很凶猛。 2。符合中国的经济增长情况:我认为只要是中国的经济再增长,房子必定会涨。 3。北京地少人多,又是中国的最热点城市之一,必定要涨:现在北京四环以内基本上是没有新房了。很多房子在五环以外,都达到了8000一平 米。 4。炒房团:包括集体炒房,个人投资。现在中国可以投资的地方,对老百姓来说似乎只有房地产保险。因此,只要是有点钱的人,都会想尽办 法投入进来。 5。地皮拍卖:现在政府是拍卖地皮,开发商只有竞得高价才能取得开发权。然后,这些就转嫁到了老百姓头上。 6。很少有人愿意卖二手房:如果不是特别缺钱,大家都是用来出租。二手房市场很小,因此在平衡新房的价格上来说,起不到什么作用。 7。北京的规划人口是1700万,现在是1300万。还有400万的空缺支持,房子不涨才怪。 不过北京的房子也有个特点,无论怎么涨,基本上到达1万一平米之后,就会变得非常缓慢。因此,对投资来说5,6千的房子比较合适,一般很 快就会涨到8000。另外北京最好的区就是海淀了,上风上水,自然,人文环境好。不过这里已经很难见到新楼盘了。基本已经开发完毕了。这 里又是中关村的所在地,所以,IT人士买房子更头疼。有钱还没得可选。 这里说一下北京的IT分布,基本上就是3块:国贸,中关村,上地。由于租金的上涨,很多公司已经或者开始从国贸迁往望京。比如,摩托罗拉 ,爱立信,西门子,施耐得等等。不过主要是通信公司。中关村现在以清华科技园为主,很多大外企。最近google的总部也设在了那里。不过 微软不在那里,在西格玛大厦。上地主要是囤积了国内的公司和一些小外企。也有大外企在那里,比如IBM,Oracle.不过,上地和中关村还是 差了个档次。而且,设在那里的外企的工资都不会很高,因为从地点上来看,他们就很小气。上地最近新开了一个楼盘,起价都到了1万以上, 叫上地moma好像。感觉十分可笑。 谈完价格问题,要谈两个更重要的问题。虽然房子贵,也许我们还能承受。可是,谈到房子的质量,和物业的服务,我们就会非常的无可奈何 了。我可以负责任的说,北京的房子基本100%有质量问题,物业服务也是基本100%不会令人满意。举几个例子: 首先物业打人的事情是经常发生的,我也记不住具体的物业名字了,大家随便在网上找找,应该就不少。这里说说质量问题吧。 1。我自己的房子,墙面多处出现裂痕,卫生间的墙面渗水到卫生间外面的墙面,卫生间地面斜面不对,积水不能到达地漏。 2。老板的房子,厨房顶层的瓷砖一碰就往下掉。没有设计装空调的位置。 3。同学的房子,有一次下雨过后,整栋楼突然下降10几厘米,一层出现了墙体裂痕。 4。电视上看到的,一个楼盘几个月之内,天然气爆炸了3次。一个楼盘的阳台只是用几根铁皮连住,整天往楼底下掉石灰。看样子铁皮生锈腐 烂掉以后,整个阳台都会掉下去。一个楼盘的一面墙,从底层到顶层同一位置,出现了一个大裂缝。一个电视主持人买了个别墅,整栋房子渗 水,修复几次没有作用,现正打官司。 还有很多,就不多说了。总之买房子就像赌博一样,赶不好,会烦死你。对了,再说一个百旺山那里的楼盘,环境巨好,房子也漂亮,价钱也 便宜。不过附近有个垃圾场,夏天晚上的恶臭可以把人熏醒。如果你不事先明了,买了之后就惨了。当然了,不是所有的房子都这样。也有房 子的质量,物业都很好。不过,十分罕见罢了。如果保险起见,买个这些地方的二手房是不错的选择。 最后说一下房产证的问题。通常开发商是要先取得预售许可证,就可以卖房子了。你也可以买了,可以得到发票和合同。不过,在入住以后, 还要办理房产证,如果房产证办不下来,你对房子就没有合法的权益。如果拆迁或者什么,你就得不到合法的保障。可是,就会出现由于开发 商的资质问题,房产证下不来的情况。我就奇怪了,既然资质有问题,为什么当初让他卖房子呢?既然允许他卖房子,我也有发票,合同,为 什么不具有房屋的真正权利呢?虽然法律规定,入住几个月开发商要办理好房产证。可是,实际情况却相差甚远。我知道有人好几年还办不下 来的,我自己的也快两年了,也没有下来。其实,房产证才是最重要的一个问题。 <本文发表于: 相约加拿大:枫下论坛 www.rolia.net/forum > 海归感受(2)先回答一下victor的问题。其实来加拿大之前我只是工作了一年半年。我第一年的年薪是2万,第二年跳槽到了一个10万的工作。感觉发展到头 了(因为我学历,学校名气都不好),所以才进行加拿大移民的。 所以,其实并没有去真正体会在中国的工作。我海归之前也没有在加拿大工作过,这个我已经说明了。我当时海归是觉得国内的选择面广,而 且我回去20个月虽说很多不爽,可是也确实得到了很多。我认为不是浪费时间。另外,我重新回到北美也是因为感觉在国内发展到头了,需要 回来积攒一下经验(不是能力的问题,而是背景的问题)。过两年我也很可能会重新回去。当然以后怎样我也不清楚,自己预测也常常不准, 事情的发展也往往不像自己设想的那样。我这里只是讲述一下我已经走过的路,希望也能给大家的讨论带来点自己的真实经验。也希望你能多 给我指点指点,也多介绍些在美国的经验。 继续之前我想再说一些其他情况。当时有同学给我介绍motolora的工作,我联系了一下那个manager,他们的工资待遇是税后6000多。对我来说 没什么好考虑的,我对通信行业也不感兴趣。现在motolora,IBM等一些外企本地化已经很成熟了,工资待遇也本地化了。我们很难拿到高薪, 据说我要是去IBM也就是8000。因此,再后来的跳槽过程中,我也根本没考虑过这些公司。也碰到了一些这些公司外派回来的,不过人家是在美 国总部工作过一段时间了。我们加拿大的海归,恐怕很难拿到外派的package. 一个亲戚Oracle曾经60万年薪聘请没有去,说给我介绍工作,让我开价月薪3万。事实证明,他说的是搞市场的工资,搞技术的人是没什么希望 的。另外,公司中有个牛人,在国内安全领域的名声很响,后来得知,当时的薪水也不到20万。 也有同学跟我说,国内的外企给月薪1万就不错了,撑死了1万5。事实证明说得非常准确。我也常常看到有人回去拿几十万的,但是在我的水平 和认识的人中,是没有可能的。当然了,后来的老板给我透漏,等我在北美工作两年,回去做manager,可以给到30多万,senior manager 40 万。我们公司的待遇在国内外企就算很高的了。也就这个水平了。过去做manager的人,背景都不一般,在美国就是manager了。 因为,我lead的人都是比我早进公司的,所以,其实我也没有真正去lead他们,只是自己多干事情罢了。因为一直都是想回到开发,而且看情 况公司也没指望给我调整了。还由于公司的测试水平比较低,没有什么技术含量,也学不到东西。大概半年吧,就想跳槽了。给微软投过无数 简历,没有回音。有一天发现一个公司叫SAS的招人,查了一下还是个大公司。上午投了简历,下午通知我第二天去面试。面试完毕,他们还是 想让我做测试,待遇问题,我要了20万,最后谈成了15万。后来,得知我可能马上要回加拿大参加公民考试。他们急着要人,也就没给offer, 让我事情办妥再跟他们联系。因为,后来马上碰到了新的机遇,也就没有再次跟他们联系。 <本文发表于: 相约加拿大:枫下论坛 www.rolia.net/forum > 我的海归20个月的过程和感受(1)最近大家讨论海归比较热烈,我也说一下自己的亲身感受与过程。 首先说说自己为什么海归? 04年master毕业,立马海归,原因有以下几个: 1.确实思念中国:parents, friends, food, culture etc. 2.看到同学找到的工作,自己都不满意,想做自己喜欢的工作。 3.从工资来看,感觉跟国内比没有太大优势,认为国内20万自己能力还是可以达到的,而且生活不会比在加拿大差。 因此自己给自己制定一个计划:起薪10万,这是出国前工资。一年后15万,两年后20万。工作在network security or game field. 回国前开始发简历,联系,定了6个interviews。(没有单位愿意我在加拿大的时候就给我offer,另外也没有大外企) 回国后马上安排了3天面试,一天两个。在第二天早上面试第三家公司的时候,接到第一家公司的电话,给了offer。(实际上在当天下午,他 们就发email联系我了,因为我还没有手机,也不能check email,所以第二天早上才能确定)。 经验:虽然我要的工资不高,也许很多人认为很低。可是这也是很快找到工作的关键。后来同样有加拿大海归来公司面试,以前国内motolora 的,要了15万,被老板给fail掉了。后来工作中证明了能力,工资也是一直在涨,基本都提前完成了我的计划。 这个公司是家美国小公司,不过在security某个领域是世界领先的,多年排在第一位。在我安排的6个面试中,这家也是我最感兴趣的了,所以 ,得了offer就没有再去别的公司面试。 进入公司是software developer, 但是因为当时没有开发任务,就先安排我做testing的工作。不是很满意,当初对testing也是不理解,觉得 技术含量低。但是,既然是公司交给我的任务就要好好完成吧。再简单的工作,想做得比别人出色也不容易。做到一个多月的时候, supervisor生病,manager让我临时客串了一下,也就是一天。后来几天manager找我,说觉得我有leadership的潜力。因此,3个月后promote 到team lead. 从此和testing也就分不开了。 <本文发表于: 相约加拿大:枫下论坛 www.rolia.net/forum > 关于测试人员的发展那我说一下我的看法吧。因为大家都是搞测试的,这里我也只谈测试。 首先,我们可以有两条路发展,技术和管理。管理就是做team lead, manager, director这么走。因为我没有走这条路,所以,我这里也只谈技术。而且,即使走管理,也是应该 具备很强的技术能力才行,所以技术是我们的发展之本。我个人不喜欢技术不精通的领导,也不喜欢被这种人管理。 技术的发展是分阶段的,基本上你要是能发展到最后的阶段,工作,钱,房子,车子,老婆都不用发愁了。当然要一步一步走,不可能一步升天,而且一路走过来也不是很容易, 应该说大部分人可能都达不到。不过只要你肯努力,坚持不懈,就一定能达到。 第一阶段:就是基本功的问题。这个阶段从大学入学就开始了,我接触不少人工作几年都没有达到要求。这个要求是一定要达到的,不然以后没法往高发展。大学的一些课程一定 要学好,主要是数据结构,算法,数据库,操作系统,计算机网络。争取精通两门。数据结构,算法对软件开发非常的重要,很多大公司面试就考这些。你不过关,根本通过不了 面试,一两道算法题一下就把你难住了。另外,我可以告诉你,顶尖公司的面试80%都是考算法,你有没有经验不要紧,做没做过项目不要紧。关键是考察你的基本功,基本功打好 了,其他工作就都容易很多了,基本功打不好,什么都白说。操作系统,争取要精通windows或者linux内核,看你走哪条路了,我是搞windows的,不过他们之间很多地方也是相通 的。计算机网络,争取精通TCP/IP协议。数据库我不怎么懂,我的理解是要精通oracle, sqlserver, 还有sql编程。 另外就是编程技术了. C,C++,面向对象一定要搞懂,搞熟。大公司面试的算法就是要你用C/C++实现的。这些搞熟了,学习其他语言就是几个小时的事情。(我指的是上手,不是精 通)。这些东西搞不透,不管你其他语言用多少年,回来学他们还是难。 再有就是英语水平了,听说读写,各个方面都要达到要求。技术到了一定程度,英语对你的发展就起到了非常决定性的作用了。你英语好,就可以去外企,就可以外派出国,甚至 在国外发展。 以上这些都是在大学应该掌握好的。当然了,能在大学掌握好这些的毕竟是少数。这些少数人就是去了微软,google的那些,一毕业就拿到月薪上万工资的。大部分人都是达不到 要求的,这没关系,毕业后一定要找时间把这些基本功补上。不然的话,在下个阶段的发展就很受限制了。 第二阶段:计算机知识的扩展,行业知识的精通。这个阶段从你大学毕业走向第一个工作岗位开始。工作之后,发现计算机的世界比大学的知识要博大精深很多。一开始工作,就 要拼命吸收以前没有接触过的,新的知识。这个就不多说了,大家都会有很多感受的,会觉得很多东西都不会,不会就学。以后你跳槽去面试,人家就会看你工作几年,这几年干 什么了。工作1,2年之后,很重要的一件事情就是要选择一个行业了。也许是你现在正在从事的行业,也许是一个新的行业。总之,你自己要为自己规划,选择一个适合自己,而 且又热门,以后有发展的行业。无论是现在的行业,还是跳槽到一个新的行业,都需要你开始积累在这个行业的经验了,要精通这个行业。有这个基础之后,就要去这个行业里top 的公司了,国企,外企都可以,一定要有名气,大公司。比如,通信的华为,搜索的百度,等等。如果你精通了这个行业,去这些公司不是很难。 另外有一点很重要,如果你本科不是一所名校毕业的话,争取能上一个名校的研究生,全职,兼职都可以。这样可以为下一阶段做好充分的准备,否则的话会有比较大的困难。总 之了,是自己的短处都要想办法去弥补,不然发展总会受限制。 第三阶段:国际著名大公司。有了前两个阶段的积累,加上自己的英文水平,就要找机会进入国际的大公司了。相信这个时候就会有很多猎头来联系你了。选择你这个行业的世界 前3,最好是第一或者第二。进去之后要学习两个方面,一是英文,中国人可以学一辈子英文的。另外一个就是大公司的管理。可以这样说,国际大公司的管理有很多类似的地方, 因此他们的招聘非常愿意招其他国际大公司的职员。这就是为什么,你一旦踏上一家公司,一辈子都不用愁工作了,可以在这些大公司跳来跳去,工资节节高。到了这个阶段,你 基本上可以有个比较不错的生活了,房子,车子都不会是太大的问题。 第四阶段:向国际化发展。如果你还不满足,觉得自己还有能力更进一步,那我就建议你向国际化发展了。中国的工资毕竟有限,到了第三阶段也不过就是20万左右,你可能还不 满足。那么你就可以联系国外的公司了,有了你的英文,你的经验,你的背景,到时候就是水到渠成了。我相信国际的猎头也会盯上你的。 最后说一下,如果你现在已经具备了我所说的各个阶段的能力,那么你的简历是任何公司都很难拒绝的了。因为目前的情况,具有这些素质的测试人员在世界都紧缺。很多公司都 招不到人,即使连google,MS也不列外。他们都在到处寻找这种人。 最后说一下测试。我一直没有讨论测试的问题,因为我一直没有把测试当作一个难得东西来看待。我认为测试是表面上的,我前边提到的东西要比它重要的多。欢迎大家一起来讨 论。我也是进入测试才2年多的时候,其中大多数的时间也像大家一样的迷惘,很多时候也很悲观。不过通过自己的努力,最后终于得到了一个满意的结果。我发现自己对测试这个 行业的理解和很多人都不同,希望我的理解能给大家一点帮助。 March 15 关于我的自动化测试系统首先,这里介绍的是architecture,我基本上想设计一个open, flexible, extensible的系统。并且我也希望能学习新的知识和技术,因此用到了对我来说比较新的东西。 系统共分4层,所以是一个layered framework。从上往下,依次是application layer, service layer, module layer and environment layer. 1. Application layer: 就是一个网站,作用是system configuration, test case creation, test case distribution, test case scheduling,test execution monitoring, and test results reporting. 也就是说在这个网站上进行测试系统的配置,测试用例的生成与分发,schedule, 监视测试用例的执行情况,还有就是观看最后生成的测试报告。 用到的技术有:C#, ASP.NET, ActiveX, Web service, SOAP, XML。 2. Service layer: 就是一个Web service, 作用是从Application layer接受到所有的测试任务(写在xml里),负责解释XML,并且调度测试机,给测试机发命令,回收测试结果,组合结果返回给Application layer. 用到的技术有:C#, ASP.NET, Web service, SOAP, XML, TCP/IP, Client/Server. 另外一个在Service layer的是一个Windows service, 它的作用是接受Web service 的命令,执行并返回结果。 用到的技术有:C#, TCP/IP, Client/Server. 3. Module layer: 就是一个动态链接库dll, 负责给Service layer提供basic interface, 把一些公用的功能封装起来。 用到的技术有:C#, Dll, TCP/IP, XML。 这层是整个系统的技术核心,其他层都是从这个层扩展出去的。 4. Environment layer: 就是测试环境层。这一层就完全是根据所测试产品的需要来设计了。我的设计是一台real machine上边运行VMware, 这台machine的作用不是进行测试,是负责根据需要打开不同的虚拟机。真正的测试是在虚拟机上进行的。虚拟机上的测试有command line 和 GUI 两种。 Commandline就直接运行,GUI的测试是用Test Complete + Jscript来实现的。 用到的工具与技术有:Jscript, Java, Test Complete, VMware workstation.
有一些关键的设计有一定的原因。Application Layer就是一个网站,它具有能力去集成所有需要测试的项目。每个项目需要具有一个Web service, 因此多个项目就会有多个Web service。每个项目的的XML文件的输入格式都是不一样的,这个可以在Application layer在自定义。Application layer只是负责编辑XML, Service layer需要进行解释,也只有它才能进行解释。这是因为,每个项目的测试工程师才真正的明白他们想测什么,想怎么测。由于Service layer 把不同的项目分隔开,因此,不同的项目也可以设计不同的Environment layer。测试的logic是掌握在Service layer的手里。
因此整个一个测试的流程是这样的:在网站上自定义XML的结构,因此生成相应的Test case 界面。进行系统和test case的设计,生成相应的XML文件。通过Web service, 传送XML到Service layer, Service layer 解释XML, 一个case,一个cased的去执行。每一个case需要不同的虚拟机,Service layer告诉那台real machine去打开相应的虚拟机,之后告诉虚拟机需要执行什么样的任务。虚拟机启动command line命令,或者调用Jscript脚本通过Test complete来执行GUI的操作。之后返回结果给Service layer。所有case执行完毕,Service layer生成最后的报告传递给Application layer。Application layer负责显示报告给用户。还有就是Service layer间隔一定时间把测试情况返回给Application layer, 这样用户可以监视测试的状态。
|
|
|