エンジニア奮闘記〜未経験からOJT&PM?への道のり〜

 

2022年09月10日

エンジニア奮闘記〜未経験からOJT&PM?への道のり〜






未経験枠として入社して3年。

右も左もわらかなかった私が、現在はクライアントとの窓口を担っています。

9月に新たなメンバーが入社しました。
“教える”というとおこがましいので、”伝える”を意識しています。

この記事では、私がどのようにして学習して知識を習得したのか振り返ります。

これからWeb系ソフトウェアエンジニアを目指している方に少しでも参考になればと思います。

本をたくさん紹介していますが、アフェリエイトをしていません。
お役に立てばという気持ちです。

全て”持論”です。鵜呑みにしないで下さい。

現在
・運用フェーズのサービスのクライアントとの窓口兼開発
・OJT

社歴
・新卒で金融機関に入社.営業を4年間
・営業成績、微妙。このまま続けてもな〜って思って退社
・約9ヶ月ニート
・時間を持て余したので、プログラミングを勉強する

・開発会社にキャリアチェンジ。ニート脱出。
・SESと受託事業の会社に転職。→7ヶ月で退社
・3ヶ月受託開発->4ヶ月間SES
・主に機能追加やテスト工程を担当
・仕様どおりにプログラムしていただけで、設計やインフラに触れずコンピュータがどうやって動いてるか(今も若干よくわからんけど)とかよくわかっていなかった
・よくわからないから魔物のように思えた。
・言われた通りの処理を書くので必死。

・SES時代は休日返上で四六時中プログラミングをしていた。←焦りから
・趣味:読書・筋トレ・マラソン
・パンクアップを目指している

で今の会社に入社。

ココからは、問題を解決するために勉強した経緯を綴っていきます。

最初に担当したのは、リリース前のtoC向けのサービス
PHP, MySQL、フレームワークなし
作業は、管理画面の機能追加
よくあるユーザ一覧やお知らせのCRUDです。

「ポストして〜」とか「ゲットして〜」とか社内で飛び交うがなんのことかわからず焦っていた。
て調べていくうちに「HTTP」を知った。

プロトコルという単語を知った。

あっ、コンピュータってなんやら約束事を決めてそれに基づいて動いているんだ
そこで、「HTTPのプロトコルの教科書」を購入

ふむふむ。

HTTPはWEBで欠かせないプロトコルなのだ。
「Webで支える技術」を勧められた。

けど、正直よーわからんかった。

REST、PRC?単語だけリソース?API?みたいな感じ。

入社して1ヶ月。
なんやらブラウザとサーバーは”通信”なるものをしているんだな〜と。

“通信”とはなんだ??

ってことで、通信について理解しないといけないな。ってなって、
・「マスタリングTCP/IPプロトコルの入門編」

・「ネットワークの基本」を読破。

ま〜読んだけどよくわからん。
いろんな階層があってそれに応じて通信しているんだなと。

少しネットワークに興味がでてきました。

CCNAの勉強を開始。

CISCOのパケットトレーサやping-tを使いました
3ヶ月ぐらい勉強して資格は受けませんでした。
勉強のおかけで、ネットワークの触りは掴みました。

物理層やネットワーク層があるんだな〜ぐらい

IPを使ってサーバーを特定し、ポートでアプリケーションを識別しているんだな〜ぐらい。

DBはMySQL
「このメソッド呼べば、××のデータ取得できる」って感じで既にメソッド化されていたので
DBについて全く学びませんでした。

DBに種類があってMySQLを使っているとかすら知らなかったと思います。

SQLを一度も書いていませんでした。

それでも開発はできました。

そして3ヶ月目ぐらいに別サービスの管理画面を担当

このプロジェクトは、1から構築
エンジニア歴長い人(A氏)と2人三脚で担当

PHP HTML CSS Laravel MySQL
ここで開発の考え方が180度かわった。

Dockerで環境構築。
言われた通りコマンド打つだけ。
Dockerがなんなのかはよくわかってない状態

そして、1からWEBページを作成。

HTML, CSS, Javascript(JQuery)

あ〜また勉強すること増える〜って思いながら、1つ1つやった。

HTML
・「HTML&CSSのツボとコツがわかる本」

CSS
・「HTML&CSS逆引き事典」


JavaScript
・「JavaScript本格入門」


1から丁寧に教えてもらった。

1人でやったほうがはやいやろうな〜って思って罪悪感があったけど。。

メモして必ず家で復習していた気がする

フレームワークを使ってかつ、設計済みの状態だとO/Rマッパーを使うのでそんなに意識しないんですね
DBへの接続とかブラックボックスでよくわかってなかったです。

ここでは、HTML・CSS・JavaScript。
ブラウザにすぐに反映されるのが嬉しかった

JSとはブラウザで実行されるプログラミング言語なんだな〜とか
cookieっていうお菓子があるんだな〜とか

Chromeの開発ツールを覗いて通信とかhttpステータスとかめっちゃ調べてた記憶があります。

けど、そのA氏がSQLは覚えるべきってことで、書籍を勧められました。
・「スッキリわかるSQL入門」

数ページやったけど、SQL書かなくてもいけるやんとか思って勉強しなかったですね

(後でツケが回ってくるとも知らず。。)

そんなこんなで、ここではjQueryを使ってモーダル表示やフロントで簡単にごにょごにょするってことを学びました

結局、設計やインフラを担当していないので、そのあたりは全く理解してなかったです。

フレームワークに感動しました。便利すぎます。
しかし、本質を理解していないと別のフレームワークを使った時に
応用が効かないし、よくわかんね〜なで終わっちゃうと思いました。

Laravelとか便利すぎて、なんもしらんくてもネットで拾ったソースを書けば動きました。

少し落ち着いたとこで、環境構築「Dockerってなんだ?」って思って
Dockerの本を購入しました。

・「docker基礎からコンテナ構築」

CCNAを勉強した知識が、紐づきました。
dockerネットワークなど理解が深まりました。

Kubernetesの章とかよくわからんから飛ばしましたw

休日にdockerを構築して遊んでいた気がします。

そして、ローカルではなく本番にデプロイするようになりました。

この時に、CentOSとかubuntuとかを知ったと思います。

それこそ、CLIは私にとっては魔物です!

GUIしかしらないため、テレビでみる”ハッカー”だ!とか思ってました。
OSはLINUX。LINUXってなんやねん。
OSか〜。OSってなんやねん。
(聞いたことあるけど。。。)
みたいな感じでまたわからんことが増えました

・「How LINUX work」

謎に英語本にしましたw
英語の方がしっくりくるかなって思ったからです

これを機に、英語のドキュメントを読んだり、英語本を読むことに抵抗がなくなりました

中身むず!ってなってました。
ファイルシステム、システムコントロール、デーモンやカーネル、プロセスなどを知りました。
続けて、「はじめてUNIXで仕事をする人が読む本」を購入。

本番環境はA氏が構築しました。

自分の性格上、人がやってくれると思った瞬間”甘え”ます。
責任感が欠如します

どうせ、誰かやってくれるや〜精神でいると、私はだめですね。

自分でやるんだ!っていう覚悟がないと必死さがなくなります。。

営業時代はチーム戦でした。
個別成績も重要でしたが、支店ごとの数字の比重が大きいです。

社内の優秀な人に頼りっきりでしたね。

自分が売上をあげなければならないという覚悟がどこか欠如していた思います。。

カッコいいスーツや身なりばっかこだわってましたねww

(支社長、先輩方ありがとうございました)

“ドメイン”との出会い

本番にアップすれば、ドメインを取得します。
A氏がクライアントと「ドメインどうしますか?DNS・・・」的なやりとりを聞いたと思います。

ドメイン。。。。。。。

確かにブラウザにアクセスするとき、あれどうなってるんだ。
疑問が湧いてきました。

DNSレコードをセットして・・・・・
とか言われましたが。はい魔物。
困った時の書籍!
・「DNSがよくわかる教科書」

これ!!!!!!!!
インターネットを支える仕組みのひとつである”DNS”

インターネット初期は、SRI-NICがHOSTSファイルを管理・公開していた。
が、限界がきた。
そして、「階層化」と「委任」という、分散管理の仕組みが採用された。。。

問題を解決するためのアイディアが美しい!!

のめり込んで読んだ印象があります。

ほんなこんなでA氏と二人三脚のプロジェクトが終わりました。

〜少しの自信からの挫折〜

新しいプロジェクトが入りました!
インフルエンサーポータル!
1万人のユーザを有しているサービスです。

インフルエンサーと企業のマッチングサービス。
        

機能は

・マッチング
・SNS連携(ログイン・データ取得)
・チャット
・アフィリエイト

でしゃばりの私は、クライアントとのやりとりさせてや〜みたいな感じでやらしてもらいましたが・・・・・
(ココでやらせてくれる組織風土が凄い!!!ww)

全く意味わかんなかったですね。
インスタの投稿を表示してほしいとか。

「はあ?そんなんいけんの?」

設計というのを知らず。。。。
できるわけないですね。

案の定、初回の打ち合わせでクライアントからクレームを受け、交代になりました。
でしゃばりでしたね。。

安定の、A氏にチェンジ!!!!

私は、このプロジェクトに携わるのはチャンスだと思いました。

このサービスを自分で開発できるようになったら、自分で作りたいサービスをつくれるんじゃね???

設計やなぜそうなるのかなど聴きまくってました。

リレーションの1対1や1対多、正規化など学びました。

実装されたソースコードをみて、質問をしまくりました

アフィリエイト機能のソースコードをみて
セッション管理を学びました。

XSSやCSRF、SQLインジェクションなど、セキュリティーが大事なんだな〜などなど。。

~SNSの認証との出会い~

Google、Twitter、Facebook連携機能があります。
どうやってログインしてんねん!

SNS認証に”OAuth”っていうプロトコル?が使われているのか。。
ってことでSNS認証について勉強しました。
・「OpenID Connect入門」

・「OAuth2.0を使うためのチュートリアルガイド」

SAML認証もついでに。
・「SAML入門」

あとは、画像はBase64で〜とかばいなりー?ばいちゃ?とか意味不明だったので
文字コード入門を勉強しました。
・「文字コード入門」

ほんでこんなで、リリースを迎え、数ヶ月経ちました。
作業員として携わって来ましたが、窓口担当にチェンジしました
現在は窓口担当としてクライアントとやりとりし、より良いサービスを生み出すために日々奮闘しています。

はい。ここまで淡々と「問題=不明点」に当たった時の解決策を述べました。
自分の場合は、人に概要を聞いて、書籍で深く学ぶって感じですね。
弊社には楽しみながら学べる風土があります。
少人数で、1人1人個性があり、思いやりがあります。
入社して心から良かったと思っています。

皆さん!そんな我々と一緒に働きませんか??
現在、WEBエンジニア、フロントエンジニア、
セキュリティエンジニア、プロジェクトマネージャーと
4つの職種で募集しております。

詳細はこちらをご覧頂き、ご興味のある方は是非ご応募下さい。
スタッフ一同お待ちしております。

最後まで、読んでくださりありがとうございました。