エンタープライズIT系エンジニアのぼやっきー

特にまとまりもなく、色々なことをぼやきます。最近はオープンソースの業務系システムに興味あり。

選択と集中で開発プロジェクトを成功に導く

仕様の変更と開発プロジェクトの遅延

f:id:junmt:20151118135639p:plain

昔から仕様を追加/変更することやプロジェクトの遅延はよくある話でした。

しかし、最近になって悪意なく意図的にこれを起こしている人たちがいることに気がつきました。

 

それは、アジャイル開発と銘打って、プロジェクト推進をし始める勘違いばかりのプロジェクトオーナーたちです。

 

この人たちが勘違いしたこと

f:id:junmt:20151119161406p:plain

マイルストーンを決めない

ウォーターフォール開発であれば、納期からの逆算も踏まえて各ステップの期日をかなり緻密に組み立てることができます。

しかし、勘違いアジャイルの場合は定期レビューもせず、マイルストーンの期日を「なるはや」として設定しているケースがあります。

この「なるはや」という曖昧なワードは、そのタスクのデッドエンドがいつかわからずに走り続けることを表し、ある程度走り終わったあとに振り返ってみると残タスクに対して期間が短すぎるという状況に陥ります。

そして、プロジェクトメンバーは「ようやく気がついたかFu○k」という気持ちになっています。

仕様変更の対応期間が極端に短い

仕様追加や変更の規模によっては半日や1日のペースで修正可能です。

しかし、「やっぱり顧客管理も必要だね。顧客管理も修正期間(2日)でできるようにしておいて」みたいなレベルで言われると、CRUDって知っていますか、UI設計って知っていますか、と言いたくなって思わず手がグーになってしまいます。*1

そもそも計画時に何でこんなに短くてOKだったのか疑問を持ちます。

仕様を変えてもQCDの要求が変わらない

勘違いプロジェクトオーナーはアジャイルが万能かのように思い、開発中にどんどんアイディアや改善を出して、それをすべて取り込もうとします。

プロジェクトマネージャーとメンバーたちはできる限り対応できるように工夫をしますが、現実として上手くいくことは少ないです。

そこで、なんとか品質(Q)を担保するために、期間(D)を伸ばす交渉をしますが、勘違いしているプロジェクトオーナーは「アジャイルでやるって言ったのに何言ってんの?」という目で見てくるわけです。

当然、期間(D)を伸ばすということはコスト(C)が付帯されてくるので、許可が下りることは難しいです。

また、お客様に納品するようなプロジェクトであればなおさらで、期間(D)は一歩も譲れない状況だったりします。

そこで、プロジェクトリーダー、メンバーはデスマーチに突入して無理やり仕様の追加や変更をねじ込み、期間(D)も守れず品質(Q)も低いという最悪の結果で着地する姿を見てきました。

選択と集中をせよ

f:id:junmt:20151119165431p:plain

プロジェクトには必ず目的があるはずです。

プロジェクトオーナーは何が達成される必要があるか、その主軸に「集中」し、仕様などを決めていく「選択」の必要があります。

これを守らずに目的以外のものまで手を出して発散してしまうと、本来の目的の達成が中途半端な状況に陥るなど、最悪の場合は本末転倒となりかねません。

 

また、要件が固まっていない開発プロジェクトはQCDのいずれかに問題が出るので、短いスパンで状況のチェックと見直しを入れる前提で進める必要があります。

 

いずれにせよ、経験や勘だけではなく、現場の人の意見を取り入れて手堅く開発プロジェクトを推進していただきたいものです。

*1:このグーになった手を相手にぶつけると犯罪です。

F-RevoCRMのサイトがリニューアル

今見たら変わっていた。

f:id:junmt:20151118151135p:plain

CRM構築はオープンソースのF-RevoCRM -エフレボシーアールエム-

 

前のサイト

  • 動線がめちゃくちゃ(特にグローバルナビ)
  • 階層が深くてどこに情報があるのかわからない
  • ダウンロードするたびに個人情報の入力を求められる

 

変わったところ

  • グローバルナビが整理された
  • グローバルナビのサブメニューが整理されて、情報へのアクセスが良くなった
  • 会員制(無料)になって、ログインすればソースコードやマニュアルがダウンロードできるようになった

 

ぱっと気がついたのはこの辺り。

少なくとも私が思っていた不満は解消されているみたい。

最近はブログのアップも多くなってきてので、活動が活発化してきたんですかね。

 

しかし、ブログネタとしてdisろうと思っていたのに残念。*1

 

[PR] 日本でまともに使えるオープンソースCRMが出ています。

f:id:junmt:20151117120041p:plain

CRM構築はオープンソースのF-RevoCRM -エフレボシーアールエム-

 

*1:憎しみじゃなくて、1ファンとしての愛情ですよ(汗

リーダーシップのないリーダーは組織を大きくできない

リーダーシップとは?

f:id:junmt:20151118115726p:plain

これは私の定義ですが、以下だと思っています。

1.自ら行動する

リーダー自身が動かないと全くモチベーションが上がりません。

これはメンバーと同じ作業をやれとかそういう意味ではなく、その人の役割を果たすということです。

これは主体性を持つという意味でもあります。

2.ゴールが明確な指示をする

数値や期限などの定量的なものをゴールとし、それをメンバーに対して指示を出すことです。定性的なゴールは、経過に対する指示も曖昧になりがちでチーム全体の推進力が低下します。

3.メンバーがやったことを確認する

タスクの投げっぱなしはリーダーがやることではありません。

指示に対してやったかどうかを確認し、課題が見つかればそれに対して動く必要があります。

まとめると、具体的な目的(または目標)に向かって主体性を持ってメンバーと共に行動していける人だと思っています。

 

リーダシップのないリーダーは存在するのか?

f:id:junmt:20151118114519p:plain

結論、います

偶然リーダーという役割を与えられた人、単純に仕事とかをやる気がない人、部下からの上申を待つ人、そんな人たちがリーダーシップを発揮せずに部下が困ってしまうケースが散見されます。

 

恐らく、そんなリーダーが仕切るチームに入って、リーダーを殴り飛ばしたくなった経験がみなさんにも1度や2度あるんじゃないでしょうか。

 

リーダーシップが発揮されていないチームはどうなるか?

f:id:junmt:20151118132525p:plain

リーダーシップが発揮されていないリーダーのチームはリーダー不在のチームと同じになります。

計画性の欠如

行き当たりばったりというほど酷くはありませんが、明確なビジョンがないので他の人の意見などでコロコロと流れが変わってします。

結果論として、計画性が欠如していると言われることでしょう。

チームの分断

リーダー不在の場合、チーム内で声が大きい人がチームを仕切ろうとします。

声が大きい人が1名の場合は上手くいけば(内部的には)リーダー交代が起こり、リーダー不在から脱却できます。

しかし、複数人の声が大きい人や色々な思惑によりそう簡単にリーダー交代は起こらず、意見の分断だけでチームもバラバラになっていきます。

期待値に到達しない

本来チームが結成されるのは、とても曖昧で大きな目標に向かうためであることが多いと思います。

例えば、新規開拓の営業チームであれば既存顧客を増やして、既存顧客が減少しても売上が下がらないようにすることや、そもそも会社全体の売上高を増やすのが目標となります。この場合、恐らくリーダー不在状態でもある程度は実績が上がると思います。

しかし、全体からしたら誤差のレベルの売上高の増加ではなく、大幅な増加を期待されているはずで、それを達成するためには個人プレーだけで達成するのは難しいはずです。

 

もはや組織を大きくする以前の話です

f:id:junmt:20151118135639p:plain

とにかく期待通りの成果が出ない状況に陥りますから、リーダーシップのないリーダーは組織を大きくできるわけがありません。

 

不運にもそんなリーダーのチームに入ることになってしまった人は、ダメ元でリーダーに考え方を変えてもらえるか相談してみましょう。運がよければ変わってくれてとても良いチームになるでしょう。ダメだったら諦めて裏で自分が担当している分だけでも失敗しないように頑張りましょう。

 

また、自分がリーダーであれば固まった頭をちょっと解いて、自分が本当に良いリーダーなのか振り返ってみてはどうでしょうか。

 

[PR] 日本でまともに使えるオープンソースCRMが出ています。

f:id:junmt:20151117120041p:plain

CRM構築はオープンソースのF-RevoCRM -エフレボシーアールエム-

F-RevoCRMとvtigerCRMは何が違うの?

F-RevoCRM公式ページにvtigerCRMとの比較が載っていない?

f:id:junmt:20151118101744p:plain

探しても見当たらずそんなバカな!と思ったら載っていました。

F-RevoCRMとは | F-RevoCRM

これ、本当にわかりづらいんでまとめ直してみます。

F-RevoCRMとvtigerCRMの機能比較表

 
F-RevoCRM
vtigerCRM備考
スケジュール管理 F-Revoは画面遷移しなくてもスケジュール登録が可能。
顧客管理 F-Revoは概要画面で案件内容も見れる。
リード(見込み客)管理 変わりなし
案件管理 変わりなし
販売管理 変わりなし
保守サポート管理 変わりなし
プロジェクト管理 変わりなし
ドキュメント管理 変わりなし
レポーティング機能 変わりなし
活動管理 × 日本向けのF-Revo独自機能
日報管理 × 日本向けのF-Revo独自機能
日本語対応 F-Revoは独自にローカライズしている。言語だけでなく住所の並びなども含む。

日本向けに最適化されている

f:id:junmt:20151118110204p:plain

vtigerCRMは有志が日本語パックを配布しているが、英語で出てきてしまう部分も多い。しかし、F-RevoCRMはユーザー画面では英語を見かけることがないぐらい完璧に翻訳がされています。

また、住所の並びがvtigerの場合は日本の商慣習に合わせて活動や日報という概念を取り入れているため、SFAのような使い方も可能にしています。

日本でvtigerCRMを使う理由はない

f:id:junmt:20151118110930p:plain

日本で使うならば、F-RevoCRMの方が圧倒的に使いやすい。

vtigerCRMであれば、少なからずとも日本向けのカスタマイズが必要になるだろうが、そういうことが一切ないと思われます。

サポートや保守も運営元から受けることもできるし、内部構造はvtigerCRMとほぼ同一のため、vtigerCRMのナレッジをそのまま使えます。

しかも、ホスティングサービスなどクラウドサービスに近いこともやっているようなので、サービス提供としてもF-RevoCRMという選択肢があります。

 

ここまで来て、vtigerCRMを選択する理由はないでしょう。

 

f:id:junmt:20151117120041p:plain

CRM構築はオープンソースのF-RevoCRM -エフレボシーアールエム-

経営者はどこのコストを下げるべきか

中小企業は事業コストの上昇を感じている

f:id:junmt:20151117202312p:plain

東京商工リサーチの2015年2月のレポートによると、64.8%の企業で原材料単価の上昇を感じるなど、事業コストが押し上げられている状況にある。

しかも、9割の企業では上昇分を販売価格に反映することができず、今後一層苦しい展開が予想されている。

 

※「中小企業の経営課題に関するアンケート結果」について

http://www.tokyo-cci.or.jp/page.jsp?id=46240

 

どこのコストが削れるか?

f:id:junmt:20151117203439p:plain

人件費

すぐに思いつくのがこれだと思う。

ただ、一方では人手不足の状態が示唆されているため、削るわけにはいかない。

パフォーマンスがでない人には退職金を渡して、より優秀な人を入れるぐらいの気持ちでも良いはずだ。

原材料費・商品仕入れ単価

目に見えて高くなりつつあるので、これを低く抑えられればそれに越したことはない。

ただ、状況によって変動することは当たり前で、これは今だからやることではなく、常に動向を見ながら新しいところを開拓しても良いと思う。

燃料・光熱費

これは変動費の中でもある程度は仕方ない部分もあり、なかなか削りにくい。

しかし、電気など事業者の選択ができるようになりつつある今であれば、他の事業者にすることでグッと下げられる可能性があるので、ある程度視野に入れて良さそうだ。

システム運用費

ここでは工場内の機械やCRM, ERPなどかなり大枠でシステム運用費としたい。

工場内の機械を入れ替えることをすると、小さなものでも1台あたり1000万円単位で掛かるため、相当老朽化していない限りは現実的ではない。

 

では、CRMERPなどの業務システムはどうだろうか?

 

例えば、外資系の某S社の大手CRMを使っていた場合、毎月1名あたり数千円〜1万5千円ぐらい掛かっているはずだ。

そうすると、利用者が100名であれば月間100万円、年間1,200万円も使っていることになる。

 

果たして、年間1,200万円使うことにより、それ以上の成果を生み出しているのだろうか?もっと安いCRMで良いんじゃないか?

 

また、ERPだって同じことが言える。ただし、SAPのような高価なものでなければ、下手に変えて数字に間違いが起きたら笑えない状況になってしまうので注意したほうが良い。

まとめ

f:id:junmt:20151117205248p:plain

とにかく新しい仕入先などの開拓や原材料費のコスタダウンの取り組みを始めて継続していく必要があると思う。

また、業務システムはCRMERPしか取り上げなかったが、もう一度その価値を見直してみたらどうだろうか。

 

業務システムはオープンソースも多数出てきており、今までのように著名な業者のサービスを使う必要もなくなってきている。

 

経営者は賢くその辺りを利用していきたいものだ。

 

以下に、日本で使えそうなオープンソースを記載しておく。

 

 ■顧客管理(CRM)オススメ

f:id:junmt:20151117120041p:plain

CRM構築はオープンソースのF-RevoCRM -エフレボシーアールエム-

 

文書管理

f:id:junmt:20151117130925p:plain

Alfresco - ECM and BPM Software | Alfresco (日本語)

 

社内SNS

f:id:junmt:20151117131033p:plain

OpenPNE

 

グループウェア

f:id:junmt:20151117131326p:plain

オープンソース|無料グループウェア「アイポ」

 

ERP

f:id:junmt:20151117131624p:plain

iDempiere Lab(アイデンピエレ ラボ) - OSS ERP Compiere Distribution Lab

 

システム導入はブログの記事を書くより大変

何をタイトルにつけているんだか。当たり前ですよね。

SFAの設計、実装とか、SFAのサーバ構築とか納品とか、たったそれだけのシステマチックな仕事でも営業やコンサルなどと一緒に動く場面が出てきます。

営業やコンサルの彼ら(彼女ら)がとても苦労していたな、と思い出しました。

何故システム導入が大変なのか

f:id:junmt:20151117150242p:plain

導入決定後、本当にこんな顔している人が多かったです。

導入企業の担当者も、売り手側の担当者も。

 

今回は導入を阻害する相手の担当者にフォーカスを当てて考えてみます。

ただ、こんな悪い人ばかりでもないので、あくまで一例ということで。

 

今とにかく忙しい。なのに何故システムを入れるんだ?

結構あるあるだと思います。

それなりの期間、マネジメントとコーディングの片手間に情シスのお手伝いをしていた私も経験しました。(一応、東証一部上場企業の管理職でしたけど・・・想い出深いです・・・)

 

話を戻せば、今の業務が滞りなく回っている、あれば便利程度で何故今入れるんだという強い思いにかられることがあります。

 

このタイプは論理的に追い詰めると効果的です。

相手の理論ではなく、数値的根拠を元にできるはずであること、できない理由を丁寧に論破してあげましょう。

 

これもできないの?

とにかく要求を出す人。

こちらの要求は一切飲まず、一方的に要求を押し付けてきます。

当然、要求が多くなればなるほど仕様であったり、システム利用範囲が広がったりするので難易度がどんどん上がっていきます。

予算があってどんどん膨れ上がらせていくのも大変ですし、かといって限られた予算しかないのに要求を膨らまさせるとどこで着地させるか大変だったりします。

 

このタイプはどこに着地させるかリードしてあげる必要がありますが、相手のプライドを傷つけないようにするのが大変です。

 

ボクはよくわかりません。

確かにこちらはエンジニアなのでできるだけ伝わる言葉を考えて話したりしますが、それでもわかりづらくなってしまうことがあります。

ただ、このタイプは仕事もあまりよくできず、社内であまり良い扱いを受けてない人に見受けられます。

 

この人の部下でも上司でも良いので別の人を担当者として巻き込みます。

会話が成立しない時点で、先に進みません。

 

もうなんかストレス溜まりすぎ

f:id:junmt:20151117130026p:plain

システムの導入は理解があればスムーズに進みますが、反発する人も多いのが実態です。

これはもう宿命とも言って良いぐらいなので、諦めましょう。

人と人の付き合いってそんな簡単じゃないと思いましょう。

 

 

こんなエントリでも一応、ご紹介。

日本でようやくまともに使えるオープンソースCRMが出ています。

f:id:junmt:20151117120041p:plain

CRM構築はオープンソースのF-RevoCRM -エフレボシーアールエム-

 

AWKがすごいのでメモ

awkが結構すごいので一応記事にしておきます。(よく忘れるし)

カテゴリ集計

CSVフォーマットを以下と仮定します。

日付(yyyy-MM-dd HH:mm:ss), 種別, サブ種別, 数値

とした時に、日毎に種別毎のサブ種別の合計値を求めます。

cat hoge.csv | awk 'BEGIN {FS=",";OFS=","}{\
sum[substr($1,0,10),$2,$3]+=$4}END{\
for (key in sum) {num=split(key, arr, "\034"); print arr[1],arr[2],arr[3], sum[key]}}'\
> summary.csv

日毎なので、yyyy-MM-dd以外の部分を配列キーに含めないようにします。
多次元配列のキーは\034で結合され、1次元配列と同じように1つの文字列で取り扱うことになります。
そのため、出力時は\034でsplitした配列から取り出せば元々指定したキーが個別に取り出せます。

なお、ENDを抜かすと都度出力になってしまうので集計されません。
(実はEND書き忘れてハマった。。)

distinct的な重複レコードの排除

cat hoge.csv | awk 'BEGIN {FS=",";OFS=","}!colname[$3]++{print $3,$4,$5}' > hogehoge.csv

例の場合は3列目をキーにして、3,4,5列目を出力します。
3列目が同じ値が出てきた場合は出力されません。(重複排除)

ENDがないのがポイントで、都度判定をして出力しています。
また、colname[$3]++でインクリメントしているため、初回出現時にprintが呼ばれ、その後に1が入ります。
次回出現時は1が入っているので「!」によって否定され、printが実行されません。

ネタです。

CSVをそのままDBに流せば良いのですが、awkで遊ぶためにinsert文に変えてみました。

cat hoge.csv | awk 'BEGIN {FS=",";OFS=" "}{ print \
"insert into hoge(id,  str, num,)\
values($1",\047"$2"\047,"$3");"}'\
> hoge.sql

シングルコーテーションは\047で指定する必要があります。