身につけないといけない技術スキル
目標設定をするにあたり、キャリアスキルズを久しぶりに読んだ。 その中で取り上げられていることについて、何があるのか何をすべきなのか? 今年の目標としてやっていこうと思って記載。
- 金になるスキル
- ひとつのプログラミング言語
- コードの組み立て方
- オブジェクト指向設計
- アルゴリズムとデータ構造
- 開発プラットフォームと関連テクノロジー
- フレームワーク、またはスタック
- データベースの基本的な知識
- ソースコントロールシステム
- ビルドとデプロイ
- テスト
- デバッグ
- メソドロジー
CAREER SKILLS キャリアスキルズ ソフトウェア開発者の完全キャリアガイド 第1版 第1刷 著者 ジョン・ソンメズ 訳者 長尾 高弘 第3章 身につけないといけない技術スキル より抜粋
実に13個も記載されている。多いし自分がしっかりと理解できているのはどれ一つなさそうだ! なんてこった、というわけで余計に頑張らねばだと思いみていく。
金になるスキル
これはまぁ、必要なものがあるけどまずは金になるスキルを身につけましょうね、という話のようだ。なので記載はしたが、特にやるべきことはない。次からの項目についてしっかりやる。
ひとつのプログラミング言語
私の場合は決まっている。Pythonだ。JavaScriptを学んでフロントエンドの道を切り開きたい、という気持ちはあるが改めてPythonを深く学んでいこうと思う。Pythonで何となくコードは書ける・・・じゃなくて、なぜこう動くのか、こういった落とし穴があるのか、といったところを学んでいきたい。
コードの組み立て方
今の自分に足りていなさそうなのはまずはこれ。CODE COMPLETEが学べる参考書として挙げられているのでCODE COMPLETEを読むことにする(買ってはいるけど全然通して読めていない)。
オブジェクト指向設計
ずっと理解せずのまま使っているのでは?とも思っており。
アルゴリズムとデータ構造
個人的に苦手意識が強い分野。とはいえ自分がエンジニアとして働きたいので学ぶ。
- 配列、ベクトル
- 連結リスト
- スタック
- キュー(待ち行列)
- 木(ツリー)
- ハッシュ
- 集合
世界で闘うプログラミング力を鍛える本を挙げられているので、買って読む。 あとはTopCoderが挙げられているけど、AtCoderあたりを再開しようかと思っている。
開発プラットフォームと関連テクノロジー
これは学ぶのがちょっと難しそう。とはいえ自分の場合だとLAMP環境的な構成を意識して、Linuxだろうか。 Linuxの考え方とか、コマンドでちょっとできることとか。
フレームワーク、またはスタック
Djangoと一緒に使うライブラリ群かな。あるいはFastAPI、Flask? 簡単な個人開発で何かサクサクと作りたい。
データベースの基本的な知識
RDBだけでなく、ドキュメントデータベース?についても学ぶべきという話があった。
- データベースの仕組み
- データを読み出すための基本的なクエリーの実行方法
- データの挿入、更新、削除の方法
- データセットの結合方法
- ORM?
データベースの仕組み、と言われるとちょっとアレだけどこの辺りは上がっているスキルの中で一番わかっている分野かもしれない。 とはいえ人にちゃんと説明できるかというと怪しいので、やっていきまっしょい。
ソースコントロールシステム
gitについて改めて学ぶときが来たようだ。 commit, pushはできてもfetch, merge, pullの操作であったり そもそもの仕組みを説明できないので。ぼんやりと分かっているけどうまくいえぬ・・・みたいな状態を脱しないと。
ビルドとデプロイ
とりあえずCI/CDの環境構成をやってみることが大事かな、ということでJenkinsやCircleCIだとか触っていきたい。 ちょっと違うかもだけどAnsibleもオススメされながら触れていないのでやってみる。
テスト
これも意外と理解できている範囲かもしれない。最初に「テスト」について考えたからだ。とはいえ自動化・受け入れテストといった観点はNGだしE2Eテストもざっくりと理解はしつつやっていないので記事を書く・触ってみる。
デバッグ
最初、詰まったなぁと。今ではだいぶわかるようになったけど、どうやっていくか?ということは大事っぽい。 記事にはできた記憶がないのでやる。
メソドロジー
アジャイル開発とは?改めて学んでいくかな。あとはスクラムとか?
終わり
いつものことながらだいぶ雑多に書いた。1つずつ少しずつやっていきたい。