この質問がソフトウェア開発に厳密に関連しているかどうかはわかりませんが、試してみましょう。
多くのプログラマーのように、私は趣味のプロジェクトに取り組むのが大好きです。時々、一見良いアイデアがあまり良くないことが判明したので、プロジェクトを中止します。しかし、時々、何か有用なものがプロジェクトから出てきます。それで、私はそれを解放し、世界にそれを提示することができましたね?
違う。どういうわけか、私はこの一歩を踏み出すことができないようです。私のコードが十分ではないのではないかと恐れています。追加できる機能について、常に最適ではないものについて考えることができます。だから、何もリリースせず、興味を失い、ある時点でプロジェクトを放棄します。
これは正常ですか?このような状況をどのように克服しますか?
まず、覚えておいてください配送は機能です。何もリリースしないよりも、不完全なものをリリースする方が良いです。
もう1つ注意すべき点は、これらが趣味のプロジェクトであることです。締め切りに間に合わなかったり、興味を失ったりしても、大したことではありません。結局のところ、あなたはこのプロジェクトを楽しんでいます。
それを出してください。
GitHub または Bitbucket などのソーシャルコーディングサイトでこれを行うことはそれほど難しくありません。あなたが出すもののほとんどのものはおそらくあまり使われないでしょうが、それは大丈夫です。これは、これらのソーシャルコーディングサイトではごく普通のことであり、多くのプロジェクトが(いくつかの有用なプロジェクトでさえ)中止されます。しかし、最大のものは、他の人があなたが残したものを選ぶことができるということです(あなたが寛容なライセンスを持っている場合)。
あなたのものはおそらく他の誰にも使用されないかもしれませんが、それでもあなたがそれを出す必要があるのにはいくつかの利点があります:
すでにバグのないオープンソースプロジェクトにコントリビューターを参加させることは、多くの簡単なバグを解決するプロジェクトよりもおそらく難しいでしょう。これらのバグは、初期のユーザーがコードに慣れるためのインセンティブであるためです。
Linusが最初にLinuxカーネルを導入したとき、それは完全で安定したバグのないクリーンなコードではありませんでした。それは 不完全で、くだらないもので、移植不可能で、フィンランドのキーボードに組み込まれている でした。
基本的に、私のコードが好きかどうかは気にしません。人々にとって便利な場合は、無料のライセンスの下でリリースしますが、バグや次善の解決策を見つけ、より多くの機能が必要な場合は、自由に修正できます。 GPLまたはLGPLを使用すると、これらの修正を見つけることも可能になります。それらが有用または適切であるとわかった場合は、自分で適用できます。
申し訳ありませんが、あなたは本来すべきこととは正反対のことをしています!
できるだけ早くそれをリリースし、人々のフィードバックを聞いて、それに基づいて新しい機能を実装してください。その逆ではありません!
あなたは何を失う必要がありますか?
それが本当に良いか、新しいニッチを埋めない限り、おそらく気づかれることはないだろうということを知って安心することもできます。
そして、あなたが否定的なフィードバックを受け取った場合-それは学ぶチャンスです。それを無駄にしないでください。
ソフトウェアを超えたどのドメインでも、まったく正常です。いくつかの異なる環境でビルドできることを確認し、READMEを作成して、github/codeplex/etcに投げます。初めてこれを乗り越えることが不安を克服する唯一の方法です。
2回目、3回目、n回目が楽しいところです。
未完成のソフトウェアをリリースする理由の1つは、コミュニティの構築を開始することです。プロジェクトを有用なオープンソースツールにしたい場合は、他の開発者が必要です。それらを引き付ける1つの方法は、それを早期にリリースし、その後(公に)改善を続けることです。これらの機能をひそかに追加しないでください。公開、Githubページ、またはどこにでも追加できます。それは歴史の中で活動を生み出します。
他の開発者は明らかに放棄されたプロジェクトに取り組みたくありません。したがって、開発作業を公開することは、活発で継続的な関心を示します。公開して追加できるように、いくつかの機能を意図的に維持する価値があります。