mhlyc -practice

ソフトウェアテストと品質保証がメインテーマです。

これから新卒で第三者検証やQAを目指す方や、文系からエンジニアを目指す方へ

mhlyc.hatenablog.com

先に書いたブログで「QAから開発に移ったのが正解だった」「四六時中開発やテストのことを考えている人がエンジニアになるべき」みたいなことを書きました。
ちょっと説明不足だったところがあるので補足をします。
特に、これから新卒で第三者検証やQAを目指す方や、文系からエンジニアを目指している方には不安を与える文章になってしまっていたかもしれません。

 

 
まず、私の場合ですが理系の情報学部を卒業しました。とはいっても大学院はいってませんし、勉強も人並み程度でした。
新卒で開発エンジニアを目指してSIerの会社に就職しましたが、なぜかQA部の本部長に気に入られてQAに配属になりました。その時は周りの同期が皆開発に配属されていたので、差はどうしても感じました。

QAの仕事は評価しにくい

これは「正当に評価されなかった」というところにも繋がってくるのですが、(あくまで私の場合はですが)
QAって、品質を保証するのが仕事なんですけども
QAをちゃんとできているかって評価しにくいんです。
例えばQAの人が実行したテストでたくさんバグが出たとしましょう。それは一見、QAがすごいように見えますが、実際は製品の品質がすごく悪くて誰がテストしてもバグが山ほど出る状態だったかもしれません。
逆にバグが全然出なかったとしますよね?そうすると今度は、「品質が保証できている」みたいな見方もできるわけです。
 
本当にちゃんとQAやっている人には申し訳ないんですけど、あくまで僕が見聞きしたケースでいえばですけど
品質保証って表面的に見ると結果論というか、ちゃんと仕事してるのかが見えづらいので
ぶっちゃけ、サボっててもわからない部分もあるんです。自分がサボっていたというつもりは全然ないんですけど、どれだけ品質を保証できていたのか?と思うと疑問が残る仕事も正直、ありました。
品質を保証しているなら、なぜ似たような障害が何度も発生するのでしょうか。どうして似たようなバグが繰り返し発見されてリリースが延期になったりするんでしょうか。本当はそういうのをなくすためにQAとか第三者検証という組織があるはずなのに、品質保証という高い理想には届かないことが多くて、でも「俺たちがんばってるよね」みたいに自分たちに言い聞かせて、「俺たちが品質を保証しているんだ」みたいなプライドを持ってみたりして、でも実際にやっていることは「設計書の誤字脱字チェック」とか「ユーザ目線という名の思いつきのテスト」だったりする。それでもそれを「QAがちゃんとやってない」って指摘できることは少ないんです。QAがちゃんと設計書みれているのかをどうやってチェックしますか?指摘の出ている件数でしょうか。でもそれをきちんと評価するには、設計書の品質がどうだったかも合わせて評価しなくてはいけない。そしてそれを誰が評価する?QAのQAなんて組織はいないわけですから。テストにおいても同じです。QAですらコストがかかると言われることもあるのに、QAのテストを疑うコストが一体どれだけあるでしょうか。
 
開発は良くも悪くもわかりやすいです。スキルが足りなければ、設計や開発ができないのですから、成果物がいつまで経っても出来ません。同じ時間かけて成果物を作れる人と作れない人が出てきますし、品質だってテストしたりレビューしたらわかるわけで。ある意味残酷な世界ですけど非常にわかりやすいです。
 
QAがつくる成果物、例えばテストケースもそうだし、テスト計画みたいなのを作るにしても、実際にお客さんには納品しないこともあります。でも開発したモノは実際にお客さんが触るわけで、それが完成しなかったら仕事として成り立ちません。
 
要するにQAは「ぬるま湯」になる可能性があるのです。だからこそ人一倍責任感だったり使命感を持つべきだったりするし、リリースの判定をするのとかはまさに「なぜリリースして良いのか」という説明責任の塊の仕事となっています。
良い組織は、そういった責任感や使命感、人によっては楽しさかもしれませんが、そういった価値観を共有できています。そういったところでQAとして働くことは非常に良い経験となると思います。
僕もそうだったと思っていたのですが、いつしか日々の仕事に追われているうちに、「いつもと同じようにやれば良い」とか「どうせテストしたってバグは残るんだ」「僕がレビューして一体何になる?」みたいに思うようになってしまっていました。僕のQAとしての仕事がダメだということを指摘してもらえる機会は徐々に減っていきました。また、指摘されたこともありましたがこれ以上品質保証のスキルを上げてもっと本質的な仕事をやっていくとしても、開発に移って開発の立場から品質を考えることなしに不可能だなと感じました。(じゃあプライベートで開発すればよかったんですが、モチベーションがそこまで高くない私にはそれができなくて、結局部署異動にさせてもらいました)*1
これが、僕にとって異動を判断した最大の動機です。周りのせいとかではなく、僕個人の問題です。

QAや第三者検証の世界に未来はあるか

QAや第三者検証の世界自体には未来はあると思います。むしろ今後は需要が高まっていくと思いますし、今もスタートアップやベンチャーにおけるQA需要は高いと思います。今後はさらにテスト自動化やAIの技術が進歩していって、人間しか設計することができないテスティングの部分が求められていくとても面白い世界だと思います。

第一キャリアとしてはどうか

僕は第一キャリアがQAだったと話しましたが、これはとても良かったと今では思っています。あくまで僕の場合はですが、僕が仮にすぐ開発エンジニアになっていたとしたら自分の成果物の品質を疑うこともあまりなかっただろうし品質についてきちんと考えることもなかったのではないかと思います。今は現実がついてきてはいませんが、自分が作っている成果物の品質がどうかとかは常に考えてはいます。またレビューの時に視点を切り替えて指摘を出したりというノウハウもQA時代に培ったもので今に活きています。
日本的品質管理という書籍に書いている話ですがQAという概念はソフトウェアに限らずあらゆる分野において応用できる考え方です。サービス業であればサービスの品質。アクセサリーを作るならアクセサリーの品質。品質という概念は売る人と買う人、お客さんがいれば生まれるものですし、品質を考えるというのは顧客志向という点でとても重要です。
 
あとはテストとか品質の勉強をしてるとめちゃくちゃすげー人とすぐにつながれるとか、ライバルが開発者に比べ少ないとかのメリットもあります。要するにQAや第三者検証自体に未来はあるし第一キャリアとして選択するのも全然アリだと思います。僕が異動を決めたのは前述の個人的な事情がメインの理由です。

「四六時中開発やテストのことを考えている人がエンジニアになるべき」の理由

要するに勉強したり努力を努力と思わずに継続できるかということです。
 
僕は働き方改革ってとても残酷だと思っていて
成果がとてもわかりやすくなるんです。
今までは終わらなかったら周りより多く残業して終わらせるとかできたけど、そういうのができなくなると
仕事おわらない→仕事できない というのが露骨にわかるようになります。
当然業務中に、業務に必要な知識を仕入れてるような余裕なんてあるわけないですから、
業務に必要な知識は業務時間外に調達するほかないわけです。この考え方をブラックだーとか思う人もいるのでしょうけど、
実際そうするしかないんです。教育を提供してくれる会社はあるかもしれないけど、結局のところ自分のキャリアを一番真剣に考えてくれるのは自分なわけですし。
そうなると、いよいよ仕事とプライベートの境界は曖昧になっていって、遊ぶように仕事しているような人はどんどんスキルを身につけて先に行くし、仕事の時間しか勉強しない人とはとんでもない差がついてしまうわけです。かけてる時間も熱量も違うのですから仕方のないことです。
 
そうなると、やっぱり「四六時中テストや開発のことを考えている」みたいな人が一番向いてるというか、適任なんだろうなと思います。

最初はわからなくても後から楽しみを見つけられることもある

別に生まれた時からテストが楽しいって思ってたみたいな人いないわけで、最初はよくわからなくてもいいわけです。
でも実際にテストがめちゃくちゃ楽しいって思っている人もいるわけで、僕もテストの面白さを感じることもあります。
まあ、でもその度合いというか、やっぱり純粋な好き嫌いみたいなのもあると思いますし、他に好きなことがあるならわざわざテストや開発の道を選ぶ必要もないのかなと思います。

TwitterFacebook

結局ただの僕の体験でしかないんですけど、僕がTwitterFacebook化と呼んでいる現象なんですが
SNSが広がっていくにつれて、すごいキラキラエンジニアたちの動向が簡単にわかるようになりました。これはどういうことかというと
キラキラエンジニアたちをフォローしてると、勝手に「これ作った」とか「この本読んだ」とか出てくるわけですよね。
どうしても比べてしまうわけです。
みんなはあんなに努力してるのに、自分はなんてダメなんだろう、もっと勉強しなきゃ、もっともっともっと・・・
前までは僕と同じくらいのところにいた気がする人が、いつの間にか遠くにいたりする。
自分のペースでやればいいと言えばそれまでではあるのですが、気になってしまうこともどうしてもあります。
僕はそういうのを気にするあまり、あまりTwitterとかを使えなくなりました。「言い訳はいいから手を動かして勉強すれば?」みたいな見えない圧力みたいなのを感じて(直接言われることもありましたが)、そのうち何もツイートできることがないなって思うようになりました。
単に僕が気にしすぎなのかもしれません。
でも、やっぱり僕は現状より向上していきたいし、そうなるとやっぱり自然と努力してしまうとか、継続的に勉強を続けていける分野で戦っていかないと辛いなと思いました。
なので、「四六時中開発やテストのことを考えている人がエンジニアになるべき」だと思います。そうではない僕は、結構辛いです。これから始める人も、「どうしたら楽しくなるかな?」「どうしたら面白くなるかな?」と考えたり、実際に楽しんだり面白く仕事をしてる人に話を聞いたりしてみるといいと思います。きっと素敵な話が聞けると思います。いま文系だという人も、文系からキラキラエンジニアになった人もたくさんいますから、安心していいと思います。(例えば、ちょまど さんとか、文系出身で今はマイクロソフトで働いてますよね)
とにかく、夢中になれる仕事、楽しめる仕事に着くのが一番いいと思います。そして、これも昔言われたことですが、楽しみは与えられることは少なくて、自分から見つけることの方が多いです。
頑張ってください。僕も頑張ります。

*1:なぜ開発の立場から品質を考える必要があるか?という点ですが、これは私個人の考えですし、開発を全く経験せずに素晴らしいQAをしている人もたくさんいます。ただ、QAって結局開発されたものをレビューしたりテストするわけで、それがどうやって作られるのかというのは絶対に品質を考える上で役に立つだろうと思うのです。例えばバグがどうやって作り込まれるかわかっている人は、バグを見つける上でも有利なのではないかと思います。テストする側、レビューする側にずっといるのではなく、自ら設計する側、開発する側になってみてわかることもあるのではないかと僕は考えました。もちろん、その設計や開発をテストウェアに対して行うのも全然アリな選択だと思います。