つよいエンジニアの定義を自分なりに。
開発環境
自分用にカスタマイズされた開発環境を作成する。主な設定ファイルは dotfiles
としてバージョン管理して再現性を高めておく。
- zsh + neovim + tmux 環境を整える
- 昔、設定した内容。
lua
に移行中
- 昔、設定した内容。
- gitコマンドのエイリアスを設定する
- gitコマンドのエイリアスはシェルとは別の設定
- エディタ、IDEの設定
- フォント: Menlo, RobotoMono Nerd Font, SauceCodePro Nerd Font
- フォーマッター、静的検証を設定している
テストを書く
単体テスト。Node なら Jest で書ける。テストコードそのものはもちろん、テスト用データの作成作法なども。
- AAAパターンを使ってテストを書く
チーム開発
- GitHub の基本的なコマンド
- コミットの操作(取り消しややり直し、整理)
- Pull Request
git rebase
を使ってコミットを整理する- レビュアーの負担を考える
- コミットメッセージ
- Semantic Commit Messages に準拠したコミットメッセージを書く
- 何をしたかよりも何のためにやったのか
- コードレビューのやり方
データベースのことが分かる
- テーブル設計ができる
- 実行計画を使ってクエリをチューニングする
コンテナを使いこなせる
ライブラリなどのメンテナンス
サーバの知識がある
CICDができる
ビルドしてテストしてデプロイするなどの一連の流れを自動化すること。GitHub 上でバージョン管理していることを前提にすると、PR をプッシュしたときにビルドとテストが実施され、プロダクション用のブランチにマージされたときにサーバにデプロイされるような仕組みが考えられる。
今なら GitHub Actions で実現できる。他に SSH に関する知識や rsync コマンドに関する知識が必要になる。