ソフトウェア製品がチーム全体で開発を行う場合、1人のプログラマが自分でどれだけ達成できるでしょうか?言い換えれば、一人でPhotoshopやMS wordなどを書くことができますか?そして、できなかった場合、Web開発は1人のプログラマーが多くのことを行える領域になりますか?
ソフトウェア製品がチーム全体で開発を行う場合、1人のプログラマが自分でどれだけ達成できるでしょうか?言い換えれば、一人でPhotoshopやMS wordなどを書くことができますか?そして、できなかった場合、Web開発は1人のプログラマーが多くのことを行える領域になりますか?
回答:
Linuxは現在、最初のイテレーションよりもはるかに大きいですが、重要なことは、トラクションを得るのに十分なものが入っていることです。
私は、大きなものは他のものと根本的に異なる場合に行う価値があるという個人的なルールを持っています。さもなければ、あなたは紅海に飛び込んでいます。
あなたのソフトウェアが十分に優れているなら、あなたはそれを真剣に考えたいかもしれません。たとえば、Minecraftの作成者であるMarkus "Notch" Perssonを取り上げます。IIRCは彼だけでゲームを開始し、ゲームが人気を博したとき、彼は協力者を探し始め、さらには会社を設立しました。
大きなプロジェクトは、単独で何かを成し遂げることに報いる一方で、単一の天才ではなく、開発者のコラボレーションによって潜在能力を発揮します。
チェックアウト天才プログラマーの神話あなたはそこにすべての偽の期待を取得する必要があり、GoogleのI / O 2009でベン・コリンズ-サスマンとブライアン・フィッツパトリックによって話を。私がここで言いたい主な点は、一人の開発者が全体の功績を認められることもありますが、背後にはもっと多くの人がいることです。
Linus Torvalds以外の別の例は、John Carmackです。EAが2か月間チーム全体を見積もったわずか4日間でWolfensteinを移植しました。
それはコードの量ではなく、そのアーキテクチャと技術的な知識ではなく、予想よりも少ないコードで大きなことを達成することができます。
スキルと知識(平均レベルを超えている)を考えると、多くの作業を少しのように感じることができます。
私が行っている仕事の性質上、私は自分でかなり大きなアプリケーションをいくつか開発しました。はい、それは実行可能です。私はこれについて何時間も続けることができましたが、今はあまり時間がないので、個人的な経験からの長所と短所があります。
長所:
短所:
いくらかの献身とスキルがあれば、一人でも間違いなく多くのことを達成できます。簡単なことではありませんが、優秀なプログラマーであるだけでは十分ではありません。プロジェクトを成功させるには、ユースケース、ユーザーインターフェイスの設計、ドキュメント、サポートなどについてよく考える必要があります。物事が順調に進み、ユーザー数が増加すると、すべてが独力でますます非現実的になります-それは、より多くの人々がプロジェクトに参加する(コミュニティ参加、人を雇うなど)か、プロジェクトが死ぬポイントです。
そのすべては、スキル、費やされた時間、およびそれを行う意欲に依存します。知識が多いほど、何かを成し遂げるのにかかる時間が短くなります。唯一の開発者としてコードベースの非常に親密な知識を得ることができます。これは、把握/リファクタリング/デバッグのプロセスを高速化することもできます。
私は個人的にデスクトップからサーバーへの転送アプリケーションに取り組んでいます。サーバーアプリケーション、デスクトップアプリケーションをコーディングし、すべて自分でテストしました。アプリケーションのインストーラーも作成しました。Windowsのシステムトレイアイコンへのドラッグアンドドロップを許可する方法を見つけ出し、新しいJavaライブラリをゼロから作成することさえできました。私は1年の間にこれを行いましたが、まだ開発とテスト中です。
このプロジェクト全体は、1つの主要な試練でした。毎日放課後、私は週末だけでなくプロジェクトに取り組みました。MS Word、Photoshopなどのように大規模ですか?いや。プロジェクトはまだ大規模で成長し続けていますが、多くのことを達成することが可能です。
私は現在、自由時間に自分でそのようなプロジェクトに取り組んでいます(デスクトップアプリケーションではなく、Webアプリケーションですが、原則は同じです)。これまで私が見つけたものは次のとおりです。
1)車輪を再発明しないでください。すべてをゼロから行うのではなく、既存のライブラリ/フレームワークを使用します。ここで1つ注意点があります。ライセンスが目的のディストリビューション/リリース/どのモデルにも適用されるため、ライセンスに注意を払ってください。一部のコピーレフトライセンスでは、「派生著作物」をオープンソース化する必要があります。一部のライセンスでは、非営利的な使用のみが許可されています。使用するライブラリ/フレームワークを追跡して、「クレジット」画面/エリア/その他で適切な属性を提供できるようにします
2)繰り返し作業します。これはdukeofgamingが「Start Small」で言ったことに関係しています。結果を見ることができれば、プロジェクトに固執する可能性が高くなります。何かが機能していることがわかるまで、開発は暗闇で絵を描くことに相当します。
3)早い段階でフィードバック/ヘルプを求めることを恐れないでください。おそらく、あなたはすべてが得意ではありません。コーディングの低レベルの核心が得意であれば、おそらくUIが苦手でしょう。逆も当てはまります。特定の地域であなたよりも優れている人からアドバイスを受けることは決して痛いことはありません。多くの人は、誰かが自分のアイデアを盗むのを心配しているので、これを避けます。これについて心配する必要はありません-誰かがあなたをコピーしようとした場合、それはあなたが価値のある何かにいることを意味します。アイデアは安価で、実装が重要です。AppleはMP3プレーヤーを発明しませんでした。Microsoftはオペレーティングシステムを発明しませんでした。Facebookはソーシャルネットワークを発明しませんでした。Googleは検索エンジンを発明しませんでした。彼らがしたことは、それをユーザーにとって魅力的なものにすることでした(そして吸うことはありません)。