●エンジニアになったけどずっとテストばかり
●エンジニアの醍醐味である開発がしたい
●でもどうやればいいかわからない
今回は、現在フリーエンジニアとして開発をしてる僕が、実際にやってみてうまくいった方法を紹介します!
開発行程の前提知識
まずは、一般的なソフトウェアの開発がどんな順番で作られているのかを簡単に説明します。
ここはわかるよって人は読み飛ばしてもらってかまいません。
ソフトウェア開発のV字モデル

通常ソフトウェア開発はV字モデルという下記の図の順番で行われます。
こうすることで、プロジェクト全体が見やすくなり、管理がしやすくなります。だいたいこんな感じなんだと頭の片隅に置いといてください。
- 要求分析:そもそもなんでこのソフトウェアを作るのかを明確にする。エンジニア・アナリスト・お客さんが集まる。
- 要件定義:システム化する必要があるものを書き出してまとめる。基本えらい人たちがやる仕事。
- 基本設計:システムの大まかな機能や環境面を書く。お客さんに見せる。
- 詳細設計:細かいシステムの機能を書く。これを見ればほぼコーディングができるようになってる。
- コーディング:設計書を元に実際にモノを作る。
- 単体テスト:細かい単位でのテスト。(例)つぶやきがちゃんと投稿されるか?
- 結合テスト:大まかな流れのテスト。(例)ユーザがログイン→つぶやきを投稿→削除。一連の作業が問題なくできるか
- システムテスト:もっと大きな規模でのテスト。全部の実装が終わった後にやる。環境面もチェックする。
- 受け入れテスト:評価テストとも言われる。ユーザ目線で使いやすさなどをチェックする。
なんとなくどんなことが行われてるかわかりましたか?
では、本題に入りましょう!
エンジニアが最も重要視すべきこと

それは、実務経験です。
エンジニアはフリー・正社員に関わらず実務経験がないと、仕事が取りにくいというのはよく言われる話。
SES契約(※1)でIT企業に勤務してるエンジニアは想像できるかと思いますが、営業担当の人に「僕はPythonに興味あるからPythonの開発現場に行きたい!」。
「開発経験がないと無理だよ」って言われます。
まず初めのうちはテスター(※2)案件からと言われてテスターの紹介をされるでしょう。
(※1)システムエンジニアリングサービス
システムエンジニアが行うシステム開発等に関する、委託契約の一種。人が足りてない現場に自社の社員を派遣し、その分のお金をもらう契約。派遣会社と同じようなもの詳しく知りたい方はこちら→Wikipedia
(※2)テスター
実装が終わった機能がちゃんと動くかテストする人。一度やるとわかるけどマジでつまらない。
でもこれってよくよく考えたらおかしくないですか?
①エンジニアは実務主義→
②テストしか経験ありません→
③テスター案件に参画→
④半年テスター→
⑤次の案件探し→①に戻る
テスターの無限ループ!!
おかしい!これじゃあいつまでたってもコーディング(開発)ができないじゃないか!経験無くても雇ってくれよ!!
そう言いたくなりますよね。
でも良く考えて見てください。
いくらやる気があるとはいえ、全く経験がない人は雇う側だってリスクがあります。
例えば、あなたが大きな病気にかかって手術が必要になったとします。
そこに、2人の医師が来てこう言いました。
医者A:僕は今まであなたと同じ病気になった患者を100人も救って来ました。僕に任せてください!
医者B:僕は手術の経験はありません。でも、大学病院を首席で卒業しました。やる気は誰にも負けません!。僕に任せてください!
あなたはどっちの医師に手術を任せますか?
答えは明白ですよね?
エンジニアとしてプロジェクトの参画するとき現場のリーダーと面談をすることになります。
そこで、リーダーはプロジェクトを一緒に進めるテームのメンバーを選んでるんです。
やる気だけの未経験者より、やる気はそこそこの開発経験者を採用するのは当たり前
エンジニアとしてのスタートはほとんどテスターか資料作成

テスターというのは、さっきの説明したように、エンジニアが作ったサービスを実際に動かし、予定どうりに動くかどうかチェックする人のことをさします。
想像の通り、簡単なPCの作業ができる人であれば、誰でもできます。
昔テスターとして入った現場には、他の業界から転職して、まだ10日しかたってない人もいました。
資料作成というのも、しっかり設計書を作る業務を任されることはまずありません。
コードすらかけない人に設計なんて任せたら、後々とんでもないことになるのは目に見えています。
だから、テストの方法を書いた手順書だったり、会議の忘備録だったりと誰でもできるような資料の作成をさせられます。
現場との契約期間が短ければこれも経験と割り切れますが、長い場合だと半年〜1年同じ業務というパターンもあります。(大手に多い傾向)
その間あなたのエンジニアとしてのコーディング能力は一切上がりません。上がる能力といえば、エクセルでの資料作成くらいです。
そんな状態で、契約期間がすぎた時、次の案件を探す時になったらどうなるでしょう?
あなたの経験は半年間テスターor資料作成ということになります。
そうなると、先ほどの原理で次の現場も高確率でテスターになるというわけです。
テスターの将来性

テスターが悪いとは思いません。現場によってはシステムの基礎が学べますし、業務に空き時間ができやすいので、その時間を勉強に当てれます。
テスターとして、ずっとやっていく人もいるくらいです。
しかし、僕は個人的にこの道はオススメしません。
なぜなら、テスターは今後テストの自動化により、仕事がますますなくなっていくことは目に見えているからです。
僕はテスターはエンジニアじゃないと思ってますが。笑
ずっとテスターやっててはエンジニアになった意味がありません。
エンジニアやってて楽しいと思うのは、書いたコードが実際に動くとき。
技術が身についてそれに合わせて給料が上がる時です。
テスターから開発者になる具合的な方法

では、テスターしか経験のないエンジニア(仮)はずっとテスターとしてやっていくしかないんでしょうか?
そんなことはありません!僕も初めて入った現場は、設計という名の雑用でしたが今ではなんとか開発をやってます。
以下の方法を実践すれば、テスターから開発者へステップアップできます↓
- 面談の時に自分でアプリケーションを作ってることを言う。
- 作った実際に見せる。そうすることで、実務としての経験はないがコードをかけることを証明する。
- 今いる現場で開発にも興味があることを伝え、開発もしくは改修に近い業務をさせてもらう。
- テストの間に、ソースコードをみていじってみる(リーダーに確認を取りましょう)
- 現場面談の時に、すぐにでは無くても後々開発ができるか聞いてから現場に入る。
面談で最も効果のある自作アプリケーションを見せるという方法ですが、初めのうちはどうやって作ればいいかわからないと思います。
調べると、色々出てきて何をやれば効果的かわかりにくいと思うので、紹介します。
初心者が自分でアプリを作るならこちらがオススメ!Twitterのようなアプリを作りながら基礎が学べます。
ただし有名すぎるので、「それチュートリアルだね」と言われる可能性あり。笑
言われても勉強してることには変わらないのでマイナスではないですが。
それが気になる方はこちらをどうぞ!

動画にそってコードを書けば、実際にアプリケーションが作れます。
動画なので、通勤時間にみて予習し流れを把握、家に帰って実際に手を動かしてやってみる。なんてことも可能です。
【作りながら覚える!】 Ruby on Rails を用いたウェブ開発(Airbnbを作ろう!)
フルスタックエンジニアが教える 即戦力Railsエンジニア養成講座
【入門・初心者向け】Ruby on Rails本番環境構築パーフェクトガイド
面談の時話を聞いて、多少難しそうな現場だったとしても、やる気と自作アプリを見せてなんとかして開発を経験しましょう!
はじめのうちは教えてもらいながらでもいいんで、なんとかして開発を経験しましょう。
なんとかして開発に関われば、あとはそこで仕事をすれば実力はすぐにつきます。
そこからがエンジニアとしての本当のキャリアのスタートです!
最後に

社内で開発がやりたい!って言いまくってると、「先ずはテスターを経験してからだ」とか「テスターができない奴は開発ができない」とか言ってくる人もいますが、あれは自分の経験を語っているだけにすぎません。
どこにでも湧いてくる世の中そんなに甘くないおっさんです。笑
自分が努力してこなかったせいで「世の中甘くない」経験をしてきた奴らです。
今エンジニアとして努力しているあなたたちとは住んでる世界が違います。世の中しっかり考え、努力すれば結構甘いです。
そんな奴らの話を聞くだけ時間の無駄なので、無視しましょう。関わったら人生の大事な時間を無駄にします。
テスターなんて1週間もやればなんとなく流れは理解できますし、テスター業務を覚えるくらいならテストコードの書き方を覚えたほうがよっぽど市場価値が上がります。
テスターを1年やるのと開発を1ヶ月やるのでは、エンジニアとしての市場価値は後者の方が高いです。
まずは、現状を変えるために今回紹介した方法をで少しでも早く実践してみましょう!
開発がある程度できるようになれば、今度はフリーランスという道も見えてきます。
ガンガン開発して、エンジニアとしての市場価値を上げ、豊かな生活を送りましょう!
最後まで読んでくれてありがとうございました!
ではまた!