今までソフトウェア開発について勉強してきたことのふりかえり

[twitter:@kyon_mm]さんの記事(僕がソフトウェア開発を勉強し始めて3年間でやったこと)を読んでいて、「今までのふりかえりかー。面白いかも」とか思ったので、ブログ書いてみた。
期間は就職(2008年4月)〜現在(2012年5月)の4年間。

1年目(2008年4月〜2009年3月)

SIerな会社に入社。
会社の研修でJavaを習った後、会社の技術書棚にあった「Java言語で学ぶデザインパターン入門」を借りた。
たぶん、講義・研修・仕事に関係なく自分で読んだ技術書はコレが初めてだと思う。


ここでデザパタを覚えてから、オブジェクト指向アジャイル開発に興味を持ち始めました。

読んでた書籍

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門

やさしいJava 第4版

やさしいJava 第4版

デザインパターンとともに学ぶオブジェクト指向のこころ (Software patterns series)

デザインパターンとともに学ぶオブジェクト指向のこころ (Software patterns series)

アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技

アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技

2年目(2009年4月〜2010年3月)

この時期はバージョン管理とチケット駆動開発を勉強し始めてました。
Trac Lightningを自宅のPCにインストールしたり、TortoiseSVNの使い方を勉強してました。
勉強の時に、[twitter:@kaorun55]さんのかおるんダイアリーや[twitter:@kanu_]さんのalmost nearly deadにすごく助けられました。


あと、セミナー・勉強会にもプライベートで参加し始めたのもこの頃です。
最初に参加したのが、「アジャイルジャパン 2009」で、次が「デザインパターン再入門勉強会 : ATND
そこから、shibuya.tracjava-ja、pyspa とかのコミュニティの勉強会にも参加したり。


ただ、勉強していくうちに、会社のExcel仕様書を編集するだけのお仕事に不満を感じ始め、2010年1月頃に転職の事も少し考えるようになりました。

読んでた書籍

アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~

アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~

オブジェクト脳のつくり方―Java・UML・EJBをマスターするための究極の基礎講座

オブジェクト脳のつくり方―Java・UML・EJBをマスターするための究極の基礎講座

Trac入門 ――ソフトウェア開発・プロジェクト管理活用ガイド

Trac入門 ――ソフトウェア開発・プロジェクト管理活用ガイド

Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)

Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)

バグがないプログラムのつくり方 JavaとEclipseで学ぶTDDテスト駆動開発 (Be agile!)

バグがないプログラムのつくり方 JavaとEclipseで学ぶTDDテスト駆動開発 (Be agile!)

継続的インテグレーション入門

継続的インテグレーション入門

レガシーコード改善ガイド (Object Oriented SELECTION)

レガシーコード改善ガイド (Object Oriented SELECTION)

3年目(2010年4月〜2010年7月) SIer時代の最後

仕事で新しい案件にテスター要員としてアサインされました。
この案件が色々と突っ込み所が多く

  • バージョン管理なし*1
  • バグ票手書き(紙管理)
  • テストは全て手動
  • 残業時間は調整するもの


すぐにでも転職しないと危ない」と思い、積極的に転職先を探すようになりました。

読んでた書籍

なれる!SE 2週間でわかる?SE入門 (電撃文庫)

なれる!SE 2週間でわかる?SE入門 (電撃文庫)

3年目(2010年7月〜2011年11月) C++ 組み込み系

転職先を探している頃に、[twitter:@kaorun55]さんからお誘い頂いて転職しました。
で、色々あってフリーランスになりました。


転職してから一番始めに嬉しかったのは、Trac + Subversion + Jenkins(Hudson) の環境が普通に構築されていた事。
あと、勉強会で話すような話題が職場で普通に話せる/話されるのも嬉しかった。


この時期ぐらいから勉強会に参加するだけじゃなくて、下手だけど発表してみたりするようになった。

読んでた書籍

IT業界を楽しく生き抜くための「つまみぐい勉強法」 (技評SE選書)

IT業界を楽しく生き抜くための「つまみぐい勉強法」 (技評SE選書)

入門Git

入門Git

3年目(2011年10月〜2012年1月) Python Web系(?)

この時期に[twitter:@tosikawa]さんとペアプロしたり、Gitを教わったりしていた。
というか、[twitter:@tosikawa]さんに教わった事を挙げるとキリがない。
パッと思いつく限り挙げてもTDD、アジャイル開発、PythonTrac・・・etc。


あと、この頃からUbuntuvim使ってコーディングするようになった。
これまではWindowsTerapadサクラエディタでした。

読んでた書籍

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

4年目(2011年2月〜2012年3月) Ruby ソーシャルアプリ系

Railsでソーシャルアプリを作ってました。
この1年の事を細かく書いてたら終わらなくなるので、箇条書きで簡単に列挙。


それと、[twitter:@LightningX]さん、[twitter:@tosikawa]さんに声掛けて頂き、一緒にSoftware DesignでGitの記事を書きました。
雑誌の記事を書くなんて初めてで、すごく勉強になりました。

読んでた書籍

RailsによるアジャイルWebアプリケーション開発 第4版

RailsによるアジャイルWebアプリケーション開発 第4版

NoSQLデータベースファーストガイド

NoSQLデータベースファーストガイド

クラウド セキュリティ&プライバシー ―リスクとコンプライアンスに対する企業の視点 (THEORY/IN/PRACTICE)

クラウド セキュリティ&プライバシー ―リスクとコンプライアンスに対する企業の視点 (THEORY/IN/PRACTICE)

アジャイルサムライ−達人開発者への道−

アジャイルサムライ−達人開発者への道−

入門Mercurial Linux/Windows対応

入門Mercurial Linux/Windows対応

まとめ

他の人の参考になるか分からないですが、私はこんな順序で勉強してました。
ふりかえってみて思ったけど、自分の記憶が曖昧だったり、勉強してきたことを思い出せたり・・・と結構面白かった。
毎年、ふりかえりしてみても面白いかも。


そして、ふりかえりを書き出してみると途中の「隣の人に教えてもらいました」がチートっぽいですね。
[twitter:@tosikawa]さんと仕事し始めてから、技術以外でも仕事での考え方とか、なんかもう色々凄くて、日々の仕事が大きなインプットになりました。というか、今もなってます。
[twitter:@kyon_mm]さんが[twitter:@bleis]さんを知って・・・と同じように、私の場合は[twitter:@tosikawa]さんと仕事してから大きく変わりました。
情熱プログラマにも「師匠を探す」とありますし、目標とする人がいるのは勉強する上で大事な事かも。


最後に、ブログ書き終わってから改めて思ったけど、[twitter:@kyon_mm]さんの書籍数や勉強量は凄い!

最後に

今までに読み始めたけど、最後まで読み終わっていない書籍達
少しずつ消化中ですが・・・

達人プログラマー―システム開発の職人から名匠への道

達人プログラマー―システム開発の職人から名匠への道

  • 作者: アンドリューハント,デビッドトーマス,Andrew Hunt,David Thomas,村上雅章
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/11
  • メディア: 単行本
  • 購入: 42人 クリック: 1,099回
  • この商品を含むブログ (347件) を見る
情熱プログラマー ソフトウェア開発者の幸せな生き方

情熱プログラマー ソフトウェア開発者の幸せな生き方

ノンデザイナーズ・デザインブック [フルカラー新装増補版]

ノンデザイナーズ・デザインブック [フルカラー新装増補版]

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン

アナリシスパターン―再利用可能なオブジェクトモデル (Object Technology Series)

アナリシスパターン―再利用可能なオブジェクトモデル (Object Technology Series)

  • 作者: マーチンファウラー,Martin Fowler,堀内一,友野晶夫,児玉公信,大脇文雄
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2002/04
  • メディア: 単行本
  • 購入: 7人 クリック: 89回
  • この商品を含むブログ (70件) を見る
テスト駆動開発入門

テスト駆動開発入門

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

  • 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/05
  • メディア: 単行本
  • 購入: 94人 クリック: 3,091回
  • この商品を含むブログ (312件) を見る
SOLID CODE 高品質なコードを生み出す実践的開発手法

SOLID CODE 高品質なコードを生み出す実践的開発手法

ビューティフルコード (THEORY/IN/PRACTICE)

ビューティフルコード (THEORY/IN/PRACTICE)

エキスパートPythonプログラミング

エキスパートPythonプログラミング

プログラマが知るべき97のこと

プログラマが知るべき97のこと

改訂新版 反復学習ソフト付き SQL書き方ドリル (WEB+DB PRESS plusシリーズ)

改訂新版 反復学習ソフト付き SQL書き方ドリル (WEB+DB PRESS plusシリーズ)

集合知プログラミング

集合知プログラミング

デコンパイリングJava ―逆解析技術とコードの難読化 (Art Of Reversing)

デコンパイリングJava ―逆解析技術とコードの難読化 (Art Of Reversing)

*1:「担当者が自由にprefix/suffixをつけて、任意でバックアップを残す = 管理されていない」と判断しました

*2:もう少し早かったかも