ソフトウェア工学

システム開発ライフサイクル内で働く専門家、学者、学生向けのQ&A

12
初期段階のスタートアップは忍者プログラマーをどのように雇うのか[非公開]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 私はスタートアップのアイデアに取り組み始めたばかりのプログラマーです。現時点では、少なくとも1人のプログラマーを参加させたいと思っています。このプログラマは忍者である必要があります-10倍のエンジニア。 初期の頃はおそらくスタートアップにとって最もリスクが高いので、この問題にできる限りアプローチするようにします。 これらの人々を見つけるにはどうすればいいですか?そしてどのように彼らを船に乗せるように説得するのですか? 自分の会社を始めた人たちや、採用についての考えを聞いてみたい 更新:忍者を共同創立者にしたいスタートアップが機能しない場合、いつでもメインストリームのジョブに雇用できるためです)
14 hiring  startup 

4
内部コンポーネントの単体テスト
クラス/モジュール/パッケージ/などの内部/プライベートコンポーネントをどの程度単体テストしますか?それらをすべてテストしますか、それとも外部とのインターフェースをテストするだけですか?これらの内部の例は、プライベートメソッドです。 例として、1つの中央プロシージャから呼び出されるいくつかの内部プロシージャ(関数/メソッド)を持つ再帰降下パーサーを想像してください。外の世界への唯一のインターフェイスは中央の手順であり、文字列を受け取り、解析された情報を返します。他のプロシージャは文字列のさまざまな部分を解析し、中央プロシージャまたは他のプロシージャから呼び出されます。 当然、外部文字列をサンプル文字列で呼び出し、手で解析した出力と比較して、外部インターフェイスをテストする必要があります。しかし、他の手順はどうですか?それらを個別にテストして、サブストリングが正しく解析されることを確認しますか? 私はいくつかの議論を考えることができます: 長所: より多くのテストが常に優れており、これはコードカバレッジの向上に役立ちます 一部の内部コンポーネントは、外部インターフェイスに入力を与えることにより、特定の入力(エッジケースなど)を与えるのが難しい場合があります。 より明確なテスト。内部コンポーネントに(修正された)バグがある場合、そのコンポーネントのテストケースは、バグがその特定のコンポーネントにあったことを明確にします 短所: リファクタリングは非常に苦痛で時間がかかります。何かを変更するには、外部インターフェースのユーザーが影響を受けていない場合でも、ユニットテストを書き直す必要があります 一部の言語およびテストフレームワークでは許可されていません あなたの意見は?

10
大規模な会議で優れたデザインをいかに効果的に「販売」するか
私は何度も悲しい悲劇を目の当たりにしました。発生することは次のとおりです。 新しいプロジェクトのチーム設計レビュー。 かなりの数の穴があるシンプルなデザインが見えます。 何気なく穴とそれらを回避する方法に言及します。 警告は「実生活では決して起こらない」などのコメントでは無視されます 最終的に「決して起こらない」ことが起こる 壊れたプロジェクトの緊急チーム設計レビュー。 だから私は何をしますか?「私はあなたにそう言った」という態度を取り除いても、友人を獲得し、人々に影響を与えるつもりはありません。とにかく、時が経つとステップ3のコメントが忘れられることがあります。私は間違いなく、世界に落とし穴を思い出させる迷惑な害虫になりたくありません。タイタニック号がヨーロッパに向かっているのをよく見ます。 悪いデザインが前進するのを見るとイライラします。また、現在のパスの保留中の危険性を他の人に納得させることができないように思われることもイライラします。私は、チーム会議で最悪のことをします。そこでは、誰もが異なる用語を理解する異なる方法を持っています。また、エゴは理性と思考に勝つ傾向があります。グループの人々にいくつかの新しい複雑なアイデアを使うよう説得するための良い戦術を探しています。
14 design  team 

8
プログラミング言語は、英語に基づいていることからどのような利点がありますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 現在、世界は英語ベースのプログラミング言語でプログラミングされているのは、歴史的/経済的状況のためだけでなく、特に英語の形態にはアルゴリズム的思考に最も適した特性があるためだと思います。しかし、とにかく、これについてあなたの意見を聞くことは興味深いでしょう、特にあなたが多言語であるならば。 私はドイツ語ベースの言語について言及しているものを見ました(たとえば、WW2のおかげで私たちがほとんど知らない最初のプログラミング言語であるPlankalkulを参照してください)、80年代に存在していたロシア語ベースのAlgolも少なくとも紙の上では、バイナリで存在したかどうかはわかりません。ENベースの言語のように完全な単語よりも短縮された単語や奇妙な略語があるため、どちらも少し鈍いように見えました。したがって、他の言語ベースのPLを知っていれば、今日は完全に古風で無関係なものであっても、純粋に理論的なものであっても、それらを見てみると面白いでしょう。 そして、主な質問に戻りましょう。もしあれば、シェークスピアの言語をプログラミングに非常に良いものにしているのは何ですか? (実際、Wikipediaには非英語ベースのプログラミング言語のリストがあります(もちろん、他にどこに?))お気に入り。)

4
面接で本番コードを候補者に見せますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 私はこれが複数回起こるのを見ました: 候補者は会社が好きで、インタビューで成功します。その後、仕事に取り掛かり、最初の日の終わりに、彼はコードベース/プロジェクトが彼が時間を費やしたいものではないことを確信しています。そこで彼はすぐに去ります。 インタビューで候補者をコードベースに紹介すると、この問題を解決できる可能性があると思います。さらに良いかもしれません:「コードのこの部分をどのように改善しますか?」このように、候補が「コードベースに適している」かどうかは明らかです。 このアプローチはどこでも適用されていますか?面接で候補者にあなた自身のコードベースを見せてもらえますか:候補者が面接プロセスの一部として/尋ねた場合?

4
明らかな抽象化のないコード複製
コードの行を見たときに、ロジックにおけるその役割を忠実に説明するテーマの抽象化に適合できないコード重複のケースに遭遇したことはありますか?それに対処するために何をしましたか? これはコードの複製であるため、理想的には、たとえば独自の機能を作成するなどの屈折処理を行う必要があります。しかし、コードはそれを記述するための優れた抽象化を持たないため、結果は奇妙な関数になり、良い名前を見つけることすらできず、ロジックの役割はそれを見ただけでは明らかではありません。それは、私にとって、コードの明快さを傷つけます。明快さを保持し、そのままにしておくことはできますが、保守性が損なわれます。 このようなものに対処する最良の方法は何だと思いますか?

16
過去12か月間に学んだ最も重要な、役に立つ、または啓発的なことは何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 コーディングコミュニティの多くの人々は、継続的な改善、意図的な実践などについて語っていますが、彼らが現在の実践について語っていると、「ゼウスの腰から完全に形成された」ように聞こえます。彼らの意見は時間とともに変化したか、最近学んだことです。 たまに話をしたり、本を読んだり、誰かと話をしたりすると、彼らはもう少し開き、これらの洞察から多くのことを学びます。 それで、もしあなたが過去12ヶ月からあなたがそれが何であるかを学んだことから一つを選ばなければならなかったら?

3
バッチ処理のTDD:実行方法
RoRなどの「赤/緑/リファクタリング」などは問題ありません。 私の仕事は、Pythonや他のカスタムツールでサードパーティからの非常に大きなファイルをバッチ処理することです。 これらのファイルの属性に対するチャーンは高いため、かなり頻繁に適用される多くの修正/拡張機能があります。 期待される結果を備えた既知のテストデータによる回帰テストは存在しません。最新のテストケースが手作業でコーディングされた最後のバッチに対して最も近いものが実行され、爆発しないことを確認してから、スポットチェックと統計テストを適用して、データがまだ正常に見えるかどうかを確認します。 Q >> TDDの原則をこのような環境に取り入れるにはどうすればよいですか?
14 testing  tdd 

6
スーパープログラマのようなものはありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 スーパープログラマに出会ったことがありますか?「通常の」経験豊富な/優れたプログラマーと比較して、彼または彼女をそのように識別するものは何ですか? また。チームの中で彼がスーパープログラマーであると信じている人にどのように対処しますか?彼が実際にそうであるか、そうでない場合の両方? 編集:興味深い入力をすべてのラウンド、ありがとう。いくつかのことを収集できます。 いくつかの定義が現れました。ローカライズされた定義(著者またはその知り合いをスーパープログラマーとして識別した)を無視して、私はいくつかの定義が好きでした。 Thorbjørnの定義:良いチームに相当することを長期間一貫して行う人。 ヘンリーの答えからリンクされた自由電子。卓越した能力を備えた非常に生産的な人。説明は良い読み物です。 自由電子は、コードに関しては何でもできます。完全なアプリケーションをゼロから作成し、週末に言語を習得できます。最も重要なことは、膨大なスパゲッティコードの山に飛び込んで理解し、実際に機能させることができることです。Free Electronを中心にビジネス全体を構築できます。彼らはとても良いです。 最後の定義とは対照的に、天才プログラマーの神話についてジェームズがリンクしたポイントです(ビデオ)。同じアイデアは、rwongのコメントでエゴレスプログラミングとして表現されています。彼らは、そのようなユニークなプログラマー向けに最適化するか、チーム向けに最適化すべきかという反対意見を提示します。 これらの定義は間違いなく異なるので、どちらが良いかについての意見があれば感謝します。または、必要に応じて独自に追加することもできますが、なぜそれらと異なるのかを説明するのに役立ちます。

5
コンピューターサイエンスの学士号をオンラインで提供する非営利大学ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 評判の良い組織によって提供されるオンラインのコンピューターサイエンスには、多くの修士号プログラムがあります。ただし、非営利団体が提供する学士号のみの学位プログラムはほとんど見つかりませんでした。 コンピューターサイエンスの学位と、起業家精神/管理またはアルゴリズム取引のプログラムを探しています。 これまでのところ、適合するプログラムは2つしか見つかりませんでした。 http://www.regis.edu/regis.asp?sctn=cpcis&p1=ap&p2=cs&p3=ol http://depaul.edu 要件: 100%オンラインの学部非営利団体 オプション:理学士号芸術学士号 ボーナス:認識されたABET費用対効果の加速 更新:リストで質問に回答しました。起業家精神(資本獲得、ビジネスの開始)またはアルゴリズム取引を理想的なコンピュータープログラムと組み合わせたオンラインプログラムを知っている場合
14 education 

5
SQLのプログラマーの知識をテストするための質問は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 SQLのプログラマーの知識をテストするための質問は何ですか?質問に対する答えは何ですか?そして、質問に関連する概念を理解する可能性が高い時間の観点から、正解の欠如は何を意味しますか? GOOGLED: SQLチャレンジ
14 sql  hiring 

9
学校でソフトウェア開発コミュニティをブートストラップするにはどうすればよいですか?
私は南フロリダ大学の学生で、コンピューターサイエンスプログラムの教育環境に不満を感じています。今、私は「プログラム設計」を取っています。プログラムを読みやすく保守しやすくするために、ソースコードを関数とモジュールに整理する方法を学ぶ必要があります。代わりに、Cの配列と再帰について学習しています。次の学期では、C ++で教えられる「オブジェクト指向設計」を採用する必要があります(shudder)。 2年前、私はプログラミングに夢中になり、それ以来、できる限り多くのことを学んでいます。別のC ++クラスを受講する見込みがあるため、ほとんど涙が出ます。そのため、同様に野心的な学生に会い、新しい言語を学び、ソフトウェア開発のトピックについて話し合い、他の学生の開発者と協力するために、プログラミングクラブを立ち上げると思いました。 しかし、私のソフトウェア開発経験を共有している他の学生はいないかもしれないことに気づき始めています。それは動機の欠如ではなく、機会の欠如によるものです。私は他のプログラミングクラス(「プログラミング言語」)を1つだけ知っており、実際のソフトウェア開発のクラスはありません。それ以外の人は、CとC ++で簡単なスクリプトを書いた経験しかありません。 他の学生向けソフトウェア開発者と協力したい場合は、自分でトレーニングする必要があることに気付きました。現在、私はクラブをソフトウェア開発のブートキャンプにし、最新のツールと言語を使用してソフトウェアを開発する方法をメンバーに教えることを計画しています。明らかに、非公式のソフトウェア開発コースを開始することは、多くの可能なアプローチを伴う途方もないタスクです。読者への私の質問は 攻撃の計画は何ですか? したほうがいい クラブの仕事と宿題のバランスをとろうとして自分でクラブに講義しますか? CSの教員に、メンバーに関係のない専門知識の範囲内でトピックを教えるよう依頼してください。 私のワークロードを共有できる同情的で経験豊富な開発者を学校内外で見つけようとしていますか? ビデオ講義(MIT OpenCourseWare、Google Tech Talksなど)を表示しますか? 実践的なプログラミングワークショップを開催しますか? 宿題を割り当てますか? 他に何か?


1
オープンソースソフトウェアを含めるためのライセンス要件
オープンソースプロジェクトでは、必要な機能を実装するために、ライブラリ(LGPL)として、およびソースコード(非LGPL)としていくつかのその他のオープンソースライブラリが含まれています。新しいBSDライセンスがプロジェクトに選択されました。含まれているオープンソースライブラリは、新しいBSD、MIT、Apache、およびLGPLライセンスでライセンスされていますが、GPLライセンスコードではありません。 これらの他のオープンソースライブラリはどのようにクレジットされるべきですか? すべてのライブラリライセンスをメインプロジェクトライセンスファイルに含める必要がありますか? [ヘルプ]-> [バージョン情報]ダイアログとドキュメントでプロジェクトWebサイトへのリンクを提供するだけで十分ですか? クレジットは本当に必要ですか?

9
Silverlightは目を楽しませるためだけのものですか、それともビジネスで使用できますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 Silverlightが目を見張るような素晴らしいWebサイトを作成する可能性があることを認めると、それを使用して深刻なビジネス目的を持つ実用的なWebアプリケーションを作成する正当な理由はありますか?私が持っている新しい割り当てにそれを使用したい(それを学びたい)、それは私たちの組織で使用されているデータインターフェースを追跡するウェブベースのアプリケーションを構築することですが、それを正当化する方法がわかりません、自分自身にも。 これについて何か考えはありますか?正当化できない場合は、すでに100回使用した(と思われる)同じ古い疲れたまっすぐなASP.NETアプローチを使用してアプリを構築する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.