ソフトウェア工学

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

6
Pythonバイトコードにコンパイルする他のプログラミング言語がないのはなぜですか?
Javaには、JavaバイトコードにコンパイルしてJVMで実行できる複数の言語があります。Clojure、Groovy、およびScalaは、私の頭の中で覚えている主要な言語です。 ただし、PythonはPythonインタープリターによって実行される前にバイトコード(.pycファイル)に変わります。私はただ無知かもしれませんが、Pythonバイトコードにコンパイルする他のプログラミング言語がないのはなぜですか? 誰も邪魔しないからか、そうするのを難しくする固有の制限や障壁があるのでしょうか?

9
スプリントプランニングを楽しくする方法
私たちのスプリント計画会議は面白くないだけでなく、実に恐ろしいものです。 会議は退屈で退屈で、永遠にかかります(1日ですが、ずっと長く感じます)。 開発者はそれについて文句を言い、今後の計画を恐れます。 私たちのルーチンはかなり標準的です(優先順位によってスプリントバックログに挿入されるユーザーストーリー>>ストーリーはタスクに分解されます>>タスクは時間単位で見積もられます>>繰り返し)、何が間違っているのかわかりません。 どうすれば会議をもっと楽しくすることができますか? ... 詳細情報のリクエストへの応答として、さらに詳細を示します。 バックグラウンドアイテムがスプリントキックオフの前に挿入および優先順位付けされないのはなぜですか? ユーザーストーリーは確かに優先されます。それらをタスクに分解するまで、どれだけ時間がかかるかわかりません!ここの(優れた)回答から、タスクをまったく推定すべきではなく、ユーザーストーリーのみを推定すべきであることがわかります。タスク(ストーリーではなく)を見積もる理由は、ストーリーの見積もりがひどく間違っているためです。しかし、それはまったく異なる質問の主題だと思います。 開発者が文句を言うのはなぜですか? 会議は長いです。 会議は単調です。ストーリーごと、タスクごと、苦労(はい、苦労)にかかる時間とその内容を推定します。 タスクを見積もると、ユーザーストーリーの推定が無意味に見えます。 会議が長ければ長いほど、部屋に集中できなくなります。集中力の低い同僚ほど、会議に時間がかかります。再帰的なヘイトスパイラルが発生します。人々を集中させるために会議を2日間に分割することを検討しましたが、開発者はそれを聞きませんでした。計画の1日で十分です。これで2つになります。 私たちの問題の一部は、(より正確な推定を得るために)非常に小さな詳細になることです。しかし、おおよその見積もりをするときは、大したことはありません! 質問を要約するには: 私たちは何を間違っていますか? 一般的に会議をより楽しくするために、他にどのような方法がありますか?

13
ソフトウェア開発者は、年間の設備予算を獲得すべきですか?[閉まっている]
私は新しい会社で新しいポジションを探しています。私は過去に(この会社ではなく一般に)一部の人々に、最新の状態に保つために新しいコンピューターを購入するための年間予算が与えられたと話しました。 今、この質問がここで質問する価値があると思うのは、Joelがすぐに出てきて、雇用主がお金で買える最高の設備にお金を払うべきだと言うからです...当然のことです。 Joelテストから:より良いコードへの12ステップ 9.お金で買える最高のツールを使用していますか? コンパイルされた言語でコードを書くことは、庭のさまざまな家庭のコンピューターではまだすぐにできない最後のことの1つです... 一流の開発チームはプログラマーを苦しめません。能力の低いツールを使用することによって引き起こされる小さな不満も追加され、プログラマは不機嫌で不幸になります。不機嫌なプログラマは非生産的なプログラマです... 業界に手当や予算を提供するような基準があるかどうか、誰もが知っていますか? 私はこのような会社で働いたことはありませんが、交渉のために指輪でこれを投げるべきだと考えています。理にかなっているようです。MS、Google、Appleなどの大企業はこれをどのように処理しますか?「はい」と言う場合、範囲を指定します... $ 5kから$ 10,000までの数字を聞いています。私には高く見えますが、ちょっと私は喜んでそれを取るでしょう。

5
重み付けされたランダムなアイテムを取得する
例えば、私はこの表を持っています + ----------------- + | フルーツ| 重量| + ----------------- + | りんご| 4 | | オレンジ| 2 | | レモン| 1 | + ----------------- + ランダムなフルーツを返す必要があります。ただし、リンゴはレモンの 4倍、オレンジの 2倍の頻度で摘み取る必要があります。 より一般的なケースでは、それはf(weight)頻繁に起こるはずです。 この動作を実装するのに適した一般的なアルゴリズムは何ですか? または、Rubyにすぐに使える宝石がありますか?:) PS 現在のアルゴリズムをRuby https://github.com/fl00r/pickupに実装しました
51 algorithms  ruby  math  random 

8
スタックした場合、どれくらい早くスタックオーバーフローに頼るべきでしょうか?[閉まっている]
私は、iTunes U CS193pコースを通じてiOSの開発を自己学習していますが、しばしば立ち往生しています。私は自分自身を解き明かそうとしましたが、メソッドが欠落していたり​​、委任のような概念全体を実際に得ていなかったとしても、間違っていることを理解するのに何時間もかかるかもしれません。 時間を浪費しているのではないかと心配しているので、先に進むために立ち往生したらすぐにStack Overflowに行くほうがいいでしょう。 あなたの経験では、すぐにStack Overflowを要求すると、学習プロセスが妨げられたり、改善されたりしますか?

17
1〜2人の開発者向けのシンプルな問題追跡ツール[終了]
私は現在(Javaで)プロジェクトにほとんど一人で取り組んでいます。私は何をすべきかについて高レベルの指示を与えてくれるアドバイザーを持っているので、ほとんど一人でいます。ただし、彼女は時々、いくつかの受け入れテストをコーディングします。 私は以前に問題トラッカーを使用したことはありませんでしたが、私は見つけた可能性のあるバグをログに記録し、それらを集中的に追跡できる場所が欲しいので、今すぐ使用することを考えていました。課題トラッカーをEclipseと統合することは可能でしょうか? 制約は次のとおりです。 それはオープンソースプロジェクトではありません。私たちのコードは誰とも共有されません! Subversionを使用しています。 独自のSubversionサーバーがあり、この同じSubversionサーバーを使用し続けます。 無料でなければなりません。 少なくとも2人のユーザーを許可する必要があります。 何を選ぶべきかについてのアドバイスは何ですか?利用可能な最も簡単なソリューションを探しています。

18
よく知られているが、プログラミングに関する古い本の有効期限はありますか?[閉まっている]
読んだ後、すべてのプログラマが読むべき書籍に関する質問を次のように不要とみなされるべき場合、私は疑問に思います: 完全なコード:1993年の第1版。2004年5月の第2版 アルゴリズムの紹介(Cormen、Leiserson、Rivest、Stein):1990年の第1版。2001年9月の第2版。2009年の第3版 実用的なプログラマー:1999年10月 コンピュータプログラムの構造と解釈:1984年の第1版。1996年9月の第2版 Cプログラミング言語:1978年の第1版。1988年4月の第2版 これらの本はすべて非常に古いようです。現代のコンピューティングと、それらの本が書かれたときの現在のものとの間に違いはありませんか? 例えば、私の61歳の先生は非常にうまく物事を説明しますが、彼が25年前と今教え始めた間に行われたすべてを考慮することを忘れています。 それらの本についても同じではありませんか?現在の慣行により近い原則と技術を教える現代の本はありませんか?それとも、今日でも有用で関連性があると思いますか?

12
戸惑うことなくオープンソースプロジェクトをリリースする[クローズ]
私はかなり長い間、かなり大きなオープンソースプロジェクトに独力で取り組んできましたが、それをリリースしたいところに近づいています。しかし、私は独学であり、プロジェクトを適切にレビューできる人を本当に知りません。 数年前、私はそれをリリースしたフォーラムで(重大な意味で)ほぼばらばらになった小さなコードをリリースしていました。コードは機能しましたが、批判は正確ではありましたが、残忍でした。それがきっかけで、あらゆるもののベストプラクティスの検索を開始し、最終的には自分がはるかに優れた開発者になったと感じています。私は数え切れないほど完璧にしようとして何度もプロジェクトのすべてを調べてきました。 私は自分のプロジェクトを信じており、多くの人々を助ける可能性を秘めていると思いますし、それで面白い方法でいくつかのクールなことをやったと感じています。それでも、私は独学なので、私の自己教育にはどのようなギャップがあるのだろうと思わずにはいられません。前回私のコードがばらばらにされた方法は、繰り返したくないものです。数え切れないほどの時間を費やしてきたプロジェクトをリリースすることに対する2つの最大の恐怖は、独学や、さらに悪いことに、クリケットの音でリリースしたために、特許的に明らかなものを見逃したため、まったく恥ずかしいと思います。 同様の状況にあった人はいますか?私は建設的な批判を恐れていませんが、それが建設的なものであり、私がいかに失敗したかについての暴言ではありません。StackExchangeにコードレビューサイトがあることは知っていますが、大規模なプロジェクトにはあまり設定されておらず、プロジェクトの断片の一部を投稿する場合、コミュニティがまだ十分なフィードバックを得ることができるとは感じませんでした(私は1つのファイルで試してみました)。恥ずかしさやプロセスに没頭することなく、少なくともある程度の成功をプロジェクトに与えるにはどうすればよいですか?

10
インタビュー中に製品の設計上の決定について尋ねることは賢明ですか?[閉まっている]
私は最近インタビューの質問について考えていて、私が過去に持っていた悪いインタビューの経験について考えてきました。特に注意すべき点の1つは、チームが製品でSpringよりもEJB 3を使用する理由をインタビュアーに尋ねたところです。インタビュアーは、「SpringがJavaソフトウェア開発のすべてではなく、すべてを終わらせるわけではないので、この仕事をしたいかどうか」と大声で私の顔を引き裂いた。これに応じて、私は彼に、これはおそらく私にとって仕事ではないだろうと話し、私はすぐにインタビューから出ました。 インタビューの冒頭で、会社の離職率が高く、彼らが働いていた製品は最初にModula-3で作成され、その後Perlに、最後にJavaに移植されたと通知されました。Java、EJB、SQL、JDBCをカバーする技術的な質問の10ページの小冊子を手渡され、私が働いた技術スタックについて質問されました。質問するように促されたとき、私は彼らに彼らの技術スタックについて尋ね、合理的な答えを得ることが合理的であると感じました。 質問: インタビューで採用されたアーキテクチャの選択について調査するのは良い考えですか?そうでない場合、なぜですか? 私自身の観点から、インタビューは双方向のプロセスです。インタビュアーが私の技術スキルをテストしている場合、私は彼らに同じ質問をするすべての権利を持っています: 1)ソフトウェア開発に対する彼らの考え方と態度を理解します。2)そのアプローチが、私がその種の問題にどのようにアプローチするかと一致しているかどうかを判断します。 怒ったインタビュアーがインタビュースキルが不十分で、インタビューが双方向のやり取りであることを忘れた可能性があります。これを聞かれたら、理にかなった答えを出したでしょうが、インタビューなしで、頭が上下に会話せずに上下するだけの穏やかな降伏状態になろうとはしませんでした。
51 java  interview 

3
コンビネーターとは何ですか?また、それらはプログラミングプロジェクトにどのように適用されますか?(実用的な説明)
コンビネーターとは何ですか? を探しています: 実用的な説明 それらの使用例 コンビネーターがコードの品質/汎用性を改善する方法の例 私は探していません: 作業の完了に役立たないコンビネータの説明(Yコンビネータなど)

9
コンパイラの警告を無視するべきではないとチームメートを説得するにはどうすればよいですか?
私は、Eclipseを使用したJavaでの巨大プロジェクト(依存関係の管理が不十分なために簡単に分離できない数十のミニプロジェクトの絡み合った組み合わせに似ていますが、それは別の議論です)に取り組んでいます。コンパイラの設定からの警告を既にオフにしており、プロジェクトにはまだ10,000を超える警告があります。 私は、すべての警告に対処し、可能であればすべての警告を修正し、安全であると見なされていると思われる警告を抑制しようとすることを強く支持しています。(実装/オーバーライドされたすべてのメソッドを@Overrideとしてマークするという私の宗教的な強迫観念も同じです)。私の最大の主張は、一般に警告はコンパイル時に潜在的なバグを見つけるのに役立つということです。おそらく100回のうち99回の警告は重要ではありませんが、大きなバグを防ぐために一時的に保存することで頭を悩ますことは価値があると思います。(私の他の理由は、コードのクリーンさを持つ私の明らかなOCDです)。 しかし、私のチームメイトの多くは気にしないようです。偶然それらに出くわしたときの警告をときどき修正します(しかし、同僚が書いたコードに触れると注意が難しいことを知っています)。現在、クラスよりも文字通り多くの警告があるため、警告の利点は非常に最小限に抑えられています。これは、警告が非常にありふれたものであるため、誰もそれらのすべてを調べる必要がないためです。 チームメイト(またはその勢力)に警告に対処する(または完全に調査した場合は抑制する)必要があることをどのように納得させることができますか?それとも、私は自分がクレイジーだと確信する必要がありますか? ありがとう (PS私が最終的にこの質問を投稿するように私に促したことを言及するのを忘れたのは、私が警告が生成されるよりも遅く警告を修正していることに悲しいことに気づいたということです)
51 java  eclipse 

11
重要な生死に関わるシステムでソフトウェアはどのようにテストされますか?
飛行機は、たとえばウェブサイトとは対照的に、特定のシステムの障害が完全に受け入れられないシステムです。飛行監視などのエラーにより、自動操縦装置が誤作動して潜水する可能性があるためです。明らかに、これは、ボーイングとエアバスの優秀なエンジニアがオートパイロットをチェックして、ダイビングが完全に受け入れられ安全な操縦であると突然判断しないことを確認しているために起こりません。または、コンピューターがクラッシュし、新しいフライバイワイヤー航空機のパイロットが飛行機を実際に飛行できなくなった可能性があります。もちろん、(ソフトウェアと航空機の両方の)クラッシュを防ぐために、これらのシステムにはさまざまな安全手順と冗長性が組み込まれています。 ただし、一方で、ソフトウェアが完璧ではないことは明らかです。オープンソースとクローズドソースの両方のソフトウェアは定期的にクラッシュし、最も単純な「Hello World」プログラムだけが失敗しません。航空、医療、その他の生死の業界でソフトウェアシステムを設計するエンジニアは、ソフトウェアが失敗しないようにテストできます(失敗した場合、少なくとも正常に失敗します)。 「みんな、ボーイング/エアバス/(他の会社)で働いていますが、そうではありません!次のフライト/病院訪問で楽しんでください。」
51 testing 

25
仮想マシンを使用した開発に関する考え方[終了]
私はスタートアップの開発リーダーとして働き、開発にVMを使用することを提案しました。各開発者がテスト/開発用のVMを備えたデスクトップを持っているということではなく、すべてのVMが管理され、ローカルまたはリモートからでもマイクロPC(ChromeOSの誰か)で開発者が作業するサーバーラックがあることを意味しますコンピューター。 私にとっての利点は、非常にスケーラブルで、長期的には安価で、管理しやすく、ハードウェアを最大限に活用できることです。短所については、セットアップをセットアップ/メンテナンスする人が必要になる以外、特定のショートッパーについて考えることはできません。 私はあなたの何人かがあなたの職場で同様の設定をして、あなたの意見に重みをつけることができることを望んでいました。ありがとう。

3
アサートまたは単体テストはより重要ですか?
アサートと単体テストの両方は、コードベースのドキュメントとして、またバグを発見する手段として機能します。主な違いは、アサートが健全性チェックとして機能し、実際の入力を確認するのに対して、ユニットテストは特定のシミュレートされた入力で実行され、明確に定義された単一の「正しい答え」に対するテストです。正当性を検証する主な手段として、アサーションと単体テストを使用する相対的なメリットは何ですか?どちらをもっと強調すべきだと思いますか?

20
若いプログラマーがメインフレームに興味がないのはなぜですか?[閉まっている]
メインフレームの重要な問題は、サポートするプログラマのコホートが減少していることです。通常、これはプログラマーの供給の低下が、供給と需要の法則を介してプログラマーの供給の増加を引き起こす給与の増加によって相殺されるという点で問題にはなりませんが、これが本当に起こっているのかはわかりませんメインフレーム。 彼らはまだ多くの企業にとって重要なインフラストラクチャを形成していますが、単純な事実は、サポート人口を投入し続けるために十分な数の若いプログラマーがやって来ないことです。 どうしてこれなの?メインフレームが若いプログラマーにとって魅力的でないのはなぜですか?
51 mainframe 

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