未経験からエンジニアとして就職して半年たったのでこれまでのことを簡単にまとめてみる

はじめに

私は今とある小さな企業で自社開発のエンジニアとして開発業務を行っています。

この仕事に就いたのが昨年8月、つまり今年の2月で半年を迎えました。

それまでは全く別の環境で、全く別の仕事をしていました。

そんな未経験の立場からエンジニアとして採用され、今に至るまで、どのようなことをしてきて、今どのような状況なのか、記事にしてみたいと思います。

あまり役に立つ内容ではないかも知れませんが、まぁお話として流し読みでもしていただければと思います。

きっかけ

なぜ未経験からこの業界を目指そうと思ったのか、シンプルに言うと次の事が挙げられます。

  • 前の仕事に飽きた
  • 前の仕事・職場に対する不満もあり
  • パソコンやガジェットが好き
  • 将来的にITに関するスキルは上げておきたい

まぁかなりざっくり、細かいことを除けばこんな理由です。気持ちの流れ的には上から下ですかね。どうせ転職するならITのことやりてぇみたいな。

ま、身バレ防止の意味も含めてここはこのくらいにしておきます。
(知ってる人がこのブログ見れば普通にバレるし実際はあんまり隠してないのはおいといて)

転職前の状況

前職の引き継ぎだとかいろいろ考慮して前年(2017年)中には離職の意思を上司に伝えていました。同僚とはうまくやっていたのでそこに迷惑をかけるわけにはいかず、そのへんは考慮して早めに動きました。

この歳(30手前)で未経験の世界に飛び込んでいくのだから、少なくともやる気は見せなければ。
そんな思いで勉強はしていました。
2017年4月にITパスポートを、2017年10月に基本情報技術者を、2018年4月に応用情報技術者を受験し全て合格しました。

なぜプログラミングではなく、資格試験の勉強をしていたのかというところですが、①独学で資格を取得しておくことでやる気のアピール、②まずは基本的な知識をおさえておきたかった、③プログラミングを仕事にしたいと決めていたわけではなかった、理由はこのあたりです。

あとは純粋に試験とそれに向けての勉強というもの自体が好きだったというところもあります。変わってるでしょ?

①について、そもそもこれらの資格を持っているからと言って転職活動で大きく有利になることはほとんどないとされています。それは知った上で、それでも未経験から挑戦するならなにか最低限このくらいのことは知ってますよ、ということが示せる指標が欲しかったという点、ある程度は勉強しなければ合格できないため仕事しながらでもちゃんと勉強してますよアピールができる点、このあたりから取得を目指しました。

もちろんプログラミングの勉強をしてなにかアプリを開発して、それをポートフォリオ作って掲載して見せれば未経験でも戦えるのでしょうが、まぁプログラミングする人になるかどうか当時は決めてなかったし、純粋に試験受けてぇなぁ~ってくらいの気持ちでしたので。

資格試験の勉強をしていたことは結果的に入社してからの様々な学習にも活きていますし、むしろ入社してから仕事中には学びづらい部分が多いので事前にやってたのは良かったんじゃないかなぁ~と思っています。

転職活動

いくつかの有名所の転職サイトに登録して面白そうなところを探していました。この業界ならだいたい何やっても面白いだろうくらいの感覚であまり絞らずざっくり『IT系』で見ていましたが、ふんわりとしすぎていてなかなか絞れませんでした。まぁそりゃやりたいことが明確になっている方が探す上では良いに決まってます。

未経験である以上、給料は贅沢言えないのでだいぶ低く考え、残業が少ないだとか、飲み会や社員旅行みたいな面倒事があまりないところを重視して絞りました(←怒られそう

このブログをやる前からブログはやろうと思っていたので、そこにも活かせそうなWebディレクターとかも面白そー、という程度のノリでいくつか応募しましたが、最初の何社かは書類で落ちました。『未経験歓迎』というのはやっぱり『一応書いておく』けど、歓迎してはないってのが本音ですよね。あと自分の場合は年齢も大きいんじゃないかなぁと思いましたが。

その後もうちょい真面目に絞って、2社ほど書類通過→面接まで進み、いずれも結果的に内定をいただくことができました。

今の職場、募集はエンジニアではなかったのですが、面接時に私の話を聞いてエンジニアに適性があると判断されたのか、エンジニアとして採用されました。

自社開発のエンジニアであり、仕事場もきれい、立地条件最高、いろいろとフリー(個人任せ)な環境、このあたりが気に入りました。

結果的には確か5社に応募して2社が書類通過しいずれも内定ということで、転職エージェントには10数社受けて内定1つ出る程度、と脅されていたのでワイは優秀なんやな、と思いました(嘘

正直なところ書類は基本情報とか応用情報書いておけば一応面接してもらえるんじゃね?って思っていたし、『人格をつくる』のは得意なので面接は受ければ通る自信がありました(実際はあんま上手に受け答えできなかったけど)。
結果、後者は正しかったけど前者は全然そんなことなかったです。IPAの試験は転職活動ではほぼ無意味と思って良さそうです。事前情報はあったけど身をもって経験しました。今の職場の面接担当者もIPAの試験のことをそもそもそんなに知りませんでした。

そんな具合に7月に就職先が決定しました。

就職までの間

前職は有給が全然使えない職場だったので辞める前くらいは貯まっていた有給を使って過ごしました。

就職先が決まったらこの時間を使って勉強とかしようと思っていたので、使用することになるRubyについて調べ、勉強を開始しました。

ちなみにここまでプログラミングを本格的に勉強したことはありませんでしたが、中学生くらいのころにゲームが好きだった私はHSPという初心者向け言語を軽く触って簡単なゲームを作ったり、前職場ではExcelでのルーチン作業をVBAでマクロ組んで誰でも実行できるようにするくらいのことはやっていました。

とりあえずプログラミングを学ぶのに何が良いのかなぁといろいろ検索し、Progateに出会い、こちらで学習しました。

参考 Progate

Twitterでフォローしているプログラミング初学者の方も多くがProgateで学んでいらっしゃるようなので、もうずいぶん有名なんですね。

ここはとにかくわかりやすいです。基礎中の基礎を学ぶのにはすごくいい場所です。むしろココより初学者向けな、わかりやすく学べるサイトはないんじゃないかってレベルなので、プログラミングに興味のある方はぜひココから触ってみるのが良いと思いますね。

Progateだけやっててもダメだとか役に立たんみたいなことを言うプログラミング上級者の方もいらっしゃいますけど、何をやるにもまず基礎が必要なわけで、いきなり専門的な本を読んだってつまづくんだし、はじめて手をつけるのには向いてるので、こういった意見は放っておいておすすめです。

しかし、Progateだけやっててもダメってのはまぁ正しくて、Progateを一通りやったらどんどんステップアップしていったほうが良いのは間違いないですね。何周も何周も同じレッスンをやっている方をよく見ますが、それよりはRailsだったらRailsチュートリアルみたいな、一歩進んだ初学者向けの学習ツールがあるわけで、ひたすら繰り返すよりはそういったものに挑戦していったほうが良いと思います。解説の仕方も違ったり、また書き方もいろいろな書き方があるので様々な教材に触れましょう。

これはProgateが良くないというわけではなくて、Progateは本当の初学者を対象とした教材だから、脱・初心者を目指すのであればその後は相応のものを使っていくべきだということです。

とか言ってる私も現時点の考えから以上のように言っているだけで、実際は思っていたほどいろいろやる余裕はなく、ProgateのHTML、CSS、Rubyを一通り終えてRailsの途中までやったところで入社日を迎えたわけですが…。

(※Progateは無料でも最初の部分を受講できますが、気に入ったらぜひ有料部分もやってみてください。本1冊買うより安いです。)

入社してから

入社してからは次のようなことをやりました。

時期 内容
1ヶ月目 Schoo動画視聴学習などでC#、Ruby on Rails、Bootstrap、ネットワーク全般、AWS、Gitについて学習
herokuにRails製簡易アプリのdeploy
2ヶ月目 C#、Railsを利用した社内用簡易アプリの作成
3ヶ月目 2ヶ月目に作ったアプリのバージョンアップ、AWSのEC2にdeploy
4ヶ月目 別プロジェクトのお手伝い
5ヶ月目 新規社内用アプリの作成に着手
6ヶ月目 別プロジェクトの引き継ぎ、作業

入社1ヶ月目

とりあえず会社の基本的なことを研修で教えてもらった以外は基本常に勉強してました。他の会社のやり方は知りませんが、ウチは小さい会社なので直接指導を受けるスタイルではなく、課題というかこういうことをやってねっていうお題を与えてもらって、それをもくもくとこなす感じで学習しました。

なのでまぁ独学とそう変わらんですね。ただすぐとなりに上司がいるので、つまづいたらいつでも教えてもらえるというかんじ。だから家でひとりでやっててあーもうわからんやめた~みたなことにはならんし、勉強しながらもちろんお給料もいただけるわけでとてもありがたく思いました。自分のペースでやれるし、独学は慣れてるし、いつでも聞けるとはいえやっぱ仕事の邪魔はし辛いので自分で解決しようとググる回数は多く、エラーに対処する力はだいぶ養われたと今は感じています。

教材としてはSchooという動画教材を与えられましたが、正直ちょっと微妙だったかなーと言う感じ。まぁ講師によりますね。わかりやすい人はわかりやすかったし、微妙な人は微妙。

まぁSchooの動画視聴を一通り終えてわかったところもあればよくわからんところもあるまま、Railsのよくある簡単なアプリを作成してherokuにデプロイしました。正味あまり覚えてないけどようやったなって感じ。

入社2~3ヶ月目

2ヶ月目には勉強がてら社内で使うツールの作成を頼まれたのでそれに挑戦しました。『こういったものを作ってくれ』というゴールだけ与えられて、そこに至るまでのやり方やデザインなんかは全て自由なのでわからんなりに好きにやることができました。

作ったものの詳細を紹介するのは控えますが、これを通してRailsに関してはなんとなくはわかってきたかなぁ…というレベルには至りました。

ちなみにこの時期に今のようなことをやるならJavascriptの知識も必要だという事が分かり、まぁ実際に使ったのはjQueryなんですが、こちらも作りながら勉強しました。
必要なところだけつまんで学習したような形になったのでJavascriptの基礎はほぼ知りません。jQuery使う中で必要なことだけ勉強しました。何ならjQueryはオワコンというのをよく目にしたのでこの程度のやりかたで十分なのかなとも。意外と難なく使えるようになったので、やっぱ多少なりプログラミングに慣れてくると違うなと感じました。

アプリ完成後はAWSのEC2にデプロイを行いましたが、はじめはLinuxという名前を聞いたことあるだけのレベルで、何をどうやれば良いのかから調べて行うのは相当苦労しました。そもそもAWSってなんやねんレベルでしたからね(今もまだまだよくわからん)。nginxやらpumaやら聞いたこと無い名前が次々出てくる中で、ひたすら調べて、ヒットした記事に書いてある内容が理解できずにまたまたググって…の繰り返しでめちゃめちゃ苦労しました。

初学者はほんとに何もわからないですからね…。一見めっちゃ丁寧に書いてある記事でも我々には難解なんですよね…。なんでもっとわかりやすい記事がないんだろう…って毎日思ってました。

入社4ヶ月目

ここでいずれ引き継ぐ予定の別プロジェクトのお話がきてそちらのお手伝いに入りました。

今までのアプリは全部自分で書いてたのでカスみたいなコードでしたが自分にとってはわかりやすく、やりやすいと思っていました。ここではじめて他の人が書いたコードを読んでそこに機能追加をしたりバグ修正をしたりということを行いました。

なるほど、こう書けばスマートなのか!みたいに感動することもあれば、なにやってるのかワケワカメ(死語)みたいなところもめっちゃあって、まだまだ先は長いなと感じました。

というか自分が手を加えることで綺麗にまとまっているコードを汚す感じがしてすごくやりづらかったのですが、好きに触っていいよ、と言ってもらえたので途中から吹っ切れてガツガツ汚していきました。そしてあまりにひどいところだけきれいにしてもらい、それをみてナルホドナーと頷いていました。

社内の人が使う部分を触っていたので、使う人たちにもいろいろ要望聞いたり提案したりということも行い、結果的にはなかなかいい具合に作ることができたと思います。コミュ障ですがこういう部分の聞き取りとか提案力は高いと自負しています。社内の人からそれはコミュ障じゃないよ、とツッコんでもらえましたがまぁコミュ障にもいろいろあるんです(と思ってます)。

入社5ヶ月目

お手伝いが終了し、今度はまた別の社内用アプリを作成しました。こちらも詳細には触れられませんが、まぁ今までやっていたことを復習するのにちょうどいいくらいの内容でした。

一応アプリ作成2ヶ月+デバッグ+デプロイ1ヶ月の合計3ヶ月で見積もったのですが、結果的にこの1ヶ月で作成がほぼ終わりました。似たようなことを繰り返し勉強できつつ、少しずつ新しい知識を付け足してこれていたので、自分が思うよりも早く各種実装が進められました。

Railsのgem(便利パーツみたいなモン)はいろんなものがあり、これらを上手に活かすことで実装スピードが格段に上がると思いますが、はじめのうちは新しいgemを使えるようになるまでにずいぶん時間がかかるんですよね。ある程度慣れてきたことで初めて使うgemでもググればわりとサクッと使えるようになったのが大きいです。

入社6ヶ月目

先月触っていたアプリはリリース予定日までまだずいぶん余裕があり、またいろいろな理由から4ヶ月目に触っていたアプリの引き継ぎを行うことになったのでそちらの引き継ぎを行いました。引き継ぎとはいってもなんかいろいろ教えてもらうというわけでもなく、勝手にコード読んでわからんところをひたすら聞く感じでした。

相変わらず人の書いたコードはなかなか馴染まないので、これはまだまだ苦労し続けています…。あと地味にタイポ(タイプミスのこと)があったり、英語の活用が違ったり(requiredにしてほしいのにrequireになってたり、みたいな)もすごく気になりました。

とりあえずはひたすらコード読んで、仕様が不明なところとかをひたすら聞きまくって自分に馴染んだアプリにしてしまえるようにかわいがっているところです(まだイマイチ可愛くない)。

ここまでやって来て思ったこと

自社開発で学習に時間もたっぷりもらえるのはありがたい

正直自社開発の小さな会社に、未経験の使えるかもよくわからんやつをよく採用したな、というのが正直な感想なのですが、未経験だからちゃんと学習時間はあげるよ、といったスタイルでしっかり勉強させてもらえている今の環境はすごくありがたいです。

お金もらいながらこうやってスキル高めていける場所に来れたのは本当にラッキーでした。

初学者向けの記事は少ない

途中でも書きましたが、ググって出てくる記事の大半はやはり初学者には理解しづらいなと思いました。書いてあることが難しすぎる…。

多分ちゃんとしたエンジニアにとっては十分わかりやすいのでしょうが、もっと噛み砕いた記事が増えてくれても良いんじゃないかなーと贅沢言っておりました。

勉強不足だ、と言われればそりゃ間違いないのですが、何で勉強すべきなのかがよくわからんというのが正直なところなんですよね。初学者向け!な本を読んでもよくわからなければじゃぁこの本が読めるようになるにはどんな本を読めば良いんだ、みたいな状況に陥りがちで、どこから手を付ければスムーズに学習が進められるのかがよくわからんと思いました(私が無知すぎるだけならゴメンナサイ)。

プログラミングやるにしても、ものすごくいろんな周辺知識が必要になりますし、それこそLinuxにデプロイしようと思えばLinuxの勉強やウェブサーバー、アプリケーションサーバーなどなどいろんなことを知る必要があります。いろんな分野でいろんな基礎知識があるのでそれらをうまく拾っていくことがもっとスムーズにできるところ・方法があればなぁと思いました。

ということで自分がこういった経験を通して感じた難しいところやわかりにくかったところをブログやTwitterで紹介・解説できるようにしたいなと思っています(既に基本的なgemのこととかは記事にし始めてるけど)。まぁ自分自身がまだまだ未熟なので自分の知識を上回る内容なんてとても書けませんが、先人たちのありがたい記事を読めるようになるレベルにたどり着くお手伝いができる程度(わかりにくい)の内容であれば書けそうなので地味に増やしていきたいと思っています。

それでも頑張ってググりまくってたら案外なんとかなってくる

まぁこれは実体験からなのですがワカランワカラン言い続けてもひたすら繰り返してたらなんとなくいろんな記事が読めるようにはなってきました。まだまだ初学者からは抜けられないレベルですが、明らかに成長は感じられるので嬉しいですね。

とはいえ今はいざとなれば教えてもらえる、挫折しなくて済む環境なので助かってますが、そういう環境でなければ辛いですよね。ひたすら調べるのもどんどん時間食うし。ゆったり勉強させてもらえるところに就職できれば、聞けるしお金ももらえるしでとてもいいのですが…。

英語は読めるとだいぶラクだと思う

これもよく言われていることだとは思うのですが、マジで英語は読めたほうが良いですね。エラーコードとかでググって出てくる記事でも英語のは飛ばしがちですが、どうしようもないときに仕方なく読むと解決したりしたこともあります。たぶんちゃんと読める人なら得られる情報量がずいぶん上がるんだろうなぁ~と。

いうても高校のときは英語が一番得意で受験英語ならまぁまぁなレベルだったのですがしばらく触れてないともうダメですね。単語も抜けまくってるし、分かりそうな文でもイマイチ意味が頭に入ってこない。今からでも英語の記事をもうちょい積極的に読むとかして慣れていったほうがいいだろうなと思いました。

疲れたので終わります

ということでひたすら書きなぐったので文調がぶれてるかも知れませんがご容赦ください。ココまで見ていただいた方はありがとうございました。

ひとまずざっくり書きました。余裕があれば適宜調整したいとは思います。

プログラミング初学者の方に見てほしいなぁと思ってTwitterでもプログラミング学習をし始めたような方をどんどんフォローしています。役立つ記事が増えるかはわかりませんがよかったらまたブログ見に来てくださいね。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください