软件测试之路——那些年总结出的学习经验

上一篇 / 下一篇  2017-07-18 13:33:24 / 个人分类:职业发展

  不要轻视英语
  算起来已经工作了快7年了,一开始我就是在外包公司混着。欧美外包项目是相当的养人,老外没有加班文化,朝九晚五。回家就是跟小伙伴们打dota。还总能去国外出差兼旅游,用乐不思蜀来描述是比较贴切的。那是一段不思进取的时光,技术再倒退。在学校学的那点东西忘了个七七八八。 人都说毕业后的第一份工作很重要,显然我浪费了这个机会。这般混混度日的时光一直持续到了与女王大人的相遇。我发现那点微薄的工资实在不足以撑起我俩的未来,自己这点匮乏的知识也支撑不起更高的报酬。所以游戏戒了,美剧戒了,漫画戒了,小说戒了。把之前丢掉的技术慢慢捡回来,那时候很勤奋,疯狂的想把丢掉的时间找回来。好在欧美外包的经历把英语练起来了,为之后的学习打下了一定的基础。英语对技术学习有极大的影响力,不要不重视它。 最前沿的技术文档都是用英语写的,不要等到别人翻译成书,姑且不论翻译的质量如何,就是这个时间我们一般也等不起。也不要寄希望于网上大神的技术博客,虽然大神们一般都染指了最新的技术并也愿意记录下来,但技术博客的风格向来比较随意,文法不通,不成体系,内容较少,受众较小。限于作者的个人时间,文中记录的都是作者碰到的一些主要问题,没碰到的和一些细枝末节的东西不会出现在文章中。而我们都知道在工作中向来是那些最细枝末节的东西卡的你痛不欲生。所以技术博客可以是一个好的引导,而不该是我们主要的学习材料。 而且技术这个东西国内向来都有滞后性,国外火了一阵子以后国内的大神们才开始接触,国内继续发展了一段时间后才会有人写技术博客。这时候你碰到什么问题是很难找到中文的解决方案的,一般都是去stackoverflow上,或者官网上,或者直接在github上搜issue才能找到解决方案。例如我前几天写的kubeadm 搭建kubernetes集群中列的heapster 异常的问题,搜遍Google也只能在github上找到有人曾提过一个issue,也正是这个issue让我找到了解决方案。没有一定的英文阅读水平,不建议碰新技术。据我所知最近国内测试圈子比较火的rest-assured到现在也没有像样的中文教程,allure,selenide,assertJ等优秀框架甚至国内还少有人用。如果只看中文的kubernetes书籍,我这个测试环境的容器集群也是搭不起来的。所以如果你不想在技术上总是落后他人好几年,建议在英文上下下功夫。
  努力成为最强的那个人
  实力不是打了鸡血发奋图强一番就能取得的。 业余选手拼了老命也不可能战胜专业运动员,即便业余选手比专业运动员更努力也不行。业余选手没有专业的教练,称职的陪练,合理的饮食,丰富的大赛经验。 不说别的,一个没有任何专业大赛经验的雏儿上了擂台能在经验丰富的赛场老流氓面前走几招?业余选手缺少了太多太多的资源--只有专业运动员才能获得的资源。 所以我们要努力的获取这些资源让我们变的更专业,那对我们来说这些资源都是什么? 领导肯让你去调研技术的时间,供你实战的业务场景,领域专家同事的帮助,解决成堆问题增长的经验值等等。 我们每到一个地方,都要尽快的成为当前团队实力最强的那个人,老外管这种人叫key person。因为你最强最靠谱,所以碰到什么问题都会让你解决,有什么重要的项目都会提供给你最好的资源去做。然后你变得更强,有机会获取更多的资源去做更重要的事--良性循环。如果我们不是最强的,光是业务压力就让你喘不过气来了。还有多少时间去学习技术?如果我们不是最强的,就算从海绵里挤出时间去学习,又有多少领导肯给实践的机会?如果我们不是最强的,私底下再怎么努力也只是业余选手。 强者越来越强,弱者越来越弱。宁为鸡头,不做凤尾,起码要在某一领域内成为团队中说一不二的人,你才能继续在这个领域内走的更远。这是我的职场哲学。就像摔跤吧!爸爸中对获得了银牌的女儿说:你必须要拿金牌,没人会记住第二名
  贪多嚼不烂,要精研某一个领域
  测试圈子里有一句话很流行:测试这个职位什么都要懂,但什么都不用懂多深。 我觉得这句话害了不少人,什么都懂点又什么都懂的不深,那只能是上面说的业余选手了, 用脚趾头想也知道谁也不会把核心的东西交给一个略有涉猎的人手上。 面试官当久了都有一种惯性,一看到简历上写着什么都会的人就想fail掉他。因为根据以往的经验,候选人几乎确实样样都懂,但每样只懂皮毛,没亮点,我们不放心把任何事情交给他。人的精力是有限的,顾的了这头,就得放下那头。 我是毕业很久之后才明白的这个道理。以前凡是跟测试沾边的都研究。最后我发现哪头都没顾上,面试的时候忽悠门外汉一套一套的,一碰上专业的就露馅了。 也有人跟我说身为一个高级工程师,你就得什么都会,什么都精。 这更是不切实际的想法。 如此小看一门技术是可笑的,任何一个领域的掌握都要经过长时间的实践总结,踩过无数前人挖的坑埋的雷,学习涉及到的衍生到的相关知识才能说有所成就。能在一个领域内达到专家级别已属不易,不是人人都能做蝙蝠侠,精通130多种武功。如果你问精通一个领域有多难? 以docker的学习路线为例
  第一阶段:学习原生docker的命令,dockerfile,docker-compose,可以应付简单的日常需求。
  第二阶段:更深入的使用docker,知道docker的所有网络模型及其使用场景。知道如何正确的设置docker的启动参数,知道如何分配ip池,dns,网关。懂得使用路由方法改造docker的网络模式。懂得哪个storage driver适合自己。懂得一些简单的traboule shooting方法。能够将各种资源容器化(编译容器,部署容器,测试执行机容器,基础服务容器等等)
  第三阶段:懂得使用mesos,k8s和swarm其中的一个来搭建并维护私有云环境,对编排工具有一定程度的理解。搭建各种产品需要的容器服务(监控,overlay网络,ingress网络,DNS,NFS,镜像仓库等等)。能够调用编排工具暴露的REST API 做2次封装以符合开发测试的需求。
  第四阶段: 懂得docker更深入的原理(虚拟网卡设备对,名称空间,linux桥接设备,iptables,overlay网络原理等)。熟知linux系统与网络。越懂linux,越能解决时不时出现的问题。这一阶段不是在学docker,而是学习网络,学习操作系统。扎实的功底能够让你找到各种方便的解决方案。
  第五阶段: 对docker和编排工具有极其深入的了解,熟知linux底层知识。能编写容器网络插件,能对社区做出代码贡献。
  你看要把docker玩精了要学多少东西, 所以每当有人夸我docker用的好,我都特心虚。有人跟我争论过玩docker不需要懂什么底层原理,能用能满足开发测试的需要就行了。其实在一定程度上这是没错的,开车的人不一定要知道怎么修车,因为我们有4s店呢。只是在我们的这个行当里,并没有4s店。出了问题要自己扛着,不能事事都依赖运维,毕竟QA不是开发的保姆,运维也不是QA的保姆不是么。所以如果我们不懂原理的话,出了问题怎么办?随便谁谁谁一不小心把ip_forward给关了我们查不出来,随便谁谁谁安个什么软件的时候自动再iptables里添加了什么规则把容器网络给堵死了我们查不出来。或者再有那手残的把网桥给删了(我曾经就是那个手残)我们也没办法。 测试环境什么都可能发生?? ?? ?? ?? 我就是血淋淋的例子~~~ 也许有人说这个标准太高了,我们只是测试,掌握到xxx程度对测试来说就可以说是精通了。这是一个误区,一门技术从来不以你的职位划分等级。同样的程度,不会因为你是测试就是精通,他是开发就是入门。这个说法只是自欺欺人罢了。有些时候,我们对自己的要求委实有点低。
  掌握好学习方法
  有些人很努力,但他就是做不出成绩。 不是他笨,不是他努力的少。只是他还没找到正确的玩法。我们总能看到有人发帖询问学习XXX应该看什么书。然后他就会网购一本推荐的最多的回家开始啃。然后一个月后你会发现其实他还是做不出什么东西来。为什么呢? 因为顺序错了。一本成体系的书籍应该是我们熟悉了这门技术的基本玩法之后才去看的,带着对这门技术的基本认知才能看懂这本书描绘的含义,我们才能在这本书里找到我们需要的内容。在我们什么都不知道的情况下从头肯一本书,基本上在第一章就被天花乱坠的概念弄懵逼了。一本书上的细节太多了,多到让你感到绝望,弄不清楚你真正要用的东西,在书上,我们看不到这们技术的实际运用效果,它只是写给你看。但不能带你身临其境,举个例子,如果你之前没接触过容器技术的话,那你就是把docker核心原理翻遍了也不如你运行一个docker run有用。 所以我们学习任何东西才要从hello world开始,从先写个demo开始。 当结果在电脑运行给你看了,你才能真正的理解。所以书这个东西,是在你对这门技术有一定认知的情况下再去研读的。莫要颠倒顺序。一开始的时候就是奔着demo去的,就是奔着基本使用去的。
  他山之石可以攻玉
  我们说要多逛设计社区,多跟同行交流,跟参加一些活动。主要目的,是增加自己的眼界。 我们的消息是闭塞的,有些时候我们不懂一些技术,框架,概念。并不是因为我们学不会,而是压根没听说过这门技术。github上如汪洋大海一般的信息我们所知甚少。所以我们才要沟通,交流。 多看看别家是怎么做的,用到了什么技术。我们参加各种测试沙龙,大会。并不指望讲师在短短的几十分钟内就能教会你一门技术。而是想知道这世上有这门技术,这个技术能做到什么效果。然后我们回去下功夫研究一番。
  戒躁
  以前玩魔兽的时候有一句名言:不轮你多少次把鼠标键盘摔在地上,最后也要捡起来重新练。我们在精进技艺的路途上向来是披荆斩棘着走过来的,尤其是刚开始的那段时间。所谓万事开头难,一开始的时候我们几乎是蒙着眼睛闯进了某个领域,做什么都找不到章法,写个hello world都困难重重。多少人在入门这一步上放弃了。技术这条路就是这样的,永远不可能一路平坦,我们要耐着性子跟他磨,跟他耗,把因为一个错误卡一天甚至数天的情况当成常态。高手是怎么来的? 踩着坑出来的。
  这里的戒躁,不仅是焦躁。也是浮躁。这条路上很多人都在入门时放弃,但又有多少人止步于一个demo水平的程度就停下来了。刚才说过,如此轻视一门技术是可笑的。如果一门技术让你三两天就精通了那它也就没什么价值了。迄今为止,docker技术我已经学习了1年多了,这一年多里我大部分的学习投入都放在了docker上。即便如此,我也只认为自己是个中级水平而已。
  戒骄
  伊斯兰教有七大死罪,经典动画钢之炼金术师中将傲慢列为其中之最。动画中每一位人造人都代表了一宗罪则,而傲慢是其中最强大的。从霍恩海姆和傲慢在狭路相逢后的一段对话中我们可以看出来,傲慢是父亲最早萌生的罪,也是第一个人造人。这部神作的作者曾说过动画中作为最大反派的父亲是人类阴暗面的写照。7个代表着七宗罪的人造人先后从父亲的体内分裂出来。我们可以看出来,在作者心中,傲慢是第一大罪。 把这个问题引申到技术圈子里,我们发现傲慢是技术人的绝症。一旦心生傲慢,那这个技术人就开始步入死亡。因为他自觉老子天下第一,从此不再有动力去主动学习什么。而软件这个行当有如逆水行舟,不进则退。 前些日子有件事对我触动挺大,有个我们都觉得不错的候选人推到了CTO那里面一下。 后来老大把他fail掉了。 我们问他为什么,我们的意思是现在人不好招,他能做到这个程度已经不错了,来了以后干活没问题。老大跟我们说:你们觉得他现在是什么水平的? 其实他还是有很大进步空间的对不对。 可我跟他聊的时候发现他觉得他已经是业界顶尖了,这样的人我觉得他已经不会再进步了。 这个事情对我触动很大,让我又一次重新审视了自己。 例数过去几年,我也曾经多次处于这种状态,每当有点成就的时候就膨胀的不要不要的。 不过好在我运气比较好,总能及时碰到更牛的人把我一巴掌打回现实。所谓知耻而后勇,勇者在认识到自己的不足后,会努力的填补它。

TAG: 软件测试管理 职业发展

xiao_jiao11的个人空间 引用 删除 xiao_jiao11   /   2017-08-27 18:29:54
5
kakaxi5221的个人空间 引用 删除 kakaxi5221   /   2017-08-10 08:49:09
5
zhaoff2010的个人空间 引用 删除 zhaoff2010   /   2017-08-08 13:44:41
5
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2017-09-26  
     12
3456789
10111213141516
17181920212223
24252627282930

我的存档

数据统计

  • 访问量: 1972
  • 日志数: 4
  • 建立时间: 2017-07-17
  • 更新时间: 2017-07-18

RSS订阅

Open Toolbar