成功するプロジェクトに変えるために


成功するプロジェクトに変えるために　今までに書いてきた記事の中から役立ちそうな視点の記事へのリンクをまとめてみます。

開発したい目的を、どのようにして実現していこうとするのかは、よく考えてから開発方針を決めてください。
どう失敗しやすいのかを考えることで、うまくいきやすい技術を選択することにつながればと思って書いています。
　開発の方式を選択するには、何でもかんでもきちんと評価するのは無理です。ZnSeとGaNではどちらがいいのかについて、何でもかんでもきちんと評価することができると思いますか。開発者の直感というものが重要だと思います。直感をはたらかせれば、無駄な作業をしなくて済むので、開発速度を上げることができます。

- [うまくいきそうにない技術](http://qiita.com/nonbiri15/items/68c5e8d0c7e876bd3f86)
- [直感のきく技術者になろう](http://qiita.com/nonbiri15/items/7a6386f6a74e696be344)

　いくつかの可能性から、どの方式を選ぶか考えるときも、「開発は、有限の時間で有限のリソースで行うものです。
少ない差し手で勝負を決めなければならないものです。」と主張して、通常の論点とは異なり、「全ての項目をきちんと評価して」、「最適な選択を」、などと言わない視点を提案しています。

- [可能性の枝切りができない開発は必ず失敗する。](http://qiita.com/nonbiri15/items/98b686c743e67b5dd87f)

自分たちの頭で考えて、自分たちの頭を信用するしか方法はありません。他人の言うことを鵜呑みにしていると[「ろばを売りに行く親子」](https://ja.wikipedia.org/wiki/%E3%82%8D%E3%81%B0%E3%82%92%E5%A3%B2%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%8F%E8%A6%AA%E5%AD%90)になるだけです。そもそも自分たちの頭を信用できない人は、新規の開発などすべきじゃないとさえ思います。

　さらに、次の記事では、ものごとを簡単に単純にすることの大切さを主張しています。

- [簡単なんじゃない、簡単にするんだ。](http://qiita.com/nonbiri15/items/bb398cf647557a0d30fe)
- [問題を難しくするな。](http://qiita.com/nonbiri15/items/219ea4e9baf4f9e9ab67)

　開発が成功しやすくなるように、最終製品の仕様とは別に、開発段階での仕様を設定することを主張しています。

- [開発のしやすさを重視した仕様を作成しよう](http://qiita.com/nonbiri15/items/439a9a3d7638aee2f38d)
- [失敗のリスクを減らす目標の設定を](http://qiita.com/nonbiri15/items/2118db1b3923f8d56e10)

開発仕様の大枠ができてきたら、どのように設計すべきかを述べています。「実験してみなきゃ分からない」は最小限にする指導原理がある場合があること、設計の一貫性を貫くことが、成功へのキーとなりうること述べています。


- [設計の一貫性を重視しよう](http://qiita.com/nonbiri15/items/a405087e6271aca2d937)
- [「実験してみなきゃ分からない」は最小限に](http://qiita.com/nonbiri15/items/e6a6e3f00d4425ed2290)


現実のシステムでは、ノイズなどの影響を受けて思ったようにいかない場合が多いこと、ノイズの影響を受けにくい方式（ロバストな方式）があることを述べています。開発では「動くようにする、正しくする、速くする。」の順序の重要性を述べています。

- [ロバストにいこう](http://qiita.com/nonbiri15/items/df200f9bcc5cda09ded2)
- [動くようにする、正しくする、速くする。](http://qiita.com/nonbiri15/items/4af917131d02d9101f53)


開発に専念する時間を十分にとることが重要なので、開発者の開発時間を減らすドキュメンテーションコストを抑えることが大事です。

- [ドキュメンテーションコストを下げる](https://qiita.com/nonbiri15/items/bc4a7f4bbfada58ff8a8)


ひとつ一つの実験結果を成功させるためには、品質を作りこむための作業を怠ってはいけません。

- [品質は作りこまないかぎり実現できない](https://qiita.com/nonbiri15/items/bb5ab38b617f33ab4f65)


マネージャーの皆さんは、どうやってプロジェクトを成功に導くのか本気で考えることです。だれか1人の力で全てが解決されることは期待できません。メンバーの力を発揮させやすくすることが大切だと主張します。

- [マネジャーは自分の強みを何におくのか？](https://qiita.com/nonbiri15/items/5f7799935bb456a322a7)

また、開発メンバーがともにスキルを上げていくことが、プロジェクトの成功には必要です。どこでも食っていけるレベルに開発メンバーのスキルをあげていくことが、結局は開発をスムーズに進むようにしていきます。（そうであっても、メンバーが自分で能力を高めようと思っていない分野について、一方的にその分野のライブラリなり手法などを紹介しても迷惑なだけで、技術の押し売りをしないように注意しておきましょう。）

- [どこでも食っていけるC++のソフトウェアエンジニアになるために](https://qiita.com/nonbiri15/items/b6bdfa1aee5e4504d36a)

まだ、ここに書いていないこととしては、プロジェクトを成功させるためには、チームの人間関係の重要性があります。
ともに同じプロジェクトを成功させようと思っているメンバーだということが、重要なポイントです。技術者が一緒にいるだけではチームとして機能しません。同じプロジェクトを成功させようと思っているということは、お互いの困っていることを助け合う関係でなくてはないません。信頼関係は、最初からあるものではなく、お互いの行動を結果作られていくものです。次の本は、メンバーの心の動きにも着目している本ですので、そういったチームを作り上げていくためのヒントが多く含まれています。

[「アジャイルコーチング」](http://shop.ohmsha.co.jp/shopdetail/000000004857/)

これらの視点を持つことで、開発内容が成功しやすいものに変えることができるのではないかと、私は考えています。

---
追記
何をどうすればうまくいくのかに気づいてもらうには、時間がかかります。
どうすればうまくいくと考えているのかを、他のメンバーや将来の参加者が、必要な情報が取り出せる環境を作っておきましょう。
将来の参加者がどのように課題を引継いだらよいのかが分かるように、課題管理システム（Redmineなど）に記録を残しておきたいものです。

# 追記(2023) 
## 出資者が魅力を感じられる内容であり続けること
- 事業が継続できるかどうかという点は、組織の運営資金を捻出し続けることにあります。
- そのためには、その技術・製品・事業に魅力があり続けることです。
- 十分な魅力があれば、まだ黒字化できていない事業に対しても、出資してくれる人・組織がありえます。
	- もちろん、今後の黒字化ができることが大前提ですが。
## 「タイプは様々あれど、女たちは皆　美女だぜ」
- ある漫画の中の登場人物のセリフである。
- これに便乗して、「タイプは様々あれど、エンジニアは皆　優秀だぜ」と言いたい。
- いまプロジェクトに加わっていてくれているエンジニアのみんなの良さを信用して、期待しよう。
- その結果、もっと優秀なエンジニアになってくれるはずだ。
# 追記 2024
### 無自覚にやらかしていること
- 自分が間違えているという指摘をされていい気分のする人はいません。
- 私自身の物言いが、だれかのプライドを傷つける表現になっていることがあります。
- そのようなことをすると、相手は心を閉ざしてしまいます。