私について
・文系 ・プログラミング経験1年 ・サマーハッカソン優勝 ・大手IT企業を目指して就活中どうして書くの?
就活で一番聞かれる質問はこれです。2〜3年後、5年後、その先、現時点でエンジニア・プログラマとしてどのようなキャリア(仕事)を目指していきたいか、しっかりと目標を持って仕事に向き合っているかを確認する質問です。この質問を制し、就活のためにも自分のためにも良いキャリア選択ができるように、この場をかりてアウトプットしました。エンジニアのキャリアって?
①スペシャリスト 一つの分野の専門家で狭く深くタイプ。②フルスタック思考のエンジニア
ひとりでシステムを構築、運用までできるエンジニアで広く浅くタイプ。
③CTO等エンジニアとしての道
技術的な部分の割合が少なく、プロジェクトや組織のマネジメント業務を中心にする。
④上流SE,コンサルタント
お客様のビジネス要件を理解し、それを最適なシステム要件に落とし込むSEやビジネスモデル自体を提案する。
僕は、③のエンジニアになりたいです。
どうして③になりたいのか?
自分に優れた能力がないから
僕は勉強もスポーツも、多分全てが普通。特別これが得意といったことはないです。そんな僕が、大きなことを成し遂げるには、優秀な人の力を借り協力する必要があると考えます。他者を動機付けさせるのが好き
大学の3年間、私は組織を率いる経験が多かったです。自分が関与したことで、その人が目標に達成できたり、自己表現がうまくなったりする姿をみて、とても嬉しかったです。それは、一人では感じることのできない達成感ややりがいがあり、**達成感 = 協力した人数✖目標の大きさ**であると学びました。それ以来、どうやったら他者をより動機づけられるかを考え、言葉の伝え方や他者の期待を把握する方法を勉強しています。意志決定の機会が増える
組織での立ち位置が上がれば、組織の誰よりも事業について知る必要があります。この責任とプレッシャーが怠け者の僕にやる気を与え、より早く成長させてくれると考えます。今から私がすべきこと
他者の職種や役職について理解する
良いリーダーとは、他者の職種や役職についての十分の理解がある人だと考えます。表面的な理解では、他者の仕事にかかる時間やコストを正しく把握できず、ミスコミュニケーションを起こす原因となってしまう。バックエンドエンジニアなる
バックエンドエンジニアの仕事は、事業の継続性・信頼性を保つために最も重大な役割を果たしていると考えます。さらにサービースのリリースにはスピード感を求められ、クオリティーとのバランスを保つ最も難しい仕事の一つだと考えます。**独学では学べない現場ならでは**の膨大なデータの効率的な参照方法、快適なレスポンスの返しかたのノウハウを身につけたいと考えます。なんの勉強をしていくべきなのか?
[@poly_soft](https://qiita.com/poly_soft/items/fb649573c19b7a5c0227)さんのバックエンドエンジニアがすべきことを参照テスト
**①Mock** >Mockとは、簡単に言うとテストにするためにつくられたオブジェクトです。テストしたいところを、Mockにさしかえ、Mockの動作内容を定義することで、望むテスト条件を容易に作ることができます。以前LINE Developersで開発する際にmockサーバーを立てたことがあります。
毎回変更内容をデプロイするのが面倒だったので、下記のファイルを実行させテストさせました。
axios
.post("http://localhost:3000/webhook", body, {
headers: {
"Content-Type": "application/json",
"X-Line-Signature": signature,
},
})
②外部サービスでテスト(AWS LocalStack など)
LocalStackとは、クラウドアプリケーションを開発するための使いやすいテスト/モッキングフレームワークを提供するツールです。イメージとしては、ローカルに擬似的なAWS環境を作ってくれて、料金など気にせずにテストや動作確認を可能にしてくれます。
RDBMS
firebaseをはじめNoSQLの各種サービスが非常に便理でつかいやすく、乱用してきました。しかしながら、現場ではRDBが9割以上らしく、基本的な管理方法やコマンドに関しては必ず知っておく必要があると思います。 下記は[kirohi.com](https://kirohi.com/sql_4_languages)さんのサイトを参照①データの操作を支持するDML・TCL
DML(Data Manipulation Language)とは、データの格納や取り出し、更新、削除などの命令の総称です。SELECT, INSERT, UPDATE など
②トランザクション制御言語・TCL
TCL(Transaction Control Language)とは、トランザクションの開始や終了の命令の総称です。COMMIT, ROLLBACK など
③データ定義言語・DDL
DDL(Data Definition Language)とは、テーブルなどの作成や削除、各種設定など命令の総称です。CREATE, ALTERなど
④データ制御言語・DCL
DCL(Data Control Language)とは、DMLやDDLの利用に関する許可や禁止を設定する命令の総称です。GRANT, REVOKEなど
現在は、正規化とSQLをより短くかき、効率的なレスポンスができるように書くことを意識し、開発しています。
正規化とは、テーブルをできるだけ分解し重複をなくすこと。それにより、データの追加・更新・削除などに伴うデータの不整合や喪失が起きるのを防ぎ、メンテナンスの効率を高めることができます。