Hatena::ブログ(Diary)

アジャイルSEを目指すブログ

2012-05-23

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

@さんの記事(僕がソフトウェア開発を勉強し始めて3年間でやったこと)を読んでいて、「今までのふりかえりかー。面白いかも」とか思ったので、ブログ書いてみた。

期間は就職(2008年4月)〜現在(2012年5月)の4年間。

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

SIerな会社に入社

会社の研修でJavaを習った後、会社の技術書棚にあった「Java言語で学ぶデザインパターン入門」を借りた。

たぶん、講義・研修・仕事に関係なく自分で読んだ技術書はコレが初めてだと思う。


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

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

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

やさしいJava 第4版

やさしいJava 第4版

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

この時期はバージョン管理とチケット駆動開発を勉強し始めてました。

Trac Lightningを自宅のPCにインストールしたり、TortoiseSVNの使い方を勉強してました。

勉強の時に、@さんのかおるんダイアリーや@さんのalmost nearly deadにすごく助けられました。


あと、セミナー勉強会にもプライベートで参加し始めたのもこの頃です。

最初に参加したのが、「アジャイルジャパン 2009」で、次が「デザインパターン再入門勉強会 : ATND

そこから、shibuya.tracjava-ja、pyspa とかのコミュニティ勉強会にも参加したり。


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

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

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

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

仕事で新しい案件にテスター要員としてアサインされました。

この案件が色々と突っ込み所が多く

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

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

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

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

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

転職先を探している頃に、@さんからお誘い頂いて転職しました。

で、色々あってフリーランスになりました。


転職してから一番始めに嬉しかったのは、Trac + Subversion + Jenkins(Hudson) の環境が普通に構築されていた事。

あと、勉強会で話すような話題が職場で普通に話せる/話されるのも嬉しかった。


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

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

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

入門Git

入門Git


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

この時期に@さんとペアプロしたり、Gitを教わったりしていた。

というか、@さんに教わった事を挙げるとキリがない。

パッと思いつく限り挙げても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年の事を細かく書いてたら終わらなくなるので、箇条書きで簡単に列挙。

  • RailsによるアジャイルWebアプリケーション開発」をプロジェクトメンバ全員で、1日1章くらいのペースで写経*2
  • rspecを勉強
  • A successful Git branching modelの運用を仕事で使用
  • memcached, redis, mongoDB を勉強
  • プロジェクト開始〜リリースまでを初めて体験した
  • skype, redmineなどを使った自宅作業

それと、@さん、@さんに声掛けて頂き、一緒にSoftware DesignGitの記事を書きました。

雑誌の記事を書くなんて初めてで、すごく勉強になりました。

読んでた書籍
RailsによるアジャイルWebアプリケーション開発 第4版

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

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

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

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

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

入門Mercurial Linux/Windows対応

入門Mercurial Linux/Windows対応

まとめ

他の人の参考になるか分からないですが、私はこんな順序で勉強してました。

ふりかえってみて思ったけど、自分の記憶が曖昧だったり、勉強してきたことを思い出せたり・・・と結構面白かった。

毎年、ふりかえりしてみても面白いかも。


そして、ふりかえりを書き出してみると途中の「隣の人に教えてもらいました」がチートっぽいですね。

@さんと仕事し始めてから、技術以外でも仕事での考え方とか、なんかもう色々凄くて、日々の仕事が大きなインプットになりました。というか、今もなってます。

@さんが@さんを知って・・・と同じように、私の場合は@さんと仕事してから大きく変わりました。

情熱プログラマにも「師匠を探す」とありますし、目標とする人がいるのは勉強する上で大事な事かも。


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

最後に

今までに読み始めたけど、最後まで読み終わっていない書籍達

少しずつ消化中ですが・・・

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

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

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

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

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

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

集合知プログラミング

集合知プログラミング

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

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

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

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

kota_sekikota_seki 2012/05/25 09:00 始めまして!
私は4月Javaプログラマーになったばっかなので
これからどんなプログラマーになるか考える上で、非常に参考になりました。
デザインパターンの本購入したので勉強したいと思います。

sinsokusinsoku 2012/05/31 02:28 > kota_seki さん
私も最初にデザパタを勉強しました!
結城さんの「Java言語で学ぶデザインパターン入門」が分かりやすいので、まずはコレからスタートするのが良いと思います:-)
ちなみに、良書の多くは図書館や会社で借りたりも出来るので、借りるのも手ですw
(技術書って結構高いので

GypsymanGypsyman 2013/08/30 18:30 2010年初めにJavaでフリーソフトを作りたいと考え今日まで取り組んできました。
GUIだけはどうにか出来たんですが、それ以降手が止まってしまっています・・・。
設計図?のようなものを書き記してからコードを書いたほうが良いのでしょうか?
また「これが良いのでは?」という書籍があれば教えてください。

sinsokusinsoku 2013/09/01 02:37 > Gypsyman さん
何を作ろうとされているか分からないのでなんとも言えないですが、
作りたい物が明確になっていなければ、先に設計をした方が良いかもしれないです。

ちなみに、私が物を作る場合、
1. 欲しいソフトの目的を明確にする(例: ECサイトで商品を売る)
2. 機能を書き出してみる(例: ログイン機能、商品の登録、商品の一覧表示、検索...etc)
3. 最低限の組み合わせ・優先度を考える(例: 「ログイン+商品登録+一覧表示」で、検索は無くても動くし不要)
4. ノートなどに簡単なクラス図を書く
5. 実装
みたいな感じが多いです。

手が進まないのであれば、機能一覧を書き出したり、簡単なクラス図を書いてみてはどうでしょう?
あと、良さそうな書籍ですと「アジャイルな見積りと計画づくり」でしょうか。
フリーソフトだとしても、イテレーション毎に機能を実装していく開発の方が良いかと思います。

GypsymanGypsyman 2013/09/01 13:56 回答ありがとうございます。
GUIしか出来ていませんがもし、よろしければ製作途中のフリーソフトをみていただけないでしょうか?

sinsokusinsoku 2013/09/01 19:13 > Gypsyman さん
すみません、「Javaのフリーソフト」に特に興味がないので・・・。
もし人に見てもらいたいのであれば、githubとかに公開してみたら良いかと思います。

GypsymanGypsyman 2013/09/16 23:37 遅くなりましたが回答ありがとうございます。
Githubについて調べていましたが、どうにも合点がいきません・・・。
勝手な想像ですが仮にコード全部をGithubに公開したら他人にコードをコピーされて言葉が汚いですがパクられるということもありえるのでしょうか?
お知らせ下さい。

sinsokusinsoku 2013/09/29 17:39 > Gypsyman さん
そうですね、Githubの公開リポジトリだと他人にパクられる危険性はあるかもしれません。
コードをパクられる危険性がない方法を求めるのであれば、お金を払い、レビューをしてくれる会社(もしくは人)を探すか、
興味をもってくれる人を探すしかないのではないかと思います。

ss 2014/12/02 14:17 test

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close