26

余暇には、ソフトウェア、データベース、その他のツールを開発する多くの科学者(主に生物学者)と協力しています。

通常、これらのプロジェクトは1回限りで構築され、社内で使用され、最終的に誰かが「ああ、これは他の人に役立つ可能性がある」と判断するため、バイナリをリリースするか、PHPインターフェイスをスラップして、ウェブ。ただし、通常、ソースコードやデータベースのダンプを他の開発者が利用できるようにすることはできません。したがって、実際には、これらのプロジェクトは通常、コードが記述されたプロジェクトが終了するか、資金を失うと消滅します。数か月(または数年)後、他のラボで同じ種類のツールが必要になります。最初のラボで行った作業を繰り返す必要があり、そのプロジェクトは最終的には消滅し、泡立ち、すすぎ、繰り返します。

プログラミングを主な仕事としない人々に、自分たちが構築したツールをもっとオープンにすることがコミュニティにとって有益であると説得する方法について、誰かが何か提案はありますか?

同様に、バージョン管理、バグトラッキング、リファクタリング、自動テスト、継続的インテグレーション、およびプロの開発者が当然と考えているその他の一般的な慣行は、時間を費やす価値のあるアイデアであるという考えを伝える方法に関するアドバイスはありますか?

残念ながら、多くの科学者は、プログラミングは退屈で、作業を必要とする悪であり、彼らの研究ははるかに重要であるという意見を持っているようです。全体として、開発基準の水準を上げることでした。誰もが恩恵を受けるでしょう。

このような状況になったことがありますか?何があなたのために働いたのですか?

4

15 に答える 15

17

Software Carpentryは、あなたの要求に一致するように聞こえます。

概要

多くの科学者やエンジニアは人生の多くをプログラミングに費やしていますが、これをうまく行う方法を教えられたのはほんの一握りです。その結果、彼らは研究を行う代わりにソフトウェアと格闘することに時間を費やしていますが、彼らのプログラムがどれほど信頼できるか効率的であるかはわかりません。

このコースは、プログラミングに費やす時間を20〜25%短縮できる、科学者やエンジニア向けの基本的なソフトウェア開発プラクティスの集中的な紹介です。すべての資料はオープンソースです。教育目的または商業目的で誰でも自由に使用できます。学界および産業界の研究グループは、ニーズに合わせて積極的に使用することをお勧めします。

于 2009-08-05T19:56:19.133 に答える
9

私はバイオインフォマティクスであると言って、この前置きをさせてください。あなたが話していることをいつも見ています。これらの人々の多くが生物学者からコーダーに転向し、ベストプラクティスに触れていないという事実にはいくつかの真実があります。

とはいえ、核となる問題は、これらの人々が良い習慣について知らない、または気にしないということではありません。問題は、ソフトウェアエンジニアリングの学習により多くの時間を費やしたり、コードをクリーンアップしてリリースしたりするインセンティブがないことです。

学術研究の場では、あなたの評判(したがってあなたの将来の仕事の見通し)は、あなたが寄稿した出版物の数と質にほぼ完全に依存します。メソッドや新しいアルゴリズムに関する出版物は、新しい生物学的発見を報告するものほど尊重されていません。したがって、データセットの簡単な分析を行った後、次のデータセットに移動してより多くの生物学的発見を行うことができるときに、コードのクリーンアップとリリースに多くの時間を費やすインセンティブはほとんどありません。

また、計算開発のための資金の利用可能性は、生物学を行うために利用可能であるものよりも桁違いに少ないことにも注意します。提出された助成金の10%しか資金が提供されていない環境では、科学者はコードのクリーンアップとリリースに時間をかける余裕がありません。そうしても、ラボの資金を維持するのに役立ちません。

つまり、一言で言えば問題があります。バイオインフォマティクスとして、私はそれがひねくれていて、しばしば苛立たしいと思います。

とはいえ、将来への希望はあります。特に、第2世代と第3世代のシーケンスでは、生物学はハイスループットディスカバリーの領域に移行しており、データマイニングと堅実な計算パイプラインが科学の成功に不可欠になっています。そうなると、計算プロジェクトへの資金提供が増え、実際のソフトウェアエンジニアリングがますます行われるようになります。

于 2009-08-06T23:56:39.153 に答える
7

それは正確には単純ではありませんが、例によるデモンストレーションはおそらく最も効果的にポイントを家に帰すでしょう-研究者が行う必要のあるタスクを見つけ、ソース付きのツールを利用できるようにするために時間をかけた人を見つけ、研究者がどれくらいの時間を指摘するかそのツールを利用できるため、結果として節約できる可能性があります。次に、同じ方法でコミュニティに還元できることを指摘します。

于 2009-08-05T19:38:07.627 に答える
5

事実上、あなたが彼らに求めているのは、彼らが選んだ職業に加えて、 (彼らの豊富な自由時間で)プロの開発者になることです。彼らの抵抗は理解できます。

于 2009-08-05T19:40:12.223 に答える
5

プログラミングを主な仕事としない人々に、自分たちが構築したツールをもっとオープンにすることがコミュニティにとって有益であると説得する方法について、誰かが何か提案はありますか?

あきらめる。真剣に、これは豚に歌うように教えるようなものです。(私はかつて物理学者だったので、彼らがどのようなものかを知っているので、これを言うことができます。)

本当の問題は、ソフトウェアではなく、出版物で測定された科学的成果に対して同僚が報われることです。コンピュータサイエンスでは、ソフトウェアの構築で認められるのは十分に困難です。他の科学では、それはほとんど不可能です。

「それはあなたにとって良いことだ」という理由で、生物学の友人に良い開発の実践を売ることはできません。彼らは、「ソフトウェアの優れた実践について学ぶために努力を払うべきか、それとも別の生物学論文を発表するために同じ努力を払うべきか」と尋ねるでしょう。コンテストはありません。

于 2009-08-05T20:03:11.523 に答える
4

おそらく、学術的/知的責任の観点からそれを組み立てることは、ある程度役立つでしょう-あなたの情報源を共有することは、多くの点で、あなたの情報源を適切に引用したり、あなたの研究方法論を詳述したりすることです。あなたが奨励したい「プロのソフトウェア開発者」の振る舞いについても同様の議論がありますが、コードをリリースすることは、かなり多くの作業を必要とする可能性のある他のものよりも、おそらくこれらの理由で簡単に売れると思います。

于 2009-08-05T20:14:03.857 に答える
3

一つには、生物学者にPerlを教えるのをやめていただけませんか。専門家ではないプログラマーに書き込み専用言語を教えることは、保守不可能で使い捨てのコードにつながることが事実上保証されています。Pythonは同じニッチを満たし、習得も簡単で(子供向けのプログラミングを教えるためにも使用されます!)、はるかに読みやすくなっています。

于 2009-08-07T00:10:37.160 に答える
3

実際、忙しいプロジェクトチームに、ソフトウェアを別のチームに採用するのに適したものにするためのスケジュール時間を含めるように依頼することは、私の経験では非常に困難です。

公共の利益のために余分な仕事をすることは大きな質問です。

プロジェクトが完了した後の「収穫」の一般的なパターンを見てきました。これは、再利用のための即時のコーディングがその日の緊急性で失われる傾向があることを反映しています。

私が考えることができる唯一の道は、再利用が「狩猟採集民」のための予算のある組織内にあるかどうかです。

単体テストなどは、開発に対して即座に見返りがあるため、より多くの利益を得ることができます。

于 2009-08-05T19:38:21.400 に答える
3

統計との類似点を描きます。統計は科学研究の重要な部分であり、唯一の賢明なアドバイスは、それを適切に行うことを学ぶか、専門家に依頼することです。正しく行われていない統計は、論文を完全に損なう可能性があります。同様に、不適切に記述されたコードは、公開データベースまたはWebリソースを完全に損なう可能性があります。

PS:このブログはとても良いですが、彼らにそれを読ませることは困難な闘いになるでしょう:科学者のためのプログラミング

于 2009-08-07T10:17:41.820 に答える
3

クリス、

私はある程度あなたに同意しますが、私の経験では、彼らが出版したいという熱意の中で、あなたはあまりにも多くの「私も」コードと方法になってしまい、科学の質を実際に高めることはありません。オープンソーシングコードについてもう少し考えて、他の人に貢献するように勧めるなら(必ずしもそれから出版物を出すことなく)、誰もが恩恵を受けるでしょう。

科学プログラマーとソフトウェアエンジニアを分離することは、特に実稼働アプリケーションにとっては良いことであることに間違いなく同意します。しかし、科学的なプログラミングの場合でも、当時の優れたプラクティスに従えば、コードの品質ははるかに向上していました。

于 2009-08-17T04:20:14.173 に答える
3

私の経験では、人々にきれいにプログラムしてもらうための最良の方法は、彼らと一緒に仕事をしているときに良い例を示すことです。例:「コードのデバッグに絶望的な日々を費やすことはありません。最初にコーディングするのは、問題が小さくて簡単に検出できる場合に問題を特定する自動化された単体テストだからです」または:「物事のバージョンを追跡するのは非常に苦手ですが、私の新しいコードは、以前は機能していたものを壊してしまうことがあります。そのため、svn / git/dropboxを使用して状況を追跡しています。」

In my experience that kind of statement can raise the interest of "biologists that learned how to script". And if you need to collaborate on a bigger project, make it clear that you have more experience and that everything will go more smoothly if things are done your way.


Regarding publication of code, current practice is indeed frustrating. I would like to see a new journal like Source Code for Biology and Medecine, where code is peer-reviewed and can be published, but that has no (or very low) publication costs. Putting code on sourceforge or others is indeed not "scientifically worth it" because it doesn't make a line on your publication list, and most code is not revolutionary enough to warrant paying $1,000 for publication in Source Code for Biology and Medecine or PLoS One...

于 2009-10-04T17:12:48.740 に答える
1

プロセスを合理化するほど説得することはしません。それを明確に文書化し、ビデオチュートリアルを作成し、ある種のツールチェーンをバンドルして、メイン分野ではない分野の専門家になることなく、ソースリポジトリをセットアップするのを途方もなく簡単にします。

于 2009-08-05T19:38:44.943 に答える
1

Joomlaのようなコンテンツ管理システムを使用してもらうことができます。そうすれば、コンテンツをプッシュするだけで、コードはプッシュしません。

于 2009-08-05T19:37:41.323 に答える
1

すでにベストプラクティスを知っている本当に優れたプログラマーを選び、科学者に彼らが何を必要とし、何をしているのかを教えるように頼んでください。最終的には、プログラマーは最小限のドメイン知識(ドメインによっては1〜3年かかると思います)を持っています。科学者が求めるもの。

ほとんどのプログラムは開発者向けではないため、開発者は常に別の能力領域を学びます。そのため、開発者は「クライアント」が何をするかを知る必要があります。

于 2009-08-06T12:44:01.610 に答える
1

悪魔の擁護者になるために、科学者に優れたソフトウェアエンジニアになるように教えることは正しいことですか?研究中のソフトウェアは通常、非常に目的に固有のものです。場合によっては、コードの一部を1つのデータセットで1回だけ正常に実行する必要があります。その後、結果が出版物に送られ、目標が達成されます。そして、あなたの技術やアルゴリズムが短い順序でより良いものに取って代わられるリスクが高いです。したがって、きらめくコードの作成に費やされた労力が無駄になるという本当のリスクがあります。

不正な形式のperlコードの沼地を通り抜けることに不満を感じているときは、見ているコードがまれなサバイバーの1つであると考えてください。そのようなコードの山は書かれ、数回使用され、そして二度と日の目を見ることなく捨てられました。

臭いのある凶悪な一回限りのプロトタイプコードの研究には大きな場所があると言っているだけだと思います。そのようなコードが存在するのには十分な理由があります。それはきれいではないかもしれませんが、それが仕事を成し遂げるなら、誰が気にしますか?正当な理由があることが判明した場合は、いつでもソフトウェアエンジニアを雇って、本番環境に対応したバージョンを作成し、科学者に先に進めることができます。

于 2009-08-11T04:43:08.037 に答える