ラベル Book の投稿を表示しています。 すべての投稿を表示
ラベル Book の投稿を表示しています。 すべての投稿を表示

2011年8月10日水曜日

『アジャイルサムライ』読書記録 - 7章 - 見積もり:当てずっぽうの奥義

単なる読書メモなので、あまり読んでもおもろくないと思う。

まあ、SIerはそれをずっと維持し続けようとするから、あとで火を噴く訳だな。
開発なんてやってみなければどれくらいのスピードでできるかわからない。

  • 今後の計画をたてられる
  • 見積もりは当てずっぽうだという前提を踏まえている
  • ソフトウェア開発の複雑さを認めている


このプロジェクトをやり遂げられそうなのか?!は非常に重要なところだと思う。

できないものをできるとかいうと後々痛い目を見そうだし。

7.2 ピンチをチャンスに


  • ストーリーそれぞれを互いに相対的なサイズで見積もる
  • ポイントをもとにして進捗を追跡する



相対的な見積もりについて

ポイントについて

見積もりは確実なものでないとわかっているので、日数でなく、これくらいみたいな感じで見積もっておいたほうがよいってことかな。

SIer「このプログラム何日かかる?」
プログラマー「わかりませんが、この前の仕事の5割増ですね。」
SIer「つまり3日だね?」
プログラマー「どうですかね?この前の仕事は確かに2営業日でできていますけどね。まあ、たぶんこの前の仕事より5割増くらいだということですね。」
SIer「つまり3日だね?」
プログラマー「いや、分かりません。」
SIer「この前のは2日でできたのだから、それの5割増だから、3日だろう。」
プログラマー「どうですかね?この前の仕事は確かに2営業日でできていますけどね。まあ、たぶんこの前の仕事より5割増くらいだということですね。」
SIer「つまり3日だね?」
…以下続く

見積り技法


三角測量

ストーリーの一覧から1回のイテレーションの期間に収まりそうなサイズのストーリーを大中小選び出す。
選び出す際の視点。
  • 論理的なグループ分けができる
  • エンド・トゥ・エンドになっている
  • プロジェクトを象徴するストーリー

スパイク

今まで経験したことのないようなストーリーに対する見積もり方法。
タイムボックス化して数日以内でストーリーを見積もれる程度に様々な調査を行う。

プランニングポーカー

開発メンバーが一つ一つのストーリーを自分自身で見積もる。
その結果をメンバー同士で共有する。
一致していたら、その見積もりにする。
異なっていたら相違について話し合って見積りを出す。

重要なポイントは話し合いがあること。
プランニングポーカーは投票システムではないこと。
ストーリーのサイズは小さくする。(1、3、エピックを表すのに5を使う。)



2011年7月25日月曜日

現場で使えるJavaライブラリーのサンプルを丸写ししてみた。

最近次のような本が発売されました。

現場で使えるJavaライブラリ
竹添 直樹 (著), 島本 多可子 (著), 小津 美夕紀 (著), 亀井 隆司 (著)
翔泳社 (2011/7/16)







で、早速そこに載っているライブラリーを試してみました。

charts4j

各種のチャートをWeb上で処理してくれるライブラリーです。

@Grab(group='com.googlecode.charts4j', module='charts4j', version='1.3')
import com.googlecode.charts4j.*;

def plot1 = Plots.newBarChartPlot(Data.newData(20, 100, 10, 30), Color.BLUE)
def plot2 = Plots.newBarChartPlot(Data.newData(50,  80, 30, 70), Color.RED)

def chart = GCharts.newBarChart(plot1, plot2)

chart.setTitle('Sample')
chart.setSize(400, 300)
chart.setBarWidth(40)
chart.setGrid(10, 10, 2, 2)
chart.addXAxisLabels(AxisLabelsFactory.newAxisLabels('A', 'B', 'C', 'D'))
chart.addYAxisLabels(AxisLabelsFactory.newAxisLabels('0', '50', '100'))

def url = chart.toURLString()


実行した結果のURL

http://chart.apis.google.com/chart?cht=bvg&chxt=y,x&chs=400x300&chtt=Sample&chbh=40,4,8&chg=10.0,10.0,2,2&chco=0000FF,FF0000&chd=e:Mz..GaTN,gAzMTNsz&chxl=0:|0|50|100|1:|A|B|C|D


実行結果の画像

なかなかやりおる。
コードがGroovyっぽくないので、すこしリファクタリングしないとダメですね。

2011年6月13日月曜日

97 things Every Project Manager Should Know を読んでみた(3)

A Word Can Make You Miss Your Deadline

たかが言葉、されど言葉


第三回目です。
いつもどおり、ゆる~く翻訳、意訳します。逐語訳ではないです。

プロジェクトのマネージメントについて。
これを読むと日本のプロジェクトマネージメントと
考え方が若干違うなと思いました。

だからアメリカ発祥のPMPだやらの考えを
日本に適用しても無理だと思う気がしました。

では、以下本文

WHICH WORD CAN MAKE YOU MISS YOUR DEADLINE? The answer is "any word." When you are developing a product that will be released in languages other than English, you are adding numerous new risks and constraints to your project.



Some are technical and obvious. For example, if your product will be released in Japanese, it has to support the appropriate fonts. If it doesn't, the Japanese version won't work, even if the English one works perfectly. But font compatibility is not under your control. You and your team need to be aware of translation quirks and consider them before coding. Make sure that the development practices follow international standards that will eliminate such issues.



However, the mere need for alternate language versions also constrains what decisions you can make and when. Typically, localization (Japanese, Swedish, German, etc.) happens in parallel with English development, with a certain lag. It can be a few days, weeks, or even months. However, at some point the translation of the foreign version has to "catch up" with the English version.



You need to make sure during testing and reviews that:
- What is in the English version can be properly translated
- What is translated truly corresponds to the English version
- The translated product works flawlessly
Here's the catch. These three things may be tested after the English version is finished and signed off on. During the testing and reviewing of a localized version, you will always find at least one challenging issue that can't be solved except through a change to the English product.



2011年6月5日日曜日

97 things Every Project Manager Should Know を読んでみた(2)

Avoid Whack-a-Mole Development

モグラたたき開発から逃げろ


開発する早さの評価に関するエッセイ。
日本のSIerではバーニーさんの方が評価される傾向にありますね。
ものづくり日本という標語が盛んに叫ばれたりしています。
でも、なんか年末になるといらない工事とかがあったりして、
作りっぱなし日本という標語が適切な気がしなくもないです。
だからこそ、読んでほしい一節です。

ちなみに、前回と同じく、翻訳の詳しいところはいい加減です。
翻訳はノリが大事です。
多分怪しいところは満載なので、ツッコミ歓迎です。
それと、オレには突っ込まないけど、オレだけ知ってウッシッシな人はGoogle 翻訳にでもかけてください。

SOFTWARE PROJECT MANAGERS faces a lot of pressure to deliver fast. Time is of the essence. How can you get things done fast?



Imagine you have two programmers on your team, Bernie and Rob. Both are capable, have the same amount of domain knowledge, and have equal language skills. During development, you find that Bernie finishes his feature implementations much faster than Rob.



While Bernie focuses on getting the code completed quickly, Rob spends time writing code and then refactoring it. He names the variables and methods better. Once he gets things working, he breaks the code into smaller pieces. Now he writes tests to make sure each piece of his code does what he meant it to do. When he's reasonably satisfied, he declares the coding of that functionality done.




But assume you don't know these details. If you only look at the speed with which the functionalities are declared done, clearly Bernie is the better man, right?



A few weeks go by, and you demonstrate the features to your customer. As usual, the customer loves your completed features, but now wants you to change and improve them. You ask your developers to make those code alterations. When you take the new and improved functionality back to your customer, they try out the features that Rob implemented and are pleased with the changes.



Unfortunately, they discover something odd with the features that Bernie implemented. While Bernie has programmed in the new functions fine, now a few things that worked before don't work anymore. The customer marks these as defects, and you ask Bernie to fix them. The customer tests the features again. Now even newer, stranger things seem to be broken. What's going on here?



If you have a child, you know what is happening. Bernie has created a Whack-A-Mole application. Whack-A-Mole is a toy. Kids are given a wooden hammer to strike moles that pop up at random. It's fun for them to be surprised by which mole pops up next. However, fixing applications with broken code popping up at random places is not fun. It is frustrating, unpredictable, and it slows your product development. Bernie was sprinting initially, but he was running in the wrong direction.



While Rob appeared slower at the outset, he was actually creating superior code. His pace proved sustainable. The better quality of his initial code helped him make workable changes quickly. Plus, the test he wrote in the beginning gave him instant feedback regarding whether or not his new code was compatible with other parts of the application where the code was used.



When measuring time for a feature implementation, do not consider only the time it takes to write it in the first place. Add the time it takes to enhance, fix, and improve the code. Writing good quality code and tests takes time. It appears to be a short-term loss. However, it comes with a long-term gain.

Ask yourself if you want speed, or if you want to savor sustainable progress.



ま、このブログを読む人なんて、えらいプロジェクトマネージャーなんかいないだろうけどね。
それと、お客さんに同じ機能のテストをさせるなんて、どう考えたってムダでしかない。
ソフトウェアを作りっぱなしで、お客さんになんども同じことをさせるのはどうかと思う。

2011年6月2日木曜日

97 things Every Project Manager Should Know を読んでみた(1)

表題のとおり、読んで、勝手に訳してみた。

今回はその最初のエッセイ『Get Users Involved As Early As Possible』。

ちなみに、オレの翻訳はかなり適当感満載なので、
各自Google先生に正しい訳を求めること。

オレが提供するのは英文が醸し出している雰囲気のみ。



PAST PATTERNS OF SOFTWARE DEVELOPMENT involved getting user requirements and then going off to do the coding and testing under a veil of great secrecy. After all, the users wouldn't understand what we were doing anyway, right? At the end of the project, our magician's magic cloth was whisked away and the user was expected to "ooh" and "ahh" at the brilliance of what we had produced. However, all too frequently the reaction was, "Well, I know you went to a lot of work, but what I really wanted was...".



Today, the secret to project success is to involve the users almost as soon as there is anything visible to show them. How much better it is to find out that there are problems with what we are developing early on, rather than after the project is complete!



Costs for changes become increasingly high the further along we are on the project schedule timeline. The time to recode, retest, and rework the immediate software, as well as to test integration with all the peripheral code involved, can delay the project substantially. And both time and cost baselines are jeopardized if a change is so major that it has to go through a lengthy Change Control Board process for approval.



Programming decisions over very minor issues, which make perfect sense to the software developer and the project manager, may create chaos back at the workstation when the software goes into use.



以下、2011/06/04に追記

I know of a large training company that spent $5 million redesigning its ordering software. Previously, the item numbers matched the product being ordered in a logical way. For example, 4125 might be a student manual, 4225 was the accompanying student exercise disk, 4325 could represent the instructor manual, 4425 was the course outline for marketing purposes, and so on. You could order all the items in the 4X25 series on the same screen



Each day, administrative coordinators in 140 locations around the world ordered the same kinds of materials over and over and soon memorized the item numbers. Once you knew the number for a student manual, you could immediately key in the numbers for the other items without looking them up, and ordering went quickly.



In the redesign, somehow the project team forgot to consider the way the ordering process was used by the real people doing it. Under the new design, there was no logical relationship between items. Item 6358 might be the same student manual that once was 4125, the accompanying student exercise disk was now 8872, and the instructor manual for the same class was 3392.




Not only did the user have to look up each item and try to "forget" the old numbers and system, but also each type of item was now on a separate page.

Administrative coordinators were furious. Ordering slowed to a crawl. The project far exceeded its time and cost baselines.

As a project manager, you should get the users talking to the software developers early and often.