最初の3年で覚えるべき技術(『チーム開発の教科書』より)

はいどーもこんばんはヒモ希望の20代男です。
本日は『チーム開発の教科書』に載っていた「最初の3年で覚えるべき技術」について書いていこうと思います。
僕がちょうどプログラミングを始めて一年目ですから、これからの指針を考えるのにも役立ちそうな気配プンプンですね。
各項目を軽く書いたあと、現状の自分と目標をサラッと書いていきますよ。

なお『チーム開発の教科書』自体はまだ全体の5分の1くらいまでしか読んでいません。
ちゅーわけで全体の感想はまたの機会に。

共通言語仕様

■共通言語仕様

・C#の基本構文(ifとかforとか)
・ジェネリック
・型推論、匿名型、LINQ、ラムダ式
・非同期async/await、dynamic
・nameof演算子、null条件演算子

この項目は恐らく全部OK。
ただ非同期の処理はあんまり書いたことがない(必要になる場面が今までなかった)ので、追加学習が必要かなあという感じですかね。
サーバーと通信するプログラムを書くようになったらよく使うんですかねわからんけど。

「この一年目はプログラミングの基礎を学びたい」と考えて過ごしていたので、基礎と呼べる共通言語仕様をほぼ理解できているのはいい感じですね。

アーキテクチャ

■アーキテクチャ

・オブジェクト指向、イベント駆動型
・クライアントサーバーモデル、三層アーキテクチャ
・MVC、MVVM、データバインド
・例外処理

必須はオブジェクト指向らしいです。
継続的な学習は必要でしょうけど、最低限のレベルは習得しているかなあと思います。
「クライアントサーバーモデル、三層アーキテクチャ」は何かすら知りませんでした。MVVMとデータバインドを身につければ三層アーキテクチャについても理解できるらしいので、本書でも扱わないらしい。
ところでデータバインドってWPFアプリでよく使ってたやつですかね?
例外処理もよく使うのでたぶん大丈夫……? いやtry-catchとかそういう話じゃないんですかね。
よくわからんです。

なんにせよアーキテクチャの項目は追加学習しなければならないものが多い気がします。
二年目はこの部分の知識を増やすことを目指そうかなと思いますよ。

データエンティティ

■データエンティティ

・SqlCommandでSQLクエリを実行
・DataSet、型付きDataSet
・LINQ to SQLとEntity Framework

はい全部わかりませんw
SQLはPHPで少し使いましたが、それとはまた違う感じですかね……。
C#ならストアドプロシージャとSQLで実行するのがよいようです(何のことか全くわからないですけど)。
DataSetを使うならEntity Frameworkがいいらしいですよ。
この項目は一ミリもわからない話ばかりだったので、今年少しずつ勉強して、三年目に期待しましょう……w

Visual Studioプロジェクトの種類

■Visual Studioプロジェクトの種類

・WPF
・ASP.NET MVC
・Windowsストアアプリ
・Single Page Application、Web API

僕の場合はUnity(ここには入ってない)とWPFですかね。
MVVMとデータバインドを扱えるらしいので、アーキテクチャも一緒に学べそうですね。
なおWindows Formsは「古い技術なので避けましょう」と書かれていましたw

またWeb開発ではHTML5・CSS・JavaScript(もしくはTypeScript)の学習が必須らしいのです。
これらを抑えた上でASP.NET MVCを使うようですね。僕は一応上述のものは全て学習済みなので、やろうと思えばASP.NET MVCも使える感じでしょうか。
ただあんまり興味がないのでパスですかねえ……。

他にも本書の中ではスマートデバイスやらなんやらと触れられていましたが、プロジェクトの種類は古すぎる技術を避けて、あとは自分の好きなものを選べばいいんじゃないかなあと思いました。

チーム開発

■チーム開発

・ソースバージョン管理
・タスク

ソースバージョン管理については「ソースバージョン管理を扱えないことは、プログラム開発の資格がないと言ってもよいほど重要なスキル」とまで本書の中で言い切っています。
実際、プログラミングを始めて一年目の僕ですらそう思います。
バージョン管理システムなしでの開発はちょっと考えられませんね。

スクラム開発とかウォーターフォール開発とかもちょっとだけ触れられていますが「開発プロセスを自分で考えられるようんあるには、5年から10年以上の開発経験が必要になるかもしれません」とのことなので今はとりあえず諦めますw

タスクも基本的には僕がどうこうする感じではないんですかね……よくわかりませんが。

テスト

■テスト

・F5デバッグ
・単体テスト
・コード化されたUIテスト
・ロードテスト

F5デバッグについては多かれ少なかれ何かしら皆さんも使ってますよね。
ただ使いこなせているのか? と聞かれると自信がないので、引き続きこの本で学習していきたいと思います。

そして単体テスト。
これもよく聞きますね。僕も何回か単体テストについては調べたことがあります。
この本によれば「単体テストが作れるかどうかで、開発スピードは数百倍から数万倍変わる」らしいです。
さすがにちょっと半信半疑ですが、本書の中で実践的な単体テストの作り方も解説しているようなので今から楽しみです。

コード化されたUIテストも面白そうですね。
本来なら人が操作しなければならない部分をプログラムが自動で操作するようです。
ぜひ試してみたいですねえ。

ロードテストについてはあまり興味が出ませんでしたが(通信系のことを僕がしたことないので)、「最後の工程まで問題が発見できないのではなく、作り始めてから作り終わるまでずっと問題がないことを確認することは、今後必須の技術」というのは何にでも当てはまる大事な考え方なんじゃないかなあと思いました。

この項目も学習が全体的に半端なので、今年いろいろと学んでいきたいですね(特に単体テスト)。

リソース

■リソース

・Visual Studio Installer
・ClickOnce発行
・Azure発行

このへんはプログラム配布時に考えることですかね。
僕はUnityでのアプリ制作をメインにと考えているのであまり関係ない……かな?
ただWPFアプリを公開するならClickOnceはよさそうだなあと思いました。

終わりに

「最初の3年で覚えるべき技術」と題されているものをメモがてら書いてみました。
残り2年でどこまで覚えられるか謎ですが、せめて興味のある領域のものくらいは扱えるようになりたいですね。

ほなそんな感じでまた。

フォローする