マカチに同意します。
アルゴリズムを作成している人に、彼らが最もよく知っているツールを使用させます。このプロジェクトで取り組むべき2つの別々の(そして等しく重要な)タスクがあるからです。最初に、効率的でエレガントで適切な数学的に適切なアルゴリズムを作成し、次にそれをCPUスピークに変換するというねじれた困難なタスクがあります。数学者は最初の仕事に集中し、彼らがそれを簡単にするために、彼らが快適なトゥースルを使用できるようにする必要があります。工数に関しては、MATLABコードを書くのに、新しいプログラミング言語を学ばせるよりもはるかに効率的に時間を使うことができます。
あなたの仕事は、ぎこちないコードの中に埋もれている(おそらく)素晴らしい数学を発掘することです。
その部分は、目前の問題についての単なる見方です。これが実際の答えです。
コミュニケーション、相互尊重、教育/学習。
コミュニケーションと相互尊重
あなたは彼らと頻繁にコミュニケーションをとらなければなりません。彼らと緊密に協力し、確信が持てない何かに出くわしたときはいつでも彼らに質問してください。相互に敬意を払うと、これははるかに簡単になります。つまり、コーディング能力を批判することにすべての時間を費やすと、数学能力を批判することにすべての時間を費やすことになります。代わりに、クイックラーニングセッションを試してください。(「ランチ&ラーン」はかなり一般的な戦術です)
教育/学習
彼らに伝える最初で最も重要な知恵はコメントです。彼らに彼らのコードのがらくたをコメントしてもらいます。コメントはコードの品質よりもはるかに重要であり、コメントが正しい限り、残りは皆さんに任せることができることを伝えます。彼らができるからです。彼らはコードを美しく見せる必要はありません。最速であるために、彼らはあなたたちに意味をなすためにそれを必要とするだけです。
この相互学習シナリオを継続するために、彼らが犯している非常に単純で非常に一般的な間違いに気付いた場合(マルチスレッドほど複雑なものはありません)、すぐに頭を上げてください。「その方法は機能します(または機能しません)が、少し異なる方法がありますが、それはあなたの生活をはるかに楽にします。」あなたとあなたのチームが苦労しているアルゴリズムのニュアンスや部分に気づき、それについて少しチュートリアルを教えることによって、彼らに往復するように促します。
コミュニケーションがスムーズに行われると、チームに最適なコーディングスタイルを簡単に作成できるようになります。また、同じように表示されない理由を理解しやすくなります。 。
また、Kekoavが述べたように、完全にロードされたテストケースがいくつか提供されていることを確認してください。つまり、
A-> B->C->D->ソリューション
それらは、Aのすべての値、次にBでの外観、Cでの外観などを提供します。これにより、最後に正しいだけでなく、すべての段階で正しいことを確認できます。コードがエッジケースをカバーしていることを確認できるように、定期的な例と珍しい例をいくつか提供してもらうようにしてください。