見出し画像

未経験が1週間エンジニアをやってみた

こんにちは!りょうたです!皆様の応援もあり1月から都内のベンチャー企業でエンジニアとして働くことになりました!

これからエンジニアになろうとしている方や、同じく未経験からエンジニアになった人たちに少しでも参考になればと思い、まずは1週間が立って感じたこと・気づきなどを率直にお伝えしたいと思います!

〜内容〜

・30代未経験が実際に1週間働いてみた感想
・今同じようにエンジニアの方に伝えたいこと

〜序章〜

ー りょうたってこんな人 ー

まずは筆者の簡単な自己紹介です。

プログラミングとは程遠い業界からの転職でした。エンジニアになる決意をしてから2019年8月に退社、同時にテックエキスパート (プログラミングスクール)に通い、10月半ばまでの約2ヶ月半、合計750hほどの勉強時間を確保。その後転職活動をして内定をいただくことができました。

ー 何をしているか ー

まず最初の1週間で何をしているかをお伝えします。

・プロトタイプの改修
・テーブル一覧の作成

SESとしてSIer企業様に常駐し、ある企業様の業務システムの詳細設計〜開発〜テストまで行う半年ほどのプロジェクトに参加させてもらっています。
先方2名・弊社2名のチームです。PMの方がめちゃくちゃベテランで頼もしく、未経験ということを理解した上でチームに入れてもらっています。やったことのない仕事をまかせて貰っていて、「どんどん勉強しましょう!」と言ってくれる方です。

最初の1週間は基本設計が少し残っていたのでその一部を担当しました。具体的には「プロトタイプ」を前任者が作成しており、その修正です。

プロトタイプとは作成している業務システムの実際の画面のイメージを捉えてもらうために、試験用として実装したものです。DB連携などはしていないので各種データ等はベタ書きですが実際の画面と同じように動く仮のシステムです。

言語はC#を使っていて Windows.Formを活用しています。

また、それが終了後、詳細設計の一部であるテーブル一覧を作成することになっています。これは基本設計でテーブルやカラム は決まっているので、一覧としてまとめて、カラム名を英語で定義したり、型を決めたり、数値だった場合、桁数の設定等をしていく仕事です。

では次章から具体的にみていきます。

〜 未経験から入って仕事はできるのか? 〜

結論から言うと、できます!
僕にとっては「できる!」という自信がついた1週間となりました。

僕の現在の担当業務は1からコーディングをするものではありませんが、プロトタイプは先方にお見せするものという非常に重要なもので、しかもこれの納期が1週目の木曜日で超短納期でしたw

実際の仕事としては、

①修正案はすで指定されていたので後はその部分のコードを探して修正する
②動作チェックする
③可能であればコードをみやすく修正する

という物でした。

修正案とは、例えば、「このページのこのボタンを押した時、このページに遷移するように設定してください」「この枠の罫線を表示させてください」「この表のデータ項目に"仕入れ"、"売上"という項目を追加してください」と言ったものです。そのため、実際のプロトタイプを操作しながら、デバッグしてこの操作はどこのコード、というロジックを追う必要があります。そして修正案通りにコードを書き換えます。

最初は戸惑いましたが、なんとか実装することができました。

それ以外のレビューをもらうまでの時間等は次タスクであるテーブル一覧をまとめる作業に充てました。

〜 必要なスキル 〜

画像1

初日は業務に入る前のミーティングで説明されるも「プロトタイプって何?」状態でしたし、言語がC#で僕がメインで勉強していたRubyとは少し異なる言語だったので不安もありました。

ただ、乗り切ることができたのは必要なスキルを事前にしっかり身につけることができていたからだと感じています。

この仕事を1週間して感じた必要なスキルは

・論理的思考
・詰まった時に自分で調べることができる
・それでもわからなかった時に他の人に聞くことができる
・タスク管理

などです。あくまで1週間の仕事の中での気づきなので今後必要なスキルはいろいろ出てくるでしょうが、まずは必須だなと思ったものを列挙しました。

ー 論理的思考 ー

僕もそうでしたが転職前は未経験として「どんな言語を勉強すれば良いのか」「一つの言語より複数言語を勉強した方がいいのか」などいろいろ考えていました。

しかし、何の言語を勉強してもいいし、一つの言語でいいと思いました。なぜなら、一つの言語をしっかり勉強してプログラミングの本質を抑えることができていれば、どの言語でも対応できると実感できたからです。

僕自身、転職前に勉強したものはRubyでしたが今回の業務で使用している言語はC#です。もちろん事前学習しましたが、そんなにボリュームのない本を1冊やった程度です。それでも、デバッグしながら変更するべきコードにはたどり着けますし、実際にどう修正すればいいかの想像もできるので調べることもできます。

大事なことは何の言語をやるか、一つか複数かということではなく、「プログラミングの本質を理解すること」です。

プログラミングとはPCを操作するための言語です。そのため人間とは違って、エラーが出れば何かが絶対に間違っているし、でもそこには絶対にその問題に対する答えがあるということです。

ということはその問題の原因を追うロジカルな思考があれば必ずたどり着くことができます。

ただこの時に、そのコードが何を表しているのかということを理解することができなければ原因を突き止めることができません。だからこそ、プログラミングの本質をしっかり抑えていく必要があります。

ー どうやって勉強すればいいか ー

ではプログラミングの本質を理解する、論理的思考を身につけるためにはどのように勉強すればいいのでしょうか。

僕の個人的なお勧めとしては、

・Progateなどのツールを使って文法を少し理解する
・文法書を一冊勉強する
・MVCフレームワークを使って1つのAppを作ることができる本を学習する
・自分自身で0→1でAppを作って見る

これで十分かなと思います。

まず、言語を勉強するのにいきなり書籍等を使うとわからなくて挫折することが多いです。そのため最初はハードルを下げて、Progateやドットインストールなどおツールを使い、範囲は限られていますが文法の大枠を捉えることから始めるのがいいかと思います。

その後は、上記ツールでは文法理解は不十分なので書籍を一つやりきることをおすすめします。この段階ではフレームワークではなく文法書がいいかなと思っています。

次にその言語を使ったフレームワークを勉強しましょう。この時おすすめしたいのは、
①MVCモデルのフレームワークであること
②目的が「一つ以上のAppを作ること」である書籍

です。

現在はMVCモデルを使わないサービスも増えてきていますが、それでも未経験者は一度体験しておいた方がいいです。MVCモデルはそれぞれの処理を役割ごとに分けることができるものです。そのため、エラーが発生した時の状況によって、モデルを見ればいいのか、ビューを見ればいいのか、コントローラを見ればいいのかわかりやすくなっています。

また、それぞれのリレーションもわかりやすいので全体的に原因を探りやすく、ロジカルな思考のトレーニングには非常に有用だと思います。

そして、できればその本をやることでAppを作ることができるものがいいと思います。いきなり自分で0→1を作ることは難しいので、まずは本の通りに学習することで一つプロダクトを作ります。

最後に自分でアイディアを出して0から作ってみましょう。わからないことが必ず出てくるので調べながら実装するという順序で勉強すれば、挫折しにくいですし、プロダクトを一つ作っていることが自信にもなります。

ー 詰まった時に自分で調べることができる ー
このスキルに関しては上記のように論理的思考を手に入れることができれば自ずと身につくスキルなので割愛します。ぜひ上記の順序で勉強してみてください。必ずできるようになります!

ちなみに早速ですがMVCモデルがわからない方はぜひ調べてみてください!

ー それでもわからなかった時に他の人に聞くことができる ー

転職前は時間がたっぷりあったため、あまり意識していませんでしたが、仕事とは基本的に納期のあるものです。そのため一つのエラーにかけられる時間は限られています。自分で調べてもわからないことは必ず出てきます。その時は必ず他の人を頼りましょう!

もし可能であれば、事前に先輩・上司とどれくらいの時間悩めばいいか、時間を決めておきましょう。これを決めておかないとだらだらと長時間同じことに悩んでしまいます。15分なら15分、30分なら30分と決めてそれ以上は悩まないようにしましょう。

また、質問する場合は単にわかりませんではなくロジカルな質問をするように心がけましょう!「この問題の原因はここにあると考えていて、こう調べたけどわからなかった」というように
・自分はどう考えているのか
・どのように調べたのか

ということを相手に伝えるようにしましょう。こうすると、相手の時間を奪うことも最小限で済みますし、「ちゃんと考えることができているんだ」と評価もしてもらえます。

ー タスク管理 ー

これは転職前は見落としがちですが非常に重要なスキルの一つです。

先ほども述べましたが、仕事は必ず納期があります。そして基本的にチームで開発しますので自分のタスクを管理できないとチーム全体に迷惑をかけることになります。

ちなみに僕のチームでは毎朝簡単に前日のタスク進捗報告、その日のタスクをどう進めるかの報告をし合います。終わりには長めにミーティングの時間をとり、その日のタスクの進捗を報告して、次の日以降のタスクをどうするか話し合います。

タスク管理で大切なのは、

・タスクの優先度を理解すること
・自分のタスクの見積時間を設定して遂行すること
・進捗について適宜報告し判断を仰ぐこと

です。

ー タスクの優先度を理解すること ー

タスクは当たり前ですが全てを同時に進行させることはできません。それぞれに優先度をつけて順番にやることが必要です。またタスクは想定外のことが往々にしておきます。途中で急に変更になったり、新しいタスクが入ってきたり・・・。その度に優先度を決めておかないと、本来やっておかないといけないタスクが間に合わないということも起きます。

そして、タスクの急な変更や新しいタスクが入ってきた時は自分からその優先度をリーダーに確認しましょう!

普段からタスクの洗い出しだけでなく、それぞれに優先度を設定する癖をつけておきましょう。

ー 自分のタスクの見積時間を設定して遂行すること ー

タスクに優先度をつけたら優先度の高いものからタスクを進めていきます。この時大切なのはそのタスクがどれだけの時間を使うのか予想して見積時間を設定しておくことです。これを行っておかないと、締めに間に合わないということが起きます。必ずどれくらいの時間がかかるか予想して、それに対して進捗がどうか意識しましょう。

ー 進捗について適宜報告し判断を仰ぐこと ー

見積設定をしても毎回うまくタスクが進むとは限りません。タスクの進捗が遅れてしまった時(もちろん早く進行し、次のタスクができる余裕ができた時も含めて)は適宜報告をしましょう。

朝や夕方にミーティングすることも多いと思いますが、ミーティングを待って報告するだと遅い場合もあります。適宜進捗報告するようにしましょう。

僕は例えば朝のミーティングで「このタスクは午前中に終わらせて、午後いちに報告します。」というように伝えたけど終わらないと判断すれば、午前中の段階で、「午前中に終わらせる予定のタスクが〇〇な理由で終わりません。僕は△△すればいいと思いますがどうすればいいでしょうか?」と相談します。

ポイントは

・タスクが終わらない理由をしっかり伝える
・自分としはこうするべきと考えていると伝える
・その上でどうすればいいか判断を仰ぐ

の3点です。これらを伝えることでリーダーの人は、タスクがなぜ終わらないのかその理由を把握できますし、当事者がそのタスクをどうするべきか考えを伝えることで、あとどの程度時間がかかるか予想ができます。今あるタスク全体のなかでバランスを考えて判断できるようになるため、適切な指示が出せるようになります。

最後にリーダーにそのタスクをペンディングするべきなのか、時間を再設定してタスクを続けるかの判断を仰ぎましょう!


〜今の僕が未経験の方に伝えたいこと〜

僕も転職前は「何の言語をどれだけ勉強すればいいのか?」「複数言語勉強した方がいいのか?」といったことで悩んでいましたが、1週間やってみて、「何でもいいし、一つでいい」と感じました。

むしろ大切なのは、繰り返しですが、

・論理的思考
・詰まった時に自分で調べることができる
・それでもわからなかった時に他の人に聞くことができる
・タスク管理

です。今回は実際の現場に入ったらどう対応するかということも触れてお話ししましたが、未経験のうちからこのようなことを意識しておくと非常に有用だと思います。

そしてお伝えしたいのは

転職してからが本当の始まり

ということです。転職前にいくら勉強していても実務経験に勝ることはありません。そして実務で勉強しながら仕事をした方が効率がいいことは明らかです。転職前に必ずここまで勉強しないといけない、ということはなく、なるべく早く転職して実務を経験してその中で成長した方がいいです。

それにポートフォリオを頑張って作成しても全てに目を通す企業は少ないです。むしろ、そのかたの人間性や何を思ってエンジニアになりたいと考えているかの方が重要なので、職務経歴書の自己 PRや面接での受け答えの方が大事になってきます。

もし、転職に二の足を踏んでいる方がいれば今すぐ転職活動をすることをお勧めします。もし、どうしても技術的に不安なことがあれば、カジュアル面談や会社のミートアップなどに参加し、実際にエンジニアとして働いている方に、どこまで勉強すればいいか聞いちゃいましょう。そちらの方が明確な目標設定ができますし、転職の練習にもなります。

一番やっちゃいけないのは、「自分はまだまだだから・・・」と言っていつまでも転職活動に映る事ができない状態になることです。本来は転職後にどうなりたいかということがゴールではありますが、転職するまでは、一旦転職すること自体をゴールとして設定してコミットすることも全然ありです!

ぜひ、行動に移してみましょう!

〜まとめ〜

今回は、1週間エンジニアをやってみて感じたことを率直にお伝えしました。これから本格的にエンジニアとしてやっていく中で発見することもあるとは思いますが、同じように未経験からエンジニアを目指している方の励みになれば嬉しいです!

転職のことについて知りたい方はぜひ下記の記事を一度ご覧ください。

また、TwitterのDM等で簡単な面接対策等もやっていますので、何か気になることがある方はぜひご連絡ください。

例えば

・この質問の意図がわからない・・・
・退職理由がどうしてもネガティブに伝わってしまう
・エンジニアになりたい理由の伝え方がわからない

といった簡単な内容でも構いません。お気軽にお問い合わせください。

それではここまで読んでいただき本当にありがとうございました。一人でもいいのでこれを読んで何か一つ身になれば書いた甲斐があったなと思っています。あなたの夢の実現を祈っています!一緒にこれからも頑張っていきましょう!

りょうた


この記事が気に入ったらサポートをしてみませんか?