ソフトウェア工学

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

3
契約請求-「学習時間」をどのように処理しますか?
そのため、必要な技術の75%について確かな経験がある契約を結んでいます。他の25%を学習する時間をどのように処理しますか? 請求時間に合わせて作業しますか?契約の25%を「研究」として公開しますか?私自身の時間で学習しますか(請求されません)?(私にとっては未知のものは大きすぎる契約取らないと顧客を)? これの極端な終わりに、彼がインディアナ大学にいたとき、Mark Cuban(broadcast.comを始めてYahoo!に販売したダラスの億万長者)についての話を聞き続けます。誰かが彼のためにビジネスアプリを作ることができるかどうか彼に尋ねました、そして、彼はすぐに「はい」と言いました...彼はどのようにかわかりませんでした。それで彼は本を買って、夜更かしをして、勉強して、コードを書いた。 私はこの方法で契約をすることを提案していません(ストレス!)が、妥協点があります。それは何であり、あなたはどのように未知の代金を請求しますか?

14
コンピュータサイエンスの修士号を取得することはあなたのキャリアに役立ちますか?[閉まっている]
大学を超えて現在業界で働いているプログラマーの経験に興味があります。私は学問について話しているのではありません(とにかく博士号が必要です)。修士号はありますか?それはあなたのキャリアに役立っていますか?学位取得中に得た知識以外に他の利点はありますか?
32 education 

18
開発チームは、コンシューマーアプリのパフォーマンスの低下をどのように防ぐことができますか?
以前に遅いソフトウェアの原因を尋ねたとき、受け取ったいくつかの回答は、それが社会的および管理上の問題であることを示唆していました: これは技術的な問題ではなく、マーケティングと管理の問題です。...結局のところ、製品マネージャーはユーザーが得ようとしているものの仕様を記述する責任があります。多くの問題が発生する可能性があります:プロダクトマネージャーが仕様にボタンレスポンスを配置できません...プログラマーはそれを補うことができません。— ボブ・マーフィー 人々は適切なサイズのアプリで作業します。動作すると、バグのようにパフォーマンスの問題が忍び込んでいきます。違いは-バグは「悪い」-彼らは「私を見つけて、私を直して」と叫ぶことです。パフォーマンスの問題はただそこにあり、悪化します。プログラマーは、「まあ、私のコードにパフォーマンスの問題はないだろう。むしろ、管理者は私に新しい/より大きい/速いマシンを購入する必要がある」と考えます。実際、開発者が定期的にパフォーマンスの問題を探しているだけの場合(実際には非常に簡単です)、単純にそれらを削除できます。— マイク・ダンレイビー それで、これが社会的な問題である場合、顧客に遅いソフトウェアを出荷することを避けるために、組織はどのような社会的メカニズムを導入できますか?
32 performance  ui 

12
企業が、請負業者としてではなく、社内従業員として私を望んでいると言うのはなぜですか?[閉まっている]
コンテキスト 私は専門分野で請負業者として仕事を探していますが、短期の請負業者として働くことで収入を減らし、利益を減らすことを望んでいます。 問題: 企業は、私が知的財産上の理由で社内従業員である必要があると言っています。 質問: 私の仕事はすべて彼らが所有しているという契約書に署名してもらうのは簡単ではないでしょうか? 私が請負業者として働いている場合、私の価値が低下したときに手放すことができ、多くのお金を節約できます。 ここで何が欠けていますか?

10
早期出荷、出荷なし[クローズ]
これは「自己への注意」として始まったので、欲求不満があまりにも明白であり、文章が星よりも少ない場合はごめんなさい... 最近、私の心の最前線にいた3つの主要なテーマ: 動機 学習(好奇心) 実行(作成) 私は今、モチベーションとインセンティブを数ヶ月間研究しています。人々が物事を行うために持っているかもしれないさまざまな動機が無数にあるようです(私はそれは些細な音に聞こえますが、私と一緒に耐えます)。なぜ自分がすることをするのか、やりたいがしないのはなぜしないのかを知るのに必死だから、私はそれに本当に惹かれました。 私はポール・グラハムの優れたハッカーと画家の本を読んでいる最中です。彼は、ハッカーと画家はどちらも「メーカー」であるため、非常に似ていると主張しています。画家は絵を描きます。ハッカーはソフトウェアを作成します。画家は、必ずしも美しい絵を描くために塗料の化学組成を理解する必要はありません。そして、ハッカーは必ずしも美しいソフトウェアを作成するために1と0を知る必要はありません。 グラハムは、異なるコンピューターサイエンスの分野を区別します。 一部の人々は数学を勉強しているようです 一部の人々はコンピュータ自体を勉強しているようです ハッカーはソフトウェアを作成しています。 違いは非常に重要です。一部の人の動機は、美しいものを作ることです。そして、他の人の動機は好奇心から学ぶことです。特定の動機は私には明らかですが、好奇心は少し明白ではないようです。私は確かに、自分ができることすべてについて学ぶことを一見して切望できない渇きを持つ好奇心の強い人だと考えています。しかし、これはまさに問題が発生する場所です。 とても怖いのは、必死に物を作りたいということです。私は必死に物事をしたいです。本を書きたいです。絵を描きたいです。歌を作りたいです。私がしたいん旅のようなものを。しかし、奇妙なことは、私も物事を学びたいということです。私はギターを弾くことを学びたいです。美術史について学びたいです。哲学と文学についてもっと学びたいです。 重要なのは、学習と実行のバランス、つまり学習と作成のバランスです。 ある事柄について、それを行う前にどれだけ学ぶべきかはわかりませんが、私は自分が常に反対側ではなく常に片側にいることを確信しています。今のところ(そして、私がいつもそうであったと言える限り)、私は学習者であり、実行者ではありません。私は素晴らしい本を読みました。私は何年もギターを練習してきました。私はプログラミングの勉強に数え切れないほどの時間を費やしました。 しかし、私は本を0冊書いています。私は0曲を作曲しました。0個の美しいプログラムをコーディングしました。私は0個の美しい絵を描きました。0の実行可能なビジネスを開始しました。 このすべての恐ろしい部分は、おそらく世界中に無数の未完成の芸術作品があることです。これは、私が始めた芸術作品の制作や完成を決して行わないという、社会と文化に対する私の反人道的な復ven ですか?おそらく最悪の部分(これは私の自然な傾向であることを除いて)は、私がf *** ingがよりよく知っているという事実です。「Getting Things Done」や「Making Ideas Happen」のような本を完成させたばかりです。私は、物事を行う方法と物を作る方法についての無数の知恵の言葉を集めて合成しました。 あなたがやりたいことをすることができずに人生を経験することの恐怖を想像してください。これがあなたが苦労している(そしてうまくいけば克服する)ものであるなら、共有してください。そうでない場合...おそらくいくつかのおいしい同情は私が気分が良くなります。 [更新:考えを共有してくれたすべての人に迅速に感謝したいだけです。ディスカッションを奨励し、他の人が同様の経験に関連する中心的な問題を作り直すことを期待して、私は意図的に質問を幾分自由に残しました。うまくいくと思います...役に立ちました。再度、感謝します。]

6
見栄えの良いWebサイトのデザインを学ぶにはどうすればよいですか?[閉まっている]
私は中程度の能力を持つWeb開発者です。必要な場所に何かを置き、必要に応じてそこにいくつかのJQueryのものを置くことができます。ただし、自分でWebサイトを作成している場合(これを始めています)、どのようにデザインするかわかりません。誰かが私の隣に座って画面を指さして「この写真をそこに置いて、テキストを」と言ったら、私はそれをとても簡単に行うことができます。しかし、私の選択した色とテキストを使用して自分のサイトを設計すると、幼児が発明したように見えます。 誰かが私が見ることができるウェブサイト/本を知っていますか、または幼児以外のウェブデザインの基本に関するヒントを持っていますか?

16
BASICに触れると心が傷つくと思いますか?[閉まっている]
BASICを以前に経験したことのある生徒に優れたプログラミングを教えることは事実上不可能です。潜在的なプログラマーとして、彼らは再生の希望を超えて精神的に傷つけられています - エドガー・W・ダイクストラ 私はダイクストラに深い敬意を持っていますが、彼が言った/書いたすべてに同意するものではありません。35年前にダートマスBASICの実装について書いたリンクされた論文のこの引用には特に同意しません。 私の同僚や友人のプログラマーの多くはBASICを使い始めました。以下の質問には、多くのプログラマーがBASICでのプログラミングの最初の経験があることを示す回答があります。私の知る限り、多くの優秀なプログラマーがBASICプログラミングを始めました。 リソースがいっぱいのマシンで実行されているVisual BasicまたはBASICの他の「現代の」方言については話していない。「おもちゃ」コンピューターで実行されている昔のBASICについて話しています。コンピューターには数百個しかないため、わずかなバイトを保存するために文字列として計算する必要のない小さな数字を保存することをプログラマーは心配しなければならなかった、またはより強力な機能がないために計算されたgotoを使用する必要があります。また、何かをしてプログラマーに創造性を強いる前にプログラマーが考えることを必要とする他の多くのことを行う必要があります。 リソースが限られたマシンで昔のBASICの経験があった場合(今日のシンプルなマイクロコントローラーは1975年のコンピューターよりもはるかに多くのリソースを持っていることを念頭に置いて、BASICはより良い解決策を見つけるためにあなたの心を助けると思いますか?エンジニアやBASICがプログラミングの暗黒面にあなたを引きずり込み、精神的に傷つけたのですか? 初心者プログラマーがすべて間違っていることができ、プログラムが大きな問題なく実行できるリソースがいっぱいのコンピューターで実行されているプログラミング言語を学ぶのは良いですか?それとも、プログラマーがどこを間違えないかを学ぶ方が良いでしょうか? BASICについて、あなたはより良い/より悪いプログラマーになるために何を助けましたか? 2KB(仮想)マシンで実行されている古いBASICを来たるプログラマーに教えますか? 確かに、BASICへの露出だけが悪いです。おそらく、他のプログラミング言語と同様に、現代のBASICはプログラマが深く考えられない機能を提供するため、現代のBASICはあまり役に立たないという私の意見を共有するかもしれません。 追加情報:なぜBASICなのか?

13
低レベルのプログラミング-私にとってそれは何ですか?[閉まっている]
何年もの間、「低レベル」言語と考えるものを掘り下げることを考えてきました。私にとって、これはCとアセンブリを意味します。しかし、私はまだこれをする時間がありませんでしたし、これまで必要だったこともありません。 必要性が生じていないので、主題を勉強する予定のある時点をスケジュールするか、永遠に計画を破棄する必要があると感じています。 私の位置 過去4年間、私は変化する可能性のある「Webテクノロジー」に注力してきました。また、私はアプリケーション開発者であり、変化することはほとんどありません。 アプリケーション開発では、ユーザビリティが最も重要だと思います。ユーザーが「消費」するアプリケーションを作成します。これらのアプリケーションが使いやすくなればなるほど、より多くの価値を生み出します。 使い勝手を良くするために、次のことが実行可能であると信じています 優れた設計:よく考え抜かれたユーザーインターフェイスからアクセスできる、よく考えられた機能。 正しさ:正しく実装されていなければ、最高のデザインは価値がありません。 柔軟性:アプリケーションAは絶えず進化する必要があるため、ユーザーは、Aが実装できる新しい機能を備えた別のアプリケーションBに切り替える必要はありません。同じ問題に対処するアプリケーションは、機能ではなく哲学が異なるはずです。 パフォーマンス:パフォーマンスは、優れたユーザーエクスペリエンスに貢献します。アプリケーションは理想的には常に応答性が高く、(頻度に基づいて)合理的に高速にタスクを実行します。ユーザーが認識できる以上のパフォーマンス最適化の価値は疑問です。 パフォーマンスを除いて、低レベルのプログラミングはそれを助けてくれないと思います。しかし、パフォーマンスのために低レベル言語でアプリ全体を書くことは、私にとって時期尚早な最適化です。 私の質問 低レベルのプログラミングは何を教えてくれますか?他の言語は教えてくれませんか?アプリケーション開発にほとんど役に立たない何かが足りないのですか、それとも単なるスキルですか?私がCとアセンブリの価値に疑問を抱いていないことを理解してください。私の日常生活の中で、私はその世界の複雑さをすべて取り除いて、私のために管理していることを非常に嬉しく思っています(ほとんどがC / C ++で記述されたレイヤーとアセンブリ自体によって)。概念がまったく見当たらず、それは私にとっては新しいことかもしれませんが、頭に詰め込む必要のある詳細だけです。それで私にとっては何ですか? 私の結論 回答ありがとうございます。誰も私を驚かせた人はいませんが、少なくとも今は、この必要な領域が必要になるまでこの領域を削除することを確信しています。 私の理解では、最近のプロセッサーが今日のCPUで使用されているときにアセンブリーを記述することは、不必要に複雑であるだけでなく、Cのカウンターパートよりも実行時のパフォーマンスが低下するリスクがあります。手作業による最適化はOOEによりほぼ不可能ですが、コンパイラーが自動的に実行できるすべての種類の最適化は得られません。また、使用可能なコマンドの小さなサブセットを使用するため、または最適化されているため、コードは移植可能ですが、おそらく1つのアーキテクチャでのみ動作します。 Cを書くことは、以前ほど必要ではなくなった。Cでアプリケーションを作成する場合、テストおよび確立されたライブラリとフレームワークを同様に使用します。これにより、文字列コピールーチン、ソートアルゴリズム、および大学での演習として役立つその他の種類の実装が不要になります。私自身のコードは、タイプセーフを犠牲にして高速に実行されます。私は通常のアプリ開発の過程で車輪を再発明することにも、コアダンプを見てデバッグしようとすることにも熱心ではありません:D 私は現在言語とインタプリタで実験しているので、何か公開したいことがあるなら、私は思うC ++がうまく機能するかもしれませんが、実用的な概念をCに移植します。 繰り返しますが、皆さんの回答と洞察に感謝します。


16
独自の「その他のユーティリティ」ライブラリはありますか?あなたが最も誇りに思う部分は何ですか?[閉まっている]
私たちの多くは、頻繁に使用するツールとユーティリティを使用して、独自の小さな個人ライブラリを維持していることを知っています。 私は16歳の時から私のものを持っているので、かなりの規模に成長しました。私が書いたもののいくつかは、その後フレームワークに追加されました。LINQのかなり前に、遺伝的アルゴリズムで使用する式ツリーの独自の小さな実装を作成しました。しかし最近、私はそれを経験して.NET 4.0にアップグレードし、興味を再燃させました。 だから私はあなたがあなたのライブラリを何のために使うのか興味があります。たぶん、便利な小さなスニペットのためにいくつかのクールなアイデアを得て、それらを私たちの間で共有することができました。 だから私の質問は: その他のユーティリティライブラリはありますか? あなたが最も誇りに思っている部分とその理由は? 必要に応じてコードの例を挙げてください :-)


20
ソフトウェアアーキテクチャの理論と実践に関するベストブックですか?[閉まっている]
私の会社には、プログラミングからアーキテクチャに移行したい開発者が数人います。ソフトウェアアーキテクチャの理論と実践に関する最高の本は何ですか?可能であれば、カバー写真を含めてください。 一般的な本、および特定の技術に関連する本を自由に含めてください。

25
プログラマーとして、タイムシートを作成する必要がありますか?[閉まっている]
タイムシートは私が決して好きではなかったものですが、それでも私の会社の要件であるものです。彼らはあまり私を気にしませんが、彼らは本当に他の人々のギアを本当に磨くようです。いくつか質問がありますが、フィードバックは素晴らしいと思います。 あなたが請負業者ではないと仮定して、タイムシートを作成する必要がありますか?(それは私には理解できます)。 使い慣れている、または使用しているタイムシートの粒度はどのくらいですか?(例:すべてのエントリは2時間未満でなければなりません)。 タイムシートは、仕事を受け入れなかったり、現在の仕事を辞めたりする理由を考慮しますか? クライアントへの請求を行わない場合、組織内の管理はどのようにタイムシートを正当化しましたか?
32 management 

10
中間プログラミングステータスに到達[終了]
私はソフトウェアエンジニアであり、VBA(試行錯誤でしたので、その「実際の」体験をあえて考えません!)、Perl w / CGI、C#、およびASP.NETでプログラミングを担当していました。後者の2つは学部生で、「現実の世界」への入り口があります。私は大学を2年退学し、私が言及した言語で5年の経験(合計)を経験しました。しかし、私の履歴書に関して言えば、C#の場合は2年、ASP.NETの場合は1年未満しか下がれません。 私はC#を知っているように感じますが、「この方法は何をするのですか?」前の方法。」そのため、湾があることを経験的に知っていますが、どのように橋渡しをするのか正確にはわかりません。Project Eulerでプログラミングを開始し、デザインパターンに関する本を手に入れましたが、それでも前進するのではなく、毎日水を踏むように感じています。 だからといって、自分が進歩したとは思わないということではなく、毎日来る限り、山の頂上が遠くに見えるということです。 私の質問はこれです:どのようにこの高原を克服しましたか?どのくらいかかりましたか?これを支援するためにどのような方法を提案できますか? Code Complete、The Mythical Man Month、およびC#経由のCLR、第2版を読みました。私の質問は次のとおりです。 編集:中級レベルのプログラマーのプロジェクトでこの質問を見つけました。議論に追加されると思います(ただし、私の質問に取って代わるものではありません)。そのため、「詳細情報」として質問に追加しています。

1
キャレットが累乗ではなくXORに使用されたのはなぜですか?
この構文上の問題に直面したことがある人にとっては本当に問題ではないというわけではありません^が、広く受け入れられている数学的な累乗演算の代わりにキャレット()をXOR演算として使用することに起因する大きな混乱が見られます。 もちろん、キャレットの(誤った)使用法を説明し修正する場所はたくさんありますが、キャレットに異なる意味が与えられた理由についての明確な情報源はありません。 それは利便性の問題でしたか?事故?明らかに、推論はさまざまな言語で異なる可能性があるため、あらゆる点で情報は洞察に満ちています。

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