うさぎ組

ソフトウェア開発、チームによる製品開発、アジャイル、ソフトウェアテスト

僕がソフトウェア開発を勉強し始めて3年間でやったこと

昨日、@さんと飲みながら自分を思い返すと「ちゃんとソフトウェア開発を勉強しはじめてから3年間たった」つまり「@さんを知ってからこの5月でまる3年間たった」


それまでの僕はデザインパターンオブジェクト指向がなんたるかも、バージョン管理もなにも知らなかった。
毎日言われたことをこなす仕事をして、変えたいけど誰も教えてくれないし、学び方すら教えてくれなかった。
それなりに努力してたけど、よくはわかっていなかった。


そんな状態から抜け出したのが3年前。このブログの先頭でも書いた。当時僕は21歳かな。(ちなみに就職したのは19歳のとき)
→【このブログをはじめるきっかけ - うさぎ組



この3年間でやったことをふりかえってみようと思いました。
ちょっとわかりにくいだろうけど、2009年5月からの12ヶ月周期で書いてみます。
こうやって振り返るのはあくまで僕のためであって、何かを誇張する訳でもなんでもないです。僕がすごいってわけでもなく、ダメだというわけでもなく、ぼくのための振り返り。
でも、公開してみると誰かのためになるかなって思ったのでここに書く訳です。



1年目(2009/05 - 2010/04)

キッカケはEclipseが本当に使いにくくって他の開発環境をググってみたら当時前衛的だったNetBeansというIDEを知ります。
NetBeansについて詳しいのがid:nowokey (@) さんとid:shin (@) さんのブログでした。


この二人のブログのどこかをキッカケにid:bleis-tift (@) さんを知ります。
@さんのブログを読んでかなりの衝撃をうけ、僕のエンジニア人生が一変します。
そのなかでCleanCodeという書籍を推していて、ちょうどその邦訳版が出るということがわかったので、とりあえず読むことに。
そして、僕はまた著者のUncle Bobに感銘をうけます。


そこからとにかく書籍を読みました。なにせ、なにがいいJavaプログラミングなのかもわからない。デザインパターンも知らないっていうレベルです。
だいたいこの1年で大小含めて70冊近く読みました。IPAの資格書籍とかも読みました。最終的に挫折したのですが。。。あと、これは僕の選び方がわるかったのかもしれないですが、JSPとかJavaのWeb系の実装についていい書籍がなくって結局は使うフレームワークチュートリアルが一番いいっていうところに落ち着きました。むぅ。
このときも相変わらず僕は毎月60から100時間以上の残業をしていたけど、そんなのどうだってよくって、一日もはやく変わりたくって変わりたくって、bleisさんがカッコ良くってはやくお話できるレベルになりたかったです。

この1年で読んだときによかったのが次の書籍

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

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

Clean Code アジャイルソフトウェア達人の技

Clean Code アジャイルソフトウェア達人の技

実装パターン

実装パターン

プログラミング言語Java (The Java Series)

プログラミング言語Java (The Java Series)

  • 作者: ケン・アーノルド,ジェームズゴスリン,デビッドホームズ,柴田芳樹
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2007/04
  • メディア: 単行本
  • 購入: 38人 クリック: 1,044回
  • この商品を含むブログ (73件) を見る
アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技

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

Effective Java 第2版 (The Java Series)

Effective Java 第2版 (The Java Series)

テスト駆動開発入門

テスト駆動開発入門

  • 作者: ケントベック,Kent Beck,長瀬嘉秀,テクノロジックアート
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2003/09
  • メディア: 単行本
  • 購入: 45人 クリック: 1,058回
  • この商品を含むブログ (161件) を見る
リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

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

  • 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/05
  • メディア: 単行本
  • 購入: 94人 クリック: 3,091回
  • この商品を含むブログ (312件) を見る
レガシーコード改善ガイド (Object Oriented SELECTION)

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

プログラミング作法

プログラミング作法

ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション

ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション

正規表現クックブック

正規表現クックブック

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented Selection)

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented Selection)

プログラマのためのSQL 第2版

プログラマのためのSQL 第2版

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)

パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)

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

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

  • 作者: アンドリューハント,デビッドトーマス,Andrew Hunt,David Thomas,村上雅章
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/11
  • メディア: 単行本
  • 購入: 42人 クリック: 1,099回
  • この商品を含むブログ (348件) を見る
リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

プログラミングの基礎 (Computer Science Library)

プログラミングの基礎 (Computer Science Library)

創るJava NetBeansでつくって学ぶJava GUI & Webアプリケーション[改訂第3版]

創るJava NetBeansでつくって学ぶJava GUI & Webアプリケーション[改訂第3版]


あと読み続けるようになったブログさん
id:bleis-tift
id:nowokay
id:shin
id:t_yano
id:higayasuo

2年目(2010/05 - 2011/04)

2010年になって本格的にTwitterを始めるようになりました。
bleisさんのブログを見ているとブログパーツTwitterのツイートが流れているのをみて「一言でもいいからお礼をいいたい。少しでも会話の糸口がほしい。」って思って。


そしてTwitterをやっていると「アジャイルソフトウェア開発」「勉強会」というものを知ります。
勉強会とかアジャイルっていうものを検索するといろんな考え方やいろんなツールがあることをたくさん知りました。
バージョン管理ツールとか、Hudsonとか、TDDBCとか、Shibuya.tracとか、わんくまとか、スクラムとか。
この年はアジャイルとか、ツールとかの勉強をはじめました。
そして初めて「勉強会」というものに参加します。第1回のHudson勉強会でした。


そしてこの年のそう、2010/4に社内的な都合があって「もうこの会社でやっていける気がしない」って思いました。
幸い、やっとJavaのプログラミングは人並みにできるようになったのもあって、転職活動をはじめます。
でも、ネットの転職エージェントなんて全く信用できないシステムだと思っていたのもあり、Twitterで転職先を探すことにしました。


で、「GoogleDocsで職務経歴書を公開すればいいじゃん」って思いつき、ペラっと書いてTwitterでURLを公開してみたところ、たくさんの方に見て頂けました。
職務経歴書なんて書いたことなかったので不安だったんですけど、仲のよかったフォロワーさんに指摘をいれてもらってその場でどんどん修正をいれていきました。
これは結構ひろまったのですが、最も影響力があったのは@ さんにRTしてもらったことでした。このときはほとんど会話したこともなかったのですが、非常に助かりました。ありがとうございました。
あとは、Twitterでツイートするときに毎回フッターとして[転職活動中]といれるようにして、プロフィールも若干かえていたような気がします。


このとき一番最初に、ずっとずっと憧れていたbleisさんから「うちにこないかい?」って誘ってもらいました。涙が出てしまうほどに嬉しかったです。今でも思い出すとちょっと涙ぐみます。
それくらい嬉しくって、今も本当に幸せです。
他にもたくさんの方からお誘いを受けて、最終的に転職先を決定する2011/04までに声をかけていただいただけでも20社さんほどからお誘いをもらいました。
本当にみなさんによくしていただいて嬉しかったです。


このとき本当にすごく辛いプロジェクトに回されていた時期(残業が200時間超えたり。。。)があって、すっごく精神的にキツかったんですけど、Twitterでみなさんが支えてくれて本当に助かりました。
苦しくって、理解されてもらえず、なにをやっても無駄に終わり、でも絶対に今の努力をやめてやるもんかっておもって。


話がちょっと戻るのですが、この1年はアジャイルとかツールとかを勉強していたのもあって、実際にやってみたくなりました。偶然にこの1年の終盤にちょうどよさそうなプロジェクトにあたります。
そして実際にScrumをやってみました。@さんと同じ会社で働いている@さんにRedmineやBacklogsのことをベースに非常に助けてもらいました。ありがとうございました。
その詳細についてはこちらで書きました。
→【DVCSもBTSも知らない人達とScrumをやってみた。 - うさぎ組


そしてこの頃からGroovy、Jenkins、Mercurial、Gradle、Redmineを使い始めます。IDEIntelliJ IDEAを使っていました。
GroovyエコシステムとJenkinsとRedmineMercurialの連携をはじめたのもこの時期です。


このときに読んでいて勉強になった書籍はこちらです。

パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法

パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法

入門Mercurial Linux/Windows対応

入門Mercurial Linux/Windows対応

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

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

Redmineによるタスクマネジメント実践技法

Redmineによるタスクマネジメント実践技法

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

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

アート・オブ・アジャイル デベロップメント ―組織を成功に導くエクストリームプログラミング (THEORY/IN/PRACTICE)

アート・オブ・アジャイル デベロップメント ―組織を成功に導くエクストリームプログラミング (THEORY/IN/PRACTICE)

パタン・ランゲージ―環境設計の手引

パタン・ランゲージ―環境設計の手引

アジャイルソフトウェア開発スクラム (アジャイルソフトウェア開発シリーズ)

アジャイルソフトウェア開発スクラム (アジャイルソフトウェア開発シリーズ)

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

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

プロダクティブ・プログラマ -プログラマのための生産性向上術 (THEORY/IN/PRACTICE)

プロダクティブ・プログラマ -プログラマのための生産性向上術 (THEORY/IN/PRACTICE)

Groovyイン・アクション

Groovyイン・アクション

ソフトウェア・テストの技法 第2版

ソフトウェア・テストの技法 第2版

  • 作者: J.マイヤーズ,M.トーマス,T.バジェット,C.サンドラー,Glenford J. Myers,Todd M. Thomas,Tom Badgett,Corey Sandler,長尾真,松尾正信
  • 出版社/メーカー: 近代科学社
  • 発売日: 2006/08
  • メディア: 単行本
  • 購入: 7人 クリック: 267回
  • この商品を含むブログ (46件) を見る
Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

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

Java: The Good Parts

Java: The Good Parts

アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣

アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣

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

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

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

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


この頃から読むようになったブログ
id:cactusman
id:Nagise
柴田 芳樹 (Yoshiki Shibata):So-netブログ
id:kaorun55
id:ksky
id:kiy0taka
An Agile Way:ITmedia オルタナティブ・ブログ
プログラマの思索
ソフトウェア開発の最新ニュース、ビデオ、ブック
id:fumokmm
id:masanobuimai
id:uehaj

3年目(2011/05 - 2012/04):直近1年

この頃になって本格的にソフトウェアテストや開発環境の連携や自動化について勉強しだします。
いろんなことについて深く考えられるようになったのはこの年になってからの気がします。


Ustreamで音声のみのソフトウェア開発話をするようになったり、勉強会を主催するようになりました。
思えば初めて勉強会を主催してからまだ1年たっていないし、僕がソフトウェアテストについて大きく発信するようになってからたぶんまだ9ヶ月くらいしかたっていないです。


JGGUGさんが主催するG*Workshop で初LT、初セッションをさせてもらいました。これがひとつのはずみになりました。
TDDBootCamp、Shibuya.trac、WACATE、DevLove、わんくま、Jenkins勉強会、ProofCafe、NGK、PMI中部、たくさんの勉強会さんに参加させてもらいました。
みなさんに助けてもらいながら、SCMBootCamp、Nagoya.Testing、StartupGroovyなどの勉強会をひらくようにもなりました。


こう考えると、僕がそとになにかを大きく発信するようになれるスキルがついたのはここ1年弱のことなんですね。


そしてこの2011/09から名古屋で@、@、@、@、@さんたちと同じ会社で働くことになりました。
エキサイティングな毎日ですw
最近はF# を少しずつ書いています。
この会社さんでうれしいのは僕をテストエンジニアとして扱ってくれていることです。僕自身勉強しはじめたばかりですが、がんばります。


このときに読んでいて勉強になった書籍はこちらです。

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

マインドマップから始めるソフトウェアテスト

マインドマップから始めるソフトウェアテスト

ソフトウェア・テスト PRESS 総集編

ソフトウェア・テスト PRESS 総集編

はじめて学ぶソフトウェアのテスト技法

はじめて学ぶソフトウェアのテスト技法

ソフトウェアテスト293の鉄則

ソフトウェアテスト293の鉄則

ソフトウェアテスト技法ドリル―テスト設計の考え方と実際

ソフトウェアテスト技法ドリル―テスト設計の考え方と実際

ビューティフルテスティング ―ソフトウェアテストの美しい実践 (THEORY/IN/PRACTICE)

ビューティフルテスティング ―ソフトウェアテストの美しい実践 (THEORY/IN/PRACTICE)

継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化

継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化

実践アジャイルテスト テスターとアジャイルチームのための実践ガイド (IT Architects’Archive ソフトウェア開発の実践)

実践アジャイルテスト テスターとアジャイルチームのための実践ガイド (IT Architects’Archive ソフトウェア開発の実践)

Release It! 本番用ソフトウェア製品の設計とデプロイのために

Release It! 本番用ソフトウェア製品の設計とデプロイのために

プログラミングGROOVY

プログラミングGROOVY

デザインのためのデザイン

デザインのためのデザイン

Growing Object-Oriented Software, Guided by Tests (Addison-Wesley Signature Series (Beck))

Growing Object-Oriented Software, Guided by Tests (Addison-Wesley Signature Series (Beck))

xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series (Fowler))

xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series (Fowler))

Jenkins

Jenkins

システムアーキテクチャ構築の原理 ITアーキテクトが持つべき3つの思考 (IT Architects’Archive ソフトウェア開発の実践)

システムアーキテクチャ構築の原理 ITアーキテクトが持つべき3つの思考 (IT Architects’Archive ソフトウェア開発の実践)

システムアーキテクチャ構築の実践手法 (IT Architects’ Archive)

システムアーキテクチャ構築の実践手法 (IT Architects’ Archive)

ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE)

ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE)

データベース・リファクタリング

データベース・リファクタリング

  • 作者: スコット W アンブラー,ピラモド・サダラージ,梅澤真史,越智典子,小黒直樹
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2008/03/26
  • メディア: 単行本
  • 購入: 10人 クリック: 211回
  • この商品を含むブログ (53件) を見る
楽々ERDレッスン (CodeZine BOOKS)

楽々ERDレッスン (CodeZine BOOKS)

実践 F# 関数型プログラミング入門

実践 F# 関数型プログラミング入門

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

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

インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践

インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践

いかにして問題をとくか

いかにして問題をとくか

Clean Coder プロフェッショナルプログラマへの道

Clean Coder プロフェッショナルプログラマへの道

リファクタリング:Rubyエディション

リファクタリング:Rubyエディション

[改訂第2版] [入門+実践]要求を仕様化する技術・表現する技術 -仕様が書けていますか?

[改訂第2版] [入門+実践]要求を仕様化する技術・表現する技術 -仕様が書けていますか?

ソフトウェア開発の定量化手法 第3版 ?生産性と品質の向上をめざして?

ソフトウェア開発の定量化手法 第3版 ?生産性と品質の向上をめざして?


この頃から読むようになったブログ
id:nekop
id:yuroyoro
id:taichitaichi
id:ryoasai
株式会社シャノン技術ブログ
http://dsas.blog.klab.org
id:goyoki
id:mkoszk
森崎修司の「どうやってはかるの?」:ITmedia オルタナティブ・ブログ
Think IT(シンクイット) | オープンソース技術の実践活用メディア
Agile UX
id:m-hiyama
id:kura-replace
http://ryuzee.com





振り返ってみて

あげている書籍とかブログが最後の1年が多いのは二つの可能性があります。
「いい情報を選別できるようになった」
「熱中しているだけで実はそんなにいいものではない」
なので、最後の一年は本当にいいかどうかはわからないけれど、今の僕は好きって感じくらいですね。


読んだ書籍だけでいえば、ここにあげた書籍の3倍以上は読んでいるけど、書籍とかブログとかをあげることはある程度は誰にでもできるわけです。それにもっと読んでいる人だってたくさんいますし、もっと難しい書籍とか論文を読んでいる人だってたくさんいます。
僕はこの3年間でどれくらい成長したのだろう。
すごく不安で、ちょっと誇らしく、現状は幸せだって感じます。


僕ももうすぐで25歳になります。
脳の能力的には今の学習ペースを保てるのはあと数年だと思います。
僕はこの数年をどう過ごせばいいのだろう。


ここに書いていないこともたくさん振り返ってみて、いまの学習ペースではまずいと思うし、考え方とか、性格的な姿勢とかもいろいろ不味いところがあるなって思いました。
前に86世代周辺のTwitterアカウントまとめをつくったけど、同世代だけでも本当にすごい方がたくさんいらっしゃって。
うーん。。。キリがないのはわかっているけど、今の幸せに満足したくない。なにより、僕だけが幸せなんじゃなくって、彼らにほんの少し、何か一つでも知見を与える存在でありたい。



ってわけで、僕の3年間。これからの3年間を楽しみにまたがんばろうと思います。
最後になりましたけど、ここまで読んでくださってありがとうございます。
そして、僕に関わってくれて、僕を支えてくれて本当にありがとうございます。なにかみなさんに少しでも良い影響を与えられるようになりたいと思います。これからもよろしくおねがいします。