はじめに
去年の6月から実務をはじめてようやく1年が経ったのであらためてこの1年間を振り返って見ようと思います
https://qiita.com/takehanKosuke/items/ff39f678de682e9c8526
実務初めて4ヶ月のときに書いた記事です。良ければこちらもどうぞ!
簡単な経歴
- 大学4年生(休学中)
- 心理学部
- TECH::CAMPでRubyを勉強
- プログラミング歴 1年ちょっと(2018/3/16~)
- プログラミングをはじめるまではパソコンはYouTubeみるものでした笑
- 超短納期(10日間)でのwebサイトリリース経験
- スタートアップでのサービスローンチを経験
- フリーランスエンジニアとしても仕事をいただく
- 月間PV数1500万オーバーのサーバーサイドエンジニアとして活躍
実務で触ったことのある技術
フロント
- html
- css
- scss
- jquery
- react.js
- riot.js
- nuxt.js
バックエンド
- ruby/rails
- go/echo
- php/cake
- node.js
その他
- Git
- Mysql
- Postgresql
- SQL
- AWS
- GCS
- fruentd
- Docker
- k8s
- cercle ci
- シェルスクリプト
- Redis
- Redis cluster
- Elasticsearch
※あくまで触ったことのあるものを列挙するとこんな感じというだけですので、誤解だけされないようにお願いします。
1つめの会社(2018年6月~2018年12月)
一つ目の会社さんは
https://qiita.com/takehanKosuke/items/ff39f678de682e9c8526
上記の記事で割と頑張ってまとめたのでこちらをみていただきたいのですが、、、
改めてまとめると
- プログラミング歴3ヶ月(簡単なサービスを作れる程度)
- バックエンドはrailsフロントはhtml(haml)・css・jqueryを用いて開発
- インフラは当時は全くその辺の知識がなかったので詳細はわかりませんが、おそらくさくらサーバーあたりのサーバーを使っていたのだと思います。。。(多分w)
- エンジニアは僕と上司の2人だけでしたが、アクティブなサービスを3つほど、たまに機能改善を求められるものや保守運用を行なっていたものを含めると10個以上のサービスを運用してました。(今となっては考えられないw)
- 超短納期でのWebサイトの作成を行なった
と、ざっとこんな感じでした。
その会社さんで前回の記事に書いていないことをざっとお話しすると、、、
あのあと、アクティブに開発を進めていた3つのプロダクトも新規機能開発から保守運用フェーズに入り、毎日の実装内容も当然のことながらviewの細かな修正等の既に知っている知識を使いまわして実装を行うということが増えてきていました。
僕自身最初にお世話になった会社の方々にはとても感謝していますし、間違えなく成長することができた6ヶ月間だったのですが技術的にもっと難しいことをやってみたいと思う気持ちが強くなり、年末というきりの良いタイミングこともあり最初の会社さんを離れることにしました。
2つめの会社(2019年1月〜)
2つ目の会社さんはwantedlyでいくつか申し込みその中で1番自分の使ってみたい技術(Go・React)を使っている会社さんに決めました。
そういえば、実務未経験の時は10社くらいに連絡して1社しか面接すら受けさせてもらえなかったのに、今回は5、6社ほど出して4社ほど面接させてもらえたので、やはり学生も実務経験の有無の差はかなりあることを実感しましたね!
2社目の会社さんは
・動画メディアを中心に事業を展開している会社
・エンジニアだけで30人以上
・メインのサービスは月間PV数1500万オーバー
・APIサーバーをgoフロントエンドをjs(react,nuxt ...etc)やらswiftやらで書いています
・インフラはサービスによって異なりますが、社内ではGCP使ってるサービスとAWSを使っているサービス両方があります
・CI/CDの基盤、ログ基盤、インフラ基盤もしっかり整っています
というような感じです。
最初の1週間は
- A Tour of Go
- Reactチュートリアル
を行い、その後業務に合流しました。
僕自身が実装を担当をさせていただいたのはアドミン側のダッシュボードの機能追加や実装でした。
しかし正直なところが最初の3ヶ月くらいはかなりきつかったです笑
理由としては、、、
ーーーーーーーーーーーーーーーーーーーーーーーーー
・そもそもバックエンドとフロントエンドの違いもわかっていなかった
・APIサーバーを作ったことがなかった
・今まで動的型付け言語しかやったことなかった
・ポインタの概念がよくわかっていなかった
・テストを書いたことがなかった
・jsの概念もよくわかっていなかった
ーーーーーーーーーーーーーーーーーーーーーーーーー
らへんが理由かなと思います。
と、まあ、本当は挙げようと思えばもっとたくさん挙げられるのですが、大きめの要因はこんなところですかね汗
特に大変だったのはポインタの概念と、テストの概念でした
もともと新しいことを自分自身概念の習得にはかなり時間のかかる方だったので
リアルに2、3ヶ月「???」ってなってました笑
もうひとつはテストの概念ですね
ブラックボックステストやらホワイトボックステストやらテストケースやらと、色々とそれまで考えていなかったことを考えることが多くなったので最初の方は想定されるケースのフォローできてる範囲がとても狭かったです
現在ではポインタの概念にもかなり慣れていきましたし、テストの漏れも少なくなってきたかなと思います。
また最近では社内の人が使うダッシュボード周りをエンジニアではない社内の人と直接お話ししながら要件定義から考えて実装していくということもやらせていただいており、とてもいい経験をさせていただいています。
個人的に1年を振り返って、、、
控えめに言ってめちゃめちゃいい経験させてもらっているなと思います。
プログラミング始めてから数えてもたった1年3ヶ月程度ですしその中であれだけ広い分野のことを実務で経験できたのは運がよかったかなと思います。
もちろん、その分自分のプログラミングの出来無さとか理解力の無さに絶望したりもして何度も「自分には向いてないんじゃないか」と思ったりすることも正直今でもなんどもあるのですが、それでも1週間、1ヶ月で単位で振り返ってみると着実に進んでいる感覚があるのでこの感覚を忘れないように今後も1歩ずつ歩いて行きたいと思います!