この記事はあなた、あなたの心の中にアプリのアイデアと銀行に少しの現金を持っている気の利いた起業家のためのものです。カクテルナプキンに落書きした図は全世界を混乱させ、お金でいっぱいのダンプトラックがすでにあなたの家に送られています。時間どおりに到着するように、生産サイクルをスムーズに実行するための簡単なアドバイスをいくつか紹介します。
「コンピュータープログラムは、人間が作る最も複雑なものです」とダグラスクロックフォードは言います。その名前を聞いたことがないかもしれませんが、彼はプログラマーでかなり有名です。彼は現在PayPalのシニアソフトウェアアーキテクトであり、この記事の範囲を超えたあらゆる種類のクールなテクノロジーを開拓してきました。彼は大規模なプロジェクトに取り組むことについて多くのことを知っている人です。
githubを使用してWebサイトをホストする方法
私自身、プログラミングを始めて13年になりますが、今でも、ある時点で、すべてのプロジェクトで未知の領域に連れて行ってくれます。世の中には非常に多くの異なるテクノロジーがあり、新しいテクニックが驚くべき速さで考案されているので、私は何が起こっているのかを完全に把握しているとは決して感じません。すべてのプロジェクトには固有の課題がありますが、いくつかの定数があります。
明らかに、私たちはベビーシッターが必要です。誰かが介入して基本ルールを確立し、全員を正直に保ち、重要なことを忘れないようにする必要があります。誰かがすべての当事者間のコミュニケーションを促進する必要があります。
この誰か、このヒーローはプロジェクトマネージャーです。
私がこの記事を書き始めたとき、ApeeScapeはプロジェクトマネージャーとの契約を提供していませんでした。 しかし、彼らは今します 。シナジー!以下のアドバイスを読んで、彼らが素晴らしい機会を逃していることに気づいた力を想像することしかできません。
による認証 プロジェクトマネジメント協会 さておき、プロジェクトマネージャーがテーブルにもたらすことができる最も重要なことは経験です。その結果、多くのプログラマーはかなりまともなプロジェクトマネージャーを作るでしょう。私たちは他の誰よりも技術プロジェクトの経験が豊富で、分析マインドは情報のカタログ化と具体的な目標の設定に長けています。
良さは知っています、あなたは私たちに十分なお金を払っているので、他の誰かの時間にもお金を払わせるのではなく、私たちが自分で管理できると期待するのは合理的ですよね?
さて、初心者のために、あなたは私たちにコーディングにお金を払っています。
何を優先するかを決定したり、今週実際にどれだけのことが行われるかについて議論したりするためにプログラミングの夢から抜け出したとき、コードは書かれていません。その後、「ゾーン」に戻るには少なくとも10分かかります。特に、今行った会話でストレスがたまっている場合は、機能の優先順位を主張している可能性があります。 Boo hoo、私は知っていますが、これはすべて、コストのかかるリソースを最も効率的に使用することです。
最も重要なことは、私たちは本当に木々のために森を見ることができないということです。この記事から他に何も取り除けない場合は、これを理解してください。私が一日中いくつかの特定のバグを見つめていると、私の脳は全体像を見失います。
これらのバグを修正すると、脳が報われます。私は素晴らしいことを成し遂げ、今はビデオゲームをプレイできると思います。ホームページがまだ壊れていることを誰かが私に思い出させたとき、私はプロジェクト全体の非常に小さな部分についての非常に詳細な知識で私の脳を満たし、残りの部分を忘れてしまったので、それは完全な驚きです。それが私の脳の働きであり、他の多くのプログラマーも同様の心理的構成を持っています。
それでは、私たちプログラマーがプロジェクトの管理作業を行う責任を負いたくないのであれば、それはクライアントであるあなたに委ねられなければなりません。それはあなたのお金です。それはあなたのビジョンです。とにかく、あなたは最終的にすべての責任を負います。
しかし、あなたはまたあなたの皿にたくさんを持っています。
多くのクライアントは、私たちの他の人と同じように日雇いの仕事をしている単なる人間であり、先延ばしや物忘れに苦しむことさえ知られているクライアントもいます。これは必ずしもあなたを説明しているわけではありませんが、具体的には、プロジェクト全体を存続させるという重要な作業に戻ることができるように、プロのリメンバーを配置するというアイデアを楽しんでください。
同様の範囲の技術プロジェクトに取り組んだ、または監督したことがある場合は、実際にプロジェクトの優れたマネージャーになる可能性があります。そうでない場合は、発生する可能性のある問題を予測できる人の価値を過小評価しないでください。時間の見積もりは常に単なる見積もりであり、バグは最も都合の悪い時間に発生する傾向があります。プロセスのどの部分に最も注意を払う必要があるか、または必要になる可能性が高いかを知っている誰かが周りにいることは、別の(パートタイムの場合でも)従業員のコストに見合う価値があります。
品質保証(QA)を例にとってみましょう。適切なQAは、プロジェクトから必要なものを引き出すために不可欠であり、それに値する注目を集めることは決してありません。優れたプロジェクトマネージャーは、限られたQAリソースを最大限に活用し、プログラマーの品質を保証します。時々、私たちは自分の深みから抜け出し、時には間違いを犯します。プログラマーがちょうど休みの日を過ごしているのか、それとも実際にプロジェクトに適していないのかを判断するには、監督の役割を担う技術的に熟練した人が必要です。人事問題を早期に回避することは、プロジェクトの生と死の違いを意味する可能性があります。
最後に、クライアントであるあなたでさえ、時々少しのチェックやバランスが必要です。私たちコンピュータープログラマーは私たちの率直な性格でよく知られていないので、それを書くのは難しいです。言うまでもなく、私はクライアントがすべてが最優先事項であり、絶対にすべてを成し遂げる必要があると断固として主張する多くのプロジェクトに取り組んできました。これが絶対に真実であったことは間違いありませんが、残念ながら、これらのクライアントは1日の時間数を制御できませんでした。彼らは彼らが望むおよび/または値する肯定的な結果に終わっていませんでした、そしてクライアントがワークロードを評価し、巧みに、しかししっかりと物事をチェックする権限をプロジェクトマネージャーに任せていれば、この結果は回避できたと思います。ほとんどの技術プロジェクトが必要とする冷静な判断を下すのは困難です。それはあなたのアイデアとあなたのお金であり、あなたや私が泣いて悲鳴を上げてもコンピュータは気にしません。 (私は何度も試したので、これが真実であることを知っています。)
以前の1,000語を無視してプロジェクトを自分で管理することにした場合でも、誰かを雇うつもりであるがプロセスについてもっと知識を深めたい場合でも、このリストは役に立ちます。私は(公式に)プロジェクトマネージャーになったことがないので、特定のプロジェクトマネージャーがどのツールを使用するかはわかりませんが、次のすべての手法で成功しました。
新しいプロジェクトを開始するとき、ほとんどの人は、プロジェクトを少し管理しやすいチャンクに分割することが重要であることを直感的に知っています。各チャンクは、数週間から数か月の作業に相当します。プロジェクトの開始時に、これらのマイルストーンを確立するためのキックオフミーティングを開催することをお勧めします。どのように到達するかについて少し漠然としていてもかまいません。最も重要なことは、各マイルストーンの後にチェックインを続けて、プロジェクトに対する全員の理解を深め、プロジェクトのマイルストーンがまだ残っていることを確認することです(大まかに)最初に信じられていたのと同じサイズ。
私たちプログラマーは、見積もりが間違っていること、そして見積もりが私たちに対して使用されることを知っているので、見積もりを絶対に嫌います。定義上、それらは少数の未知数に基づいているため、間違っていても問題ありません。私たちの仕事はかなり楽で、時々鞭を割っても害はないので、彼らが私たちに対して使用されても大丈夫です。
したがって、新しいマイルストーンで作業を開始するたびに、遠慮なく見積もりを依頼してください。主要な機能ごとに1〜2行と、その機能にかかるおおよその見積もりを期待する必要があります。私は通常、楽観的な見積もりを行い、それを2倍にします。多くの場合、この余分な時間は目に見えない落とし穴の原因となります。
ユーザーストーリーは、アプリ内の1つの機能の簡単な説明です。それらは重要な機能の記録として役立ち、一口サイズで、インデックスカードに収まり、多くの場合、小さな絵が付いている必要があります。さらに重要なことに、これらは、クライアントが望んでいることと、プログラマーがコンピューターに伝えなければならないこととの間の架け橋として機能します。それらは、クライアントであるあなたが数分でノックアウトするのに十分シンプルですが、プログラマーである私たちが私たちの歯を沈めるのに十分詳細です。
ユーザーストーリーに関する簡単な情報については、これらのチュートリアルを マウンテンゴートソフトウェア そして ローマン・ピヒラー 高品質で簡潔であること。アジャイルプロジェクト管理の哲学全体の詳細については、このApeeScapeブログ投稿をお試しください アジャイルプロジェクト管理の究極の紹介 ポール・バーンズ著。
ほとんどのクライアントがすでにそれを理解しているように感じるので、これはなぜデザイナーが必要なのかについての記事ではありませんが、プログラマーの前で具体的でよく考えられたデザインを叩くと生産性が大幅に向上するので繰り返します。設計上の決定を下すたびに、「ゾーン」を離れる必要があります。また、最終ドラフトが提供されなかったために戻って何かを変更する必要があるたびに、計算を行います…私は」デザインは楽しいので文句はありませんが、私の経験では、これは回避可能で余分な請求可能な時間の最大の原因です。
ほとんどのデザイナーは、Adobe Photoshop、Adobe Illustrator、またはSketchでコンプとも呼ばれるコンポジションを提供します。自分でやっている場合は、次のような無数のオンラインツールの1つを使用できます。 Balsamiq または InVision 。コンプは完成品と同じ色やスタイルである必要はありませんが(これらは後で簡単に変更できるため)、すべてのUI要素が存在し、考慮されていることを確認するために余分な時間をかけてください。
関連: フリーランスのUXデザイナーの上位3%を雇います。長い会議が避けられない場合もありますが、プログラマーに過負荷をかけたり、必要以上に時間を費やしたりしたくない場合があります。 2時間半の会議で話されたすべてのことを私が覚えていることを期待しているように見えるクライアントがいました。彼らはひどく失望した。スタンドアップミーティングは通常15分に制限されており、その間立つのが通例です。立ち位置は、全員が参加していることを確認し、会議を短くすることになっています。
スタンドアップ中は、全員が輪になって簡単なステータスレポートを提供し、すべてのチームメンバーがお互いの進捗状況を最新の状態に保ちます。スタンドアップについて詳しくは、 ExtremeProgramming.Org 。全員がリモートで作業していて、毎日Skypeを利用したくない場合は、次のような楽しいツールを試すことができます。 15ファイブ スタンドアップの代わりとして。 15Fiveを使用すると、チームメンバーは都合のよいときにいつでも入力を提供でき、調査の質問を表示して、より詳細な回答を引き出すことができます。
誰でも付箋とGoogleドキュメントのシステムを維持できますが(全員のタスクが異なる色で強調表示されます)、実際には必要ありません。多くの人があなたのためにこの問題を解決しようとしました。 BasecampとTrelloは使いやすさで有名ですが、Pivotalは「アジャイル」哲学全体を非常に洗練されたパッケージにカプセル化しようとしています。どちらを選択しても、優れたチケットシステムにより、少なくとも次のことが可能になります。
プロジェクトマネージャーが40枚の真っ赤な最優先のチケットをすべて同じ日に提示すると、プロジェクトのこの鳥瞰図の価値を真に理解できます。
プロジェクトのバージョン管理システムのコードを見ることさえないかもしれませんが、ソース管理(またはバージョン管理)は、私たちが自由に使える最も重要なツールの1つであり、想像できる最大のバックアップシステムです。
最近のプロジェクトのほとんどはGitを使用していますが、しばらく前から存在しているプロジェクトで作業しているときにSubversion(SVN)に遭遇することもあります。 Githubを使用すると、無制限のパブリックリポジトリを無料でホストできます(さらに、世界のほとんどのオープンソースプロジェクトが含まれます)。一方、Bitbucketを使用すると、無制限のプライベートリポジトリをホストできるため、商用プロジェクトに適しています。
どちらのバージョン管理システムを選択しても、何かが発生した場合に備えてコードをリモートで保存し、コードを「コミット」するたびに追跡し、作業内容を説明する小さなメッセージを作成するように強制します。これにより、さまざまな開発者がお互いのコードを上書きするのを防ぎ、特定の期間に行われたすべての変更を確認できます。また、すぐに稼働しない機能を保存するための新しいコードブランチを作成できます。 「blame」と呼ばれるコマンドもあり、特定のコード行の責任者と、それがいつコミットされたかを示します。
ソース管理は最高です。
これは比較的費用のかかる慣行です。つまり、予算が数人のフリーランサーに制限されているプロジェクトでは頻繁に採用されていません。ですから、スタートアップ起業家として、これをしなくてもそれほど悪くはないはずですが、バグに対する究極の防御を提供するので、私はあなたの前でアイデアをぶら下げる必要があります。基本的に、プログラマーは、アプリの特定の部分が特定の予測可能で再現可能な方法で動作することを確認するテスト(小さなコードブロック)の作成にさらに貴重な時間を費やします。たとえば、「ログイン」ボタンをクリックすると、ユーザー名フィールドを含むポップアップが開くことを表明するテストを作成する場合があります。
テストの優れている点は、一度作成したら、1つのコマンドですべてを実行できることです。 200個のテストを作成した場合は、アプリの新しいバージョンをリリースした後でそれらを実行して、それらの200個の機能のいずれにもバグが導入されていないことを確認できます。完璧ではありませんが、バグのない(少なくともバグライトの)アプリを保証するのに可能な限り近づいています。
プロジェクト管理について私が知っていることはこれだけです。プロジェクトマネジメント協会では、これらのうちどれだけが集まるかはわかりませんが、過去10年間にWebプロジェクトに取り組んだことで私が得たものはすべてです。もちろん、その人の経験を生かすために誰かを雇うことをお勧めしますが、それがあなたにできることではない場合でも、この情報がお役に立てば幸いです。あなたはこのプロジェクトの最終的な権威となるので、その内部の仕組みについて理解すればするほど、プロジェクトを勝利に導く可能性が高くなります。
ゼロからangularjsアプリを構築する