WordPress と BuddyPress を使用してソーシャルネットワークプロジェクトに1年以上費やした後、プログラマーは毎週、毎週給料を受け取っていましたが、その期間中、行方不明になりました。 。はい、私はメールトラッカーを使用して確認し、メールを開いているのを確認したので、彼は死んではいませんが、彼は応答しません。彼は別の仕事を得たようです。どうしてそう言えなかったのかしら。そして私は彼がしていない仕事のために前金を彼に支払った。
問題は、彼がコード化したほとんどの関数の完全なドキュメントを決して要求しなかったことです。そして、この1年以上の間に多くの関数があり、それらのいくつかにはまだ修正されていないバグがあります。今、それはすべて混乱しているようです。
私が今やるべき最初のことは何ですか?どうすればいいですか?
最初にやるべきことは別のプログラマーを雇うことだと思いますが、どのプログラマーも問題なくすべての機能に取り組むことができるように、現在のすべてのコードを文書化することから始めます。
それは私が最初にすべきことですか?はいの場合、どうすればいいですか?
このようなものに必要なドキュメントの標準的なタイプは何ですか?すべてのコードのドキュメントを作成してバグを修正するプログラマーを取得できますか、それともドキュメントが本当に重要ではないのですか?
また、自分のプロジェクトに割り当てられたプログラマーが消えた場合、私の関与なしに別のプログラマーが彼を置き換えることができるように、別の「個々の」プログラマーを入手する方が良いと思いますか、プログラマーが働いている会社を取得しますか?これが最初に取るべきだったと思います。
コメントでのやり取りに基づいて、個人的なことのために、あなたが唯一の開発者を追い出さなかったと仮定します。しかし、その会話に基づいて、この後退は依然として採用マネージャーとしてのあなたの責任の大部分であると私は別の推測をします。あなたが述べたように、あなたはAT開発者とのすべての経験を持っていませんが、それをどのように雇うかについてどのように決定しますか?
最善を尽くしたようですが、このプロジェクトの規模に対処できない人を雇ったので、彼は不安定な土台を築き、その下に崩れ落ちたのです。残念ながら、開発者と起業家の違いは、前者は時間給/給与で支払われるが、好きなように出入りすることを選択できることです。彼は働いた時間に給料をもらって、もう給与を受け取らないことを選んだとき彼は去った。それについてあなたができることは何もない。
ならどうしよう?人をプロセスに置き換える道を歩み始めたようです。十分な文書があれば、人々は去ることができ、他の人は中断したところから再開することができます。 IMOは機能せず、機能する場合でも、信頼できる正社員のチームよりもはるかにコストがかかります。過去30年間のさまざまな企業の経営陣は、人々を十分な文書(私の最後の仕事を含む)に置き換えようとしましたが、毎回失敗しました。それが私が転職することを決めた理由です。今、彼らは古いスタートアップで正確ではないドキュメントで立ち往生していますが、私は新しいスタートアップで人生の時間を過ごしています。
もしあなたが私だったら、このプロジェクトを取り上げて完成させるのに十分なスキルと経験を持つ適切な人物を見つけようとするでしょう。これには、コーディングスキルだけでなく、設計、アーキテクチャ、および基本的なプロジェクト管理も含まれます。彼の仕事のやり方や、彼が作成する必要のあるドキュメントの数を定義しようとしないでください。適切な人を見つけることに集中し、それに応じて支払う準備をしてください。彼を見つけたら、監視/マイクロマネージメントではなく、彼をサポートし、彼の道から障害を取り除くことがあなたの役割であることを確認してください。あなたが以前にそうしたことを意味しているわけではありませんが、多くのマネージャーがそうする傾向があることは知っています。
他の起業家、おそらくソフトウェアエンジニアリングの知識が豊富な起業家と話してください。これらのフォーラムを読んで、採用予定者に質問するための一連の質問を考え出してください。問題を提示し、アプローチがどうなるかを尋ねます。彼が適切な人物である場合(このページが表示されなかった場合)、回復を開始する際に、会社で何をすべきかに関して他の人々がすでに提案していることの多くを提案できるはずです。彼が雇われてからv1.0が出荷されるまでの計画を定義するように依頼します。彼はどのようにそこにあなたを連れて行きますか。そのような人へのインタビューについて助けを求めてください。
私の考えのほんの一部:バグ追跡は必須です(Jiraは最大10人のチームの場合、10ドルかかります)。ソース管理は必須です(gitは無料です。perforceには、最大5人程度のチームのピーナッツがかかります)。あなたのコードはあなたのドキュメントです。 Word文書ではありません。彼はコードをレビューし、救済可能なものを保持する必要があります。残りを捨てて、保守可能で読みやすいコードを書くことに集中してください。高レベルで数ページの設計ドキュメントのドキュメントを保存します。彼はあなたが取り組んでいる技術を知らなければなりません。善意で誰かを雇わないでください。あなたが彼らにあなたの時間に学んでもらう余裕はありません。彼らが行った他のプロジェクトを尋ねます(残念ながら、あなたやあなたが見つけた人は、物事の技術的な側面についていく必要があるかもしれません)。あなたは十分な経験を持つ人を探していますが、同時にsparkの興奮がすでに燃え尽きています。インパクトを与えるために飢えている人を見つけてください。彼が提案する方法または次のようにすると、定期的に(1週間または2週間の期間で)作業を確認し、即座にフィードバックを提供できるようになります。「7.4か月で完成する」という人は雇わないでください。完了したらお知らせします。
幸運を
これは奇妙な状況であり、あなたはあなたがすべての話をしているのではないと確信しています。私は多くの人たちと仕事をしましたが、その中にはさまざまな理由で去った人もいました(私は彼らの同僚です)。
しかし、それは問題ではありません。少なくとももうありません。あなたはあなたの過ちから学び、将来それを繰り返さないように努めるべきです。そして、はい、私は50%が彼/彼女が去るのはあなたのせいだと強くお勧めします。
現在の問題の解決について:
プログラマーに連絡してみてください。彼はあなたの電子メールを読みます-最も重要なバグを文書化/修正するために彼にお金を提供します。他の誰も彼より速くそれらを修正することができません。うまくいきませんか?彼がどこで働いているかを見つけて、その会社に連絡し、あなたの話をしてください。良い会社は彼らのために同じことをすることができる人を雇わないでしょう。少なくとも彼らはあなたに文書を完成させるように彼に言うでしょう。
注:その人を取り戻したくないので、完成したドキュメントが必要です
1年間の作業が無効になることを覚悟してください。あなたが結果を求めたとき彼は逃げたかもしれません、そして彼は彼が届けることができないことを知っていました。コードがハック、ダーティな実装、および全体的な質の悪いものでいっぱいである可能性があります。彼が戻ってきたとしても、おそらくそれを正しく行うためのスキルや時間さえないでしょう。
別の人を探してください。彼は同じテクノロジー(プログラミング言語、フレームワークなど)を知る必要があります。コードの品質が良ければ、彼は続けることができ、そうでなければ、彼はそれをリファクタリングすることができるでしょう。はい、リファクタリングは新機能の実装なしで時間がかかりますが、コードを保守可能にするため、それが必要です。加えて、悪いコードをリファクタリングできる人は本当に良いプログラマーです。
注:事前にお金を支払うのはばかげています。給与の全体的な考え方は、仕事を終えた分だけ支払うことです。約束されたものではありません:)
リストを作成します。計画を立てることはあなたの最善の利益になります。一度読んだ技術仕様により、新しいプログラマーは仕事とマイルストーンを理解できます。少なくとも3つの重要な文書を用意します。
プロジェクトの全体的な説明-プログラマーではない人でもプロジェクトの内容を知ることができるドキュメント。
タイムライン-いつどこで準備ができると思いますか?すでに何が行われていますか?
技術仕様-これは長いものです。プログラマーが読みたい文書です。それを論理的な部分に分け、その特定の部分の機能とワークフローをできるだけ詳細に説明します。
企業との仕事はそれほど良いことではありません。あなたのチャンスは良くなりません。そして、あなたがたった一人のプログラマーを雇うなら、あなたは10回払い過ぎます。小さなチームの場合は、3〜5人としましょう。チームのリーダーになりたいプログラマを雇うだけです。彼はチームを管理するより良い仕事をするでしょう。
その後、別のプログラマーがコードを文書化しますか?あなたがその道を進むべきではないと言うのは、単に私の自身の経験と意見です。
そのコードベースの品質に関する詳細な知識がなければ、私の意見では、新しいプログラマーを雇ってバグを修正し、必要に応じて維持し、必要に応じて変更を加えることをお勧めします。
それらの意見は、要件を満たす必要があるため、可能な変更(変更または追加)の重要なポイントです。つまり、ある種の要件仕様を作成する必要があります。これはドキュメントです。
これはプロジェクト全体を維持するという点につながります。現在のプログラムの要件や大まかな機能のドキュメントさえ存在するかどうかは質問では答えていませんが、ここで注目する必要があります。
ドキュメントがまったくない場合は、この時点で、その空白を埋めるのはあなた次第です。 アプリケーションをリバースエンジニアリングするプログラマを雇って、奇跡的にドキュメントを偽造することはできません。プログラムに何をしたいかを「説明」する必要があります(すでにプログラムされているものを再説明することを意味する場合でも)。
そのドキュメントを(要件または機能仕様の形式で)作成すると、ドキュメントを引き渡してそこから作業を開始できるため、新しいプログラマーを雇うことで、より良い結果が得られます。
ソースコードからドキュメントを生成するプログラムもたくさんあります。これは、実際のソースコードを説明するスケルトン(これは技術仕様の領域にあります)を生成する良い方法です。機能仕様で指定された機能。要件仕様で指定された要件の機能を指定します。
だから、はい、私の意見は、バグを修正するプログラマを雇うことです。あなたが修正すべきであると同意したバグを彼が修正した後、別の契約として文書化の側面について話し合うことができます。運がよければ、ある程度の経験があり、そこから次に取るべきステップに貢献できるプログラマーを雇いました。
これが私が問題に取り組む方法です:
ドメインの知識があります。 Webサイトで現在利用できる機能、将来追加したい機能を知っており、ユーザーから報告されたいくつかのバグをリストすることもできます。
そこには、このコードの山があり、隅に置かれています。バギーかもしれませんが、サイトにはアクティブユーザーがいるため、価値はあります。したがって、完全な書き換えはIMOの間違いです。
プログラマーが去ったときに、ドメインの専門知識とコードの間の橋渡しが破られました。コードベースを要件と再度同期させ、将来の更新を開発できるように、コードベースを再構築する必要があります。
問題は、そのブリッジを完全にドキュメントで作成することはできないということです。ソフトウェアは技術的であると同時に人間の問題です。新しいプログラマーが期待することを詳細に説明しないと、コードだけからそれを推測するのに苦労します。前のプログラマーが暗号化され、十分に文書化されていない、十分にテストされていないコードを書いた場合はなおさらです。また、新しいプログラマーと緊密に協力して、コードが要件に一致していることを確認する自動化された継続的な方法を見つけない場合、つまり、ブリッジをより堅牢にするためには、問題が繰り返されます。
ドメインナレッジ処理セッションの新しいプログラマーと定期的に(仮想的にも)座ります。これらの各セッション中に、製品のごく一部の仕様をまとめて書きます。単一のWebページでも、機能でもかまいません。それらを実行可能な仕様にする(la Behavior-Driven Development )とすると、ブリッジが動作するという確信のレベルが高まります。これは、それらを継続的に実行して、何か問題があるときに警告を受けることができるためです。また、開発者の生活も楽になります。
セッション後、開発者は作業に戻って、現在のコードが仕様に準拠していることを検証する下位レベルのテストを作成できます。準拠していない場合、プログラマーは修正に必要なすべてを備えています。また、彼が持つ可能性のある質問に対応できるようにしておくことも重要です。
誰もが言ったことに加えて、
高価なプログラマでもコードを文書化することができない場合は、他の誰かがそれをより適切に文書化できるとは期待しないでください。そこで、ここでは、新しいプログラマーを初日に生産的にするために今できることのいくつかのオプションを示します。
これで問題は解決したので、プログラマーを探すことができます。そして、Creative Magicが言ったように、仕事を企業にアウトソーシングすることは、災害につながるか、無限に、そしてそれ以上に価格を爆破することができます。
今度は、プログラマーを雇うときに バス係数 を適切に計画し始めます。人々が行き来し、あなたにできることは何もないので、今回は最悪の事態に備えて2人のプログラマーを雇うか、Uoooが言ったように1人のプログラマーと1人のテスターを雇ってください。
さて、プログラマーがあなたと一緒に店に入ったら、古いコードを文書化するように依頼するのではなく、彼らにコードを文書化するように依頼することを始めることができます。
新しいプログラマーを取得するときに考慮すべき他の事柄は、彼らがソース管理と自動テストを知っていることを確認してください。また、 Joel Test をできるだけ多くのチェックを彼らの助けを借りて取得するようにしてください。自分でこれを行うことができるだけです。
だから、あなたの唯一のプログラマはバスに ヒットしました 、そして今すぐ交換が必要です。
あなたはあなたの契約に基づいて、あなたの前のプログラマーを訴えることを試みるか、彼の何が悪いのかを知ることができます。彼が戻ってこないと仮定すると、これはあなたを助けません。
また、このような困難な状況を将来的に容易にするために、2人目の開発者を雇うことも検討してください。テスターは品質保証にも役立ちます。