うさぎ組 Twitter

2012-05-21

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

| 12:16 | 僕がソフトウェア開発を勉強し始めて3年間でやったことを含むブックマーク 僕がソフトウェア開発を勉強し始めて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 アジャイルソフトウェア達人の技

実装パターン

実装パターン

Effective Java 第2版 (The Java Series)

Effective Java 第2版 (The Java Series)

プログラミング作法

プログラミング作法

正規表現クックブック

正規表現クックブック

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

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

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

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

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

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

プログラミングの基礎 (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で職務経歴書を公開すればいいじゃん」って思いつき、ペラっと書いてTwitterURLを公開してみたところ、たくさんの方に見て頂けました。

職務経歴書なんて書いたことなかったので不安だったんですけど、仲のよかったフォロワーさんに指摘をいれてもらってその場でどんどん修正をいれていきました。

これは結構ひろまったのですが、最も影響力があったのは@ さんにRTしてもらったことでした。このときはほとんど会話したこともなかったのですが、非常に助かりました。ありがとうございました。

あとは、Twitterツイートするときに毎回フッターとして[転職活動中]といれるようにして、プロフィールも若干かえていたような気がします。


このとき一番最初に、ずっとずっと憧れていたbleisさんから「うちにこないかい?」って誘ってもらいました。涙が出てしまうほどに嬉しかったです。今でも思い出すとちょっと涙ぐみます。

それくらい嬉しくって、今も本当に幸せです。

他にもたくさんの方からお誘いを受けて、最終的に転職先を決定する2011/04までに声をかけていただいただけでも20社さんほどからお誘いをもらいました。

本当にみなさんによくしていただいて嬉しかったです。


このとき本当にすごく辛いプロジェクトに回されていた時期(残業が200時間超えたり。。。)があって、すっごく精神的にキツかったんですけど、Twitterでみなさんが支えてくれて本当に助かりました。

苦しくって、理解されてもらえず、なにをやっても無駄に終わり、でも絶対に今の努力をやめてやるもんかっておもって。


話がちょっと戻るのですが、この1年はアジャイルとかツールとかを勉強していたのもあって、実際にやってみたくなりました。偶然にこの1年の終盤にちょうどよさそうなプロジェクトにあたります。

そして実際にScrumをやってみました。@さんと同じ会社で働いている@さんにRedmineやBacklogsのことをベースに非常に助けてもらいました。ありがとうございました。

その詳細についてはこちらで書きました。

→【DVCSもBTSも知らない人達とScrumをやってみた。 - うさぎ組


そしてこの頃からGroovyJenkinsMercurial、Gradle、Redmineを使い始めます。IDEIntelliJ IDEAを使っていました。

GroovyエコシステムとJenkinsRedmineMercurialの連携をはじめたのもこの時期です。


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

入門Mercurial Linux/Windows対応

入門Mercurial Linux/Windows対応

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

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

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

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

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

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

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 オルタナティブ・ブログ

プログラマの思索

InfoQ Japan: 最新技術を追い求めるデベロッパのための情報コミュニティ

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# を少しずつ書いています。

この会社さんでうれしいのは僕をテストエンジニアとして扱ってくれていることです。僕自身勉強しはじめたばかりですが、がんばります。


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

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

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

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

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

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

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

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

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

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

楽々ERDレッスン (CodeZine BOOKS)

楽々ERDレッスン (CodeZine BOOKS)

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

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

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

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

いかにして問題をとくか

いかにして問題をとくか

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

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

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

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


この頃から読むようになったブログ

id:nekop

id:yuroyoro

id:taichitaichi

id:ryoasai

株式会社シャノン技術ブログ

DSAS開発者の部屋

id:goyoki

id:mkoszk

森崎修司の「どうやってはかるの?」:ITmedia オルタナティブ・ブログ

Think IT | ソフトウェア開発の第一線に携わるエンジニアの方々ために、最新の技術情報と現場で使えるノウハウ記事を毎日公開しています!

Agile UX

id:m-hiyama

id:kura-replace

Ryuzee.com






振り返ってみて

あげている書籍とかブログが最後の1年が多いのは二つの可能性があります。

「いい情報を選別できるようになった」

「熱中しているだけで実はそんなにいいものではない」

なので、最後の一年は本当にいいかどうかはわからないけれど、今の僕は好きって感じくらいですね。


読んだ書籍だけでいえば、ここにあげた書籍の5倍以上は読んでいるけど、書籍とかブログとかをあげることはある程度は誰にでもできるわけです。それにもっと読んでいる人だってたくさんいますし、もっと難しい書籍とか論文を読んでいる人だってたくさんいます。

僕はこの3年間でどれくらい成長したのだろう。

すごく不安で、ちょっと誇らしく、現状は幸せだって感じます。


僕ももうすぐで25歳になります。

脳の能力的には今の学習ペースを保てるのはあと数年だと思います。

僕はこの数年をどう過ごせばいいのだろう。


ここに書いていないこともたくさん振り返ってみて、いまの学習ペースではまずいと思うし、考え方とか、性格的な姿勢とかもいろいろ不味いところがあるなって思いました。

前に86世代周辺のTwitterアカウントまとめをつくったけど、同世代だけでも本当にすごい方がたくさんいらっしゃって。

うーん。。。キリがないのはわかっているけど、今の幸せに満足したくない。なにより、僕だけが幸せなんじゃなくって、彼らにほんの少し、何か一つでも知見を与える存在でありたい。



ってわけで、僕の3年間。これからの3年間を楽しみにまたがんばろうと思います。

最後になりましたけど、ここまで読んでくださってありがとうございます。

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

uenoueno 2012/05/21 20:46 > 脳の能力的には今の学習ペースを保てるのはあと数年だと思います。

そうでもないと思います。人それぞれですが。
私は30歳ですが、28歳を越えた辺りからの方が伸びました。(計算力は落ちたけど記憶力はどういうわけか伸びました)
最新の研究では20歳を越えても脳が縮小しない研究結果が出てるそうです。

記憶にも方法論があるので、私の場合はマインドマップを使ったり、天才もやるような感情と知識を結びつけること、忘却曲線を念頭にした間隔を設けての学習をしています。

これからも頑張ってください。

augeauge 2012/05/21 23:14 私もNetBeansのほうが好きです。
でもIDEとしてはもう重すぎで、。
Eclipseの他人のプラグインなんて業務につかえません。
(保証できませんから)
言語20ほど使えますが、来る仕事来る仕事全く別の言語で
困りますが、ほぼCライクにコンバートできました。
結局一生勉強なんです。止めた時点で引退です。
アジャイルリーン開発は技術がつきますが、
そのぶん苦労ばかり。ウォーターフォール開発なんて
私の抱えたプロジェクトでは、5%もなかったです。

このくらい本を読む部下がほしいですね。

おとなり日記