若手のテスターへ:次に学ぶべきことはこれだ
私は毎週、「次は何を学べばいいのだろう?」と悩む技術系の若手社員と意見を交わします。これは素晴らしい質問です。しかし、やや見当違いの質問でもあります。
「次は何を学べばいいのだろう?」という質問は、コンピューティングは生涯学習に関わっている、という観点からは、良い質問です。また、「次は何か?」と尋ねることは、質問者が謙虚であり、熱心であり、率先して前に進むことを示唆しています。
ただし、この質問には「質の高い回答は質の高い質問から生まれる」という認識が欠けているように思われます。
まず、若手のテスターは、ソフトウェアやその他のシステムについて助けを求める方法を学ぶ必要があります。以下の練習が必要です。
- 具体的で適切な情報を提供すること
- 目標や期待を表現すること
- 現在の状態や所見を共有すること
これらのスキルはすべて、バグレポートを書くときにも役に立ちます。そのため、他のさまざまなコミュニケーションのお手本として良いバグレポートを書くことをお勧めします。
万人に適したシーケンスはない
この見解について、私に質問してきた人たちは驚いていました。ほとんどの人は、コンピューティングにはどこかに決まったカリキュラムがあって、HTML、Python、JavaScript に慣れたら、次のステップは PHP、Haskell、CSS であると信じているようです。しかし、コンピューティングでの学習シーケンスは、それほど機械的なものではありません。その大きな理由はいくつかあります。
- すべての人を満足させる必要はありません。むしろ、多くの人を満足させる必要はないのです。コンピュータの知識は、自分が満足できればそれでいいのです。市場が求めるものが自分の目標に合致する場合にのみ、市場が求めるものを目指せば良いのです。このアプローチは必ずしも簡単ではありません。この実現には、自分自身の目標、好み、機会について考え抜くことが必要だからです。
- コンピューティングは広大なため、すべての分野を理解することは困難です。また、すでに世界に2,000万人以上いるプログラマーたちの多様性を把握することは困難です。たとえば、Pythonという単一のテーマに限定しても、ロボット工学の専門家とマーケティング分析アプリケーションの開発者の日常業務は、同じ言語で作業していることを疑うほど異なるかもしれません。
- 一見、市場で決められた目標のように見えますが、応用において実は個人的な目標であることが分かります。次に学ぶことの目的は、キャリアのマイルストーンを達成すること、自分自身の理解を深めること、履歴書とのギャップを埋めることなのでしょうか?たとえば、プログラミング言語であるForthの求人はほとんどありませんが、学ぶことで多くの人の心を豊かにしてくれます。
- コンピューティングはファッション業界のようにトレンドがあります。今はVueとReactが最もホットなJavaScriptフレームワークかもしれませんが、徐々にSvelteやGatsby、あるいはもっと馴染みのない名前が人気者になることは避けられないようです。Lisp、Cobol、Fortranの役割は過去60年の間に少しずつ変化してきましたが、他の多くのテクノロジーはわずか10年、あるいは5年でピークを迎え、燃え尽きました。だからといって、次に何を学ぶべきかを考えることが無意味なわけではありません。しかし、それは難しい問題ではあります。質問者が何を求めているのかという詳細に非常に敏感な問題です。
- 異なる技術コミュニティの文化は、技術的特性とゆるく結びついているに過ぎません。あなたはプログラミング言語としてのC言語をあまり意識していなくても、もしあなたがC言語に詳しい専門家と日常的に接しているなら、C言語はあなたが今最も学ぶべき言語かもしれません。
技術系の学生に最も必要なのは、技術系以外の専門知識です。この点は、もっと深く説明する必要があるほど重要です。
ソフトスキルに価値がある
プログラマーやシステム管理者から「次は何を勉強したらいいか」と尋ねられるとき、大抵は F#、PowerShell、Kubernetes といった回答が期待されます。しかし私は、特に企業に努めている若手エンジニアには、SQL、Python、Erlang、XSD など多岐にわたる分野をお勧めし、それぞれの長所について説明しています。
しかし、プログラミング言語のようなテクノロジー全体よりも、多くの言語に適用可能でありながら学校ではほとんど教えてくれない「エッジ」の効いた技術やツールについてキャッチアップすることが望ましいと思います。
- 正規表現
- デバッグ
- Git
- テストコードの書き方
- AWS、Google Cloud、またはAzure
- Shell レベルの自動化
- アプリケーション アナライザー
- ペアプログラミング、インスペクション、コードレビュー
- Twelve-Factorプログラミング
- 統計
これらのスキルは日々のプログラミング業務に役立ちますが、プログラミング言語や小さなツールの習得よりもさらに価値がある領域があります。ソフトスキルは、開発者とテスターが最も必要とするものです。
私の言う「ソフトスキル」とは以下を意味します。
- 他の人間が理解できるように書く、話す
- 会議を最大限に活用する
- 他の人と協力する
- 自分を管理する
- コーチングを受ける
あなたは自分自身のキャリアを前進させたいですか?地元のフードバンクやロータリークラブ、図書館の初心者向けコンピューターコースなどでボランティア活動をすれば、最大かつ最速で結果を得られるかもしれません。あなたが最も必要とするスキルが身につくはずです。
学び続ける
次に学ぶべきことは何でしょうか?その答えは単純です。簡潔かつ効果的な質問の仕方を学びましょう。自分の本当の目的をよく意識して、具体的に質問してください。
この能力を身につけたら、継続的インテグレーションやアプリケーションの Linting など、学校ではあまり教えてくれないような重要な戦略を実践してみましょう。そして、会議の進め方、人前での話し方、効果的な技術文書の書き方、スケジュールの管理方法、メンターへの頼み方などを学びます。
これらのテーマがあなたにとってどのように役立つか教えてください。
(この記事は、開発元 Ranorex 社 Blog 「Junior Tester: Here is What to Learn Next」2021年4月14日の翻訳記事です。)