职业经验 测试开发之路 -- 那些年总结出的学习经验

孙高飞 · 2017年05月25日 · 最后由 simon 回复于 2020年12月07日 · 7213 次阅读
本帖已被设为精华帖!

迎接新生命

先说个题外话哈~ 518 那天 11 点 57 分,我家的小天使顺利降生。小东西在折磨了女王大人整整 12 个小时后才千呼万唤始出来。现在整天吃了睡,睡了吃的。初为人父的我到现在还是一脸懵逼的状态。 多亏请了月嫂我们现在才没有手忙脚乱的,也终于让我有点时间继续写一些东西。也许是角色突然转变的关系,我现在感慨颇多。 写些东西抒发一下情感的欲望也愈来愈强烈。我十分庆幸这几年来一直努力工作学习,让自己的经济能力能够承担现在的家庭支出,让女王大人和小东西能接受比较好的照顾。我把工作当成人生中非常重要的一部分,能挣到更多的钱,媳妇才不会在想吃一顿大餐的时候思前想后,才不会看到衣服上的价签望而生叹。我想挣更多的钱,而我偏偏就不是一个干大事的人,我有着外界认为的程序员的所有通病 -- 不善言辞,不会察言观色,胸无大志 (只想写代码) 等等。所以我只能一步一个脚印的精进自己的技艺,挣着这一份死工资。但即便是死工资,我也要争取挣到这一职位上一流水平的死工资。正所谓小人物也有小人物的志气,小人物也有小人物的努力方式~~ 所幸这份工作我十分喜欢,坚持下来并不难, 代码这个东西有一种魔性,有时候扎进去了真就出不来了,女王大人的几次暴怒也是因为我只顾着学习忘了管她😂 😂 😂 。我想把自己的学习经验写出来,聊表借鉴。

不要轻视英语

算起来已经工作了快 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 掉了。 我们问他为什么,我们的意思是现在人不好招,他能做到这个程度已经不错了,来了以后干活没问题。老大跟我们说:你们觉得他现在是什么水平的? 其实他还是有很大进步空间的对不对。 可我跟他聊的时候发现他觉得他已经是业界顶尖了,这样的人我觉得他已经不会再进步了。 这个事情对我触动很大,让我又一次重新审视了自己。 例数过去几年,我也曾经多次处于这种状态,每当有点成就的时候就膨胀的不要不要的。 不过好在我运气比较好,总能及时碰到更牛的人把我一巴掌打回现实。所谓知耻而后勇,勇者在认识到自己的不足后,会努力的填补它。

结尾

路漫漫其修远兮,吾将上下而求索。希望我的经验对大家有用。预祝大家都能成为大牛

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 38 条回复 时间 点赞

方向比努力更重要,受教了,感谢分享~

受教了,刚毕业 2 年,技术没学的怎么样。最近倒是沉迷游戏了,简直如当头棒喝。。我和贴主的目标基本一致,没打算说成为行业里的有名人,只想赚更多的钱,想买东西的时候不会顾虑,看了贴主的经历,有点慌了

—— 来自 TesterHome 官方 安卓客户端

所以游戏戒了,美剧戒了,漫画戒了,小说戒了。
我就想知道你是怎么戒的,每天回到家就是忍不住要碰下游戏,怎么办

我要打赏 ,请开二维码

“我把工作当成人生中非常重要的一部分,能挣到更多的钱,媳妇才不会在想吃一顿大餐的时候思前想后,才不会看到衣服上的价签望而生叹”
👍

和你很像,但可能少了点什么,向你学习。

我曾经就是那个觉得什么都要懂,但是什么都可以不用精通的那类人~以至于在某一段时间内,我特别的迷茫,迷茫不知道还有多少我不懂的东西等着我去学,迷茫不知道下一步该要做什么…后来想通了,学百样不如精一技,真的就是找准了方向,才能更好的走下去~我的学习方法就是,勤思考,多总结~感谢楼主的分享,让我多了一个学习方法,那就是从 0 开始,逐步深入~

匿名 #8 · 2017年05月25日
围城 回复

博主找到了他的女王大人

其中几个观点身有感触,也非常认同,我就吃过不专的亏。所以也认同,努力成为最好的,宁作鸡头,不做凤尾,一定要精深一个领域,还要戒躁(尤其在工作 5~8 年),同时我还觉得,测试开发要结合业务,解决痛点,不能为了技术而技术👍 👍

爱情是第一生产力,哈哈。

受教了,刚毕业一年但发现和博主说的一样,懂一些东西但都不精。感谢分享。。

匿名 #12 · 2017年05月26日

写的很好 收藏了

写的每一点我都深有感触,已打赏。

总结的挺好,赞一个。
了解的面要广,专业的点要深,测试开发的挑战其实就在于此。

思寒_seveniruby 将本帖设为了精华贴 05月26日 18:51
围城 回复

卸载了😂 😂 😂 就玩不了了

MKSS 回复

额,多谢你的支持~~ 你让我更有动力坚持下去了~ 二维码已开,欢迎用钱砸死我😁

很不错的成长总结。

老徐 @xushizhao 的努力白忙了

谢谢大神分享, 作为测试小白向您致敬,我要成为可以支撑起家庭的男人。加油。

支持楼主,价值观跟我非常吻合,整篇文章的每个观点都非常赞同。希望以楼主为榜样,坚持学习,戒骄戒躁。

向博主学习,要好好沉淀,专一,坚持!

—— 来自 TesterHome 官方 安卓客户端

单身狗们不要问为什么能戒这个戒那个了!先抽口烟再说吧!😂

楼主的经验值得借鉴。每个人的精力是有限的,如何结合自身条件把有限的精力投入到 “性价比” 最高的技能上去提升,是一个困扰我很久的问题。越来越觉得,自己不适合做测试,然而眼下又没有其他与之比肩的谋生手段来维持现有的生活水平,于是乎,围绕测试这个主题,走第三产业路线吧😊 ——欢迎大家参加第三届中国移动互联网测试开发大会😊

恒温 回复

噗嗤

学习了!

受教了,的确顺序应该先从 Hello world 开始,然后才是专业书籍

精彩啊~ 方法很重要,深有体会~👍

点赞!!!!

钢炼的比喻非常精彩,受教了~

这篇文章值得我打赏,以表示对楼主的感谢。

纯粹 回复

多谢支持~~ 这久的文章了还有人继续留言~

楼主可能是被码涯耽误了的作家。mark 一下,用来警醒自己。

“贪多嚼不烂,要精研某一个领域”,这一点说的真好。还好,最近慢慢发觉了自己的兴趣方向,开始有所转变,加油。

@ycwdaaaa 看了你这个文章深有体会,请问下作者针对技术人员,学习英语有什么比较好途径么? 不论免费或者付费,谢谢。

向飞哥学习,打卡

我觉得可以用 3 个字就够了,为什么?
不断的发现为什么,搞清楚为什么,最后一定是绝顶高手

不得不说,受教了

ABEE ycwdaaaa (孙高飞) 在 TesterHome 的发帖整理 中提及了此贴 01月12日 13:47
需要 登录 後方可回應,如果你還沒有帳號按這裡 注册