タグ付けされた質問 「project-management」

プロジェクト管理は、特定の目標を達成するためのリソースの計画、編成、確保、および管理の分野です。

6
唯一の開発者がいなくなったらWebアプリケーションを維持する
私は末期疾患を患っており、年末までにこの世界にいなくなる可能性が非常に高いです。 私は家族のビジネス(小さな理髪店)で広く使用されているWebアプリケーションを開発しました。私の家族の誰も、プログラミングやシステム管理のスキルを持っていません。私はそれらのスキルを持つ親友もいません。 このビジネスは、年間最大10万の純利益を上げています。実際、企業の利益は3人の従業員(父、母、姉妹)の給与を支払うだけの余裕があり、それらは金融危機により毎年非常に低く、減少しています。実際、私は家族のビジネスの従業員ではなく、通常のソフトウェア開発会社で働いています。空き時間にアプリケーションを開発して、彼らを支援しました。 これまでのところ、他のビジネスでもアプリケーションを使用しているかどうか、またはアプリケーション自体が所有権を失っても気にしません。私はちょうど私の家族のビジネスがそれを使い続けることができることを望みます。それは何かがうまくいかない場合のシステム管理サポートと新しい機能/バグの開発を意味します。 アプリケーションの継続性を可能な限り保証するために、私が講じることができると思われる対策を提供していただけないかとお聞きしたいと思います。 アプリケーションのテクノロジーは次のとおりです。 プラットフォーム:Tomcat(Java)、MySQL、Linux フレームワーク:主にJPAおよびZK

16
開発者のチームにはマネージャーが必要ですか?
バックグラウンド: 私は現在4人のチームの一員です。1人のマネージャー、1人のシニア開発者、2人の開発者です。約3500人のスタッフを抱える組織のために、さまざまな特注の社内システム/プロジェクト(6〜8週間など)を実施しているほか、以前に作成されたシステムに必要なすべてのメンテナンスとサポートも行っています。潜在的に私たちがやってくるすべての仕事をするのに十分な人はいません-人員が不足しています。経営陣はこれを認めていますが、予算の制限により、チームに追加のメンバーを採用する能力が制限されています(たとえ給与を貯金に戻したとしても)。 変更 これにより、現在の場所に残ります。私たちのマネージャーは、牧草地の役割を新しいままにして、チームに空席を残す予定です。経営陣はこの機会を利用してチームを再構築し、チームマネージャーの役​​割が別の開発者と別の上級開発者に置き換わるようにします。彼らの論理は、より多くの開発者が必要であるということなので、ここに資金提供の方法があります(役割の1つは、別の空いているポストから部分的に資金提供されています)。 チームには直接的なラインマネージャーはなく、役割と責任はシニアと(比較的新しいポストの)サービスマネージャーに分けられます(技術知識がほとんどない開発知識/経験があり、焦点が共有されています)他の多くのチームや個人の中で)-フードチェーンの次の実際のマネージャーになる人。 最後の質問は: マネージャーなしで開発チームを実行することは可能ですか?これを経験したことがありますか?そして、どのようなことがうまくいかない/私たちに利益をもたらす可能性がありますか? 理想的には、「光を見る」ことと、この方法で物事を行うことの利点、またはそれに対する議論のためのいくつかのポイントを考えたいと思います。

7
プログラマーは自給自足することになっていますか?
私の現在の職場では、テスターはいません。その理由は、経営陣からの根拠です:「テスターがいれば、あなたはあなた自身のコードをまったくテストしないでしょう」。この種の考え方は、製品の品質に悪影響を与えるようです。自分のコードをテストしている間は、システムを裏返しに知っていて使用方法がわからないという事実だけでなく、見落としがちなことがたくさんあります。それは「間違っています」。専用のテスターが陥る落とし穴を無意識に回避するため、ブラックボックステストは実際には機能しません。私の多くの時間は、実動コードに滑り込み、エンドユーザーによって発見されたバグの修正に費やされます。 問題のシステムは大規模ですが、私だけが開発しています。また、これにより、スケジュールの定義や仕様の作成など、管理業務の一部が私の膝の上に置かれました。 この種のタスクは私の責任ですか?自分は厳密にプログラマーであり、他の何者でもない。そして、これらが私の責任であれば、どの程度ですか?プロジェクトがテスターを必要とするほど大きいのはいつですか?プログラマーは仕様を改良し、プロジェクトの管理について心配する必要がありますか、それともカスタマーサポートを提供する必要がありますか? 注意 私は自分の責任を広げることに反対しているという印象を持っている人もいるかもしれません。そうではありません。より多くの管理職を含む役割を手に入れたいと思っていますが、現在は職務内容にありません。私がそのように正式に雇用されるまで、または追加の職務が私の給与に現れ始めるまで、私は自分を「単なる」プログラマーだと考えます。残念ながら、ジュニア開発者として、管理職への移行はすぐには起こりません。 これまでの優れた答えは、何か追加したいことや共有したい個人的な経験がある場合は、それらを続けてください!

6
バグの修正にわずかな利点がありますか[終了]
以前の同僚から、すべてのバグを修正する必要があるわけではないと聞いたことがあります。バグの優先リストを下るにつれて、そのバグを引き起こすユースケースが不明瞭になったり、顧客満足度が低下したりするためです。ただし、そのバグの修正にはかなりの時間を費やす必要があります。 このコンセプトについて製品の所有者を説得しようとして、良いリソースが見つかりませんでした。私が見つけられたのは、ソフトウェア開発に限界費用があるかどうかの議論だけでした。 バグを修正することで実際にわずかな利点がありますか?この概念を説明する別の用語はありますか?

6
単体テストと統合テスト:どうすれば反射になりますか
私のチームのすべてのプログラマーは、単体テストと統合テストに精通しています。私たちは皆それで働いてきました。すべてのテストが書かれています。私たちの中には、自分のコードに対する信頼感が向上したと感じている人もいます。 ただし、何らかの理由で、ユニット/統合テストを作成することは、チームのどのメンバーにとっても反射になりませんでした。実際のコードと同時にユニットテストを書いていないとき、私たちの誰も実際に気分が悪いことはありません。その結果、私たちのコードベースはユニットテストによってほとんど発見されず、プロジェクトはテストされずに本番に入ります。 それに伴う問題は、もちろん、プロジェクトが本番環境にあり、すでに正常に動作している場合、ユニット/統合テストを追加するための時間や予算を獲得することは事実上不可能であることです。 私のチームのメンバーと私はすでにユニットテスト(の値に精通している1、2)それは私たちの自然なワークフローにユニットテストをもたらす助けていないようです。私の経験では、単体テストやターゲットカバレッジを必須にすると、テストの品質が低下し、チームメンバーの速度が低下します。これは、これらのテストを作成するための自己生成の動機がないためです。また、圧力が緩和されるとすぐに、単体テストは記述されなくなります。 私の質問は次のとおりです。チーム内でダイナミック/モメンタムを構築し、自然にそれらのテストを作成および維持したい人を導くのに役立つ実験方法はありますか?

8
プログラマーの給与を決定するためにどの基準を使用する必要がありますか?[閉まっている]
最近、私はプログラマーの給料を決定する際にどの基準を使用すべきかについての議論の一部になりました。などなど、Stack Exchangeブログでこのテーマに関する素晴らしい投稿を読んで、これに同意することはできませんでしたが、多くの雇用者は説明されたロジックに従っていません。 あなたの経験では、プログラマーの給与を決定するときに最も重要な要素はどれですか?これらの状況で最も頻繁に適用される基準はどれですか?どの基準が最も頻繁に適用されるべきですか?そして最後に、給与を決定する上で正式な教育(大学、大学)はどの程度重要ですか?

14
大規模な非OOコードベースはどのくらい管理されますか?
抽象化は、コードベースを管理するためにオブジェクト指向が提供する非常に便利な機能であるといつも思っています。しかし、大規模な非OOコードベースはどのように管理されていますか?または、それらは最終的に「泥の大玉」になりますか? 更新: 「抽象化」は単なるモジュール化またはデータ隠蔽であると誰もが考えているようです。しかし、私見、それはまた、依存関係の注入とテストのために必須である「抽象クラス」または「インターフェース」の使用を意味します。非OOコードベースはこれをどのように管理しますか?また、抽象化以外に、カプセル化は、データと関数の間の関係を定義および制限するため、大規模なコードベースの管理にも役立ちます。 Cでは、疑似OOコードを書くことが非常に可能です。他の非OO言語についてはあまり知りません。だから、それは大規模なCコードベースを管理する方法ですか?

6
ユニットテストにどれくらいの時間を費やしていますか?
私が働いていた会社では、経営陣はユニットテストのコードカバレッジが99%以上でなければならないと主張しました。これは、コードよりも多くのテストを書くことになりました。実装に1日かかった単一のクラスのテストを書くのに、文字通り3日かかりました。 しかし、その結果、TDD、テストツール、プラクティスなどについて多くのことを学びました。 私がその後働いた会社では、単体テストは未知のものでした。それは誰かが前に聞いたことがあるかもしれないものでした。単体テストの概念を紹介するのに苦労しましたが、効果はありませんでした。 さて、自営業として、私は疑問に思う-あるどのくらいの時間は本当にユニットテストに費やす必要が?ほとんどがiPhone / Android開発者であるため、コードのどの部分をテストでカバーする必要がありますか?

9
ソフトウェアエンジニアリングについて間違った考えを持っていますか?[閉まっている]
私の最新の仕事(むしろインターン)によって提起された質問があります。 状況を整理するために-私は21歳で、大学の2年目を終えてから、システム管理/ QAの仕事を2年ほど経験しましたが、基本的には、 ITセクターが運営されています。現在にさかのぼり、ここに私が英国の主要な研究機関の1つで実習生を募集しています。 私がしなければならないのは、さまざまなテクノロジー(主にAWS / Java / Bash)を使用して内部ツールを作成することです。すべては大丈夫です、私は仕事をしていますが、私は幸せではありません。なぜですか-アドホックな問題で働くことが期待されているからです。それは、設計に時間を費やすことなく、ものをすばやく作成することです。私のマネージャーは、問題が発生するとすぐに問題を「急ぐ」ことが予想されると明示的に述べました。結果として、物事をやり直し、再設計する必要があり、それらはまだ完全ではないことが判明しました。テストに関する限り-最小限に抑えてください。動作しているようであれば、問題ありません。 この仕事のやり方に反対するのは間違いですか?システム全体を考え、さまざまなコンポーネントに焦点を合わせ、それらがどのように相互作用するかを見て、将来問題になる可能性のあるさまざまな「キーポイント」に焦点を合わせたいと思うのは間違っていますか?「迅速な仕事」ではなく、良い仕事をしたいのは犯罪ですか?特定の問題セットに応じて最適なものを選択できるように、問題に適用可能なデータ構造を調査するのは間違いですか、それとも間違った態度ですか?私の理解の限りでは、「ソフトウェアエンジニアリング」の「エンジニアリング」ビットはこれと正確に関係しています。問題の領域を調査し、情報に基づいたソリューションを考え出し、必要に応じて改良しますか。 私は英国のArm'sオフィスでインタビューに行ってきましたが、彼らは彼らのSCRUMルームを見せてくれました。問題の解決には時間がかかる場合があります-SCRUMの通常のこと-「ここ」での実行方法とはまったく異なります ソフトウェア業界全般について間違った考えを構築しましたか?そのことについてあなたの意見を聞きたいです。純粋でシンプルなものを作りたいからといって、純粋にソフトウェア開発を「始めた」のですが、質の高いものを作りたいのです。さまざまなシナリオでソフトウェアが使用されていることを確認したいのですが、完全な証拠を見たいと思います。それがすべてのソフトウェアエンジニアの原動力ではないでしょうか。構文を学ぶだけで誰もがプログラマー/コーダーになることができると思いますが、私にとって本当の楽しみは、現実世界で実行可能な設計を実際に考えなければならないときに始まります。 私は大学の課題を見て、コーディングを直接開始していたため、75%を超えるマークを簡単に取得でき、「ソフトウェア開発ライフサイクル」モジュールを高く評価することはありませんでした。しかし今、現実の世界で、正式なプロセスや、要件が明日変更されるかどうかわからない状況に内在するフラストレーションなしで作業するのがどれほど悪いかを見たとき、 「要件分析を明確に定義していない?) 私は、一部の人々が汚い仕事をするのにコードモンキーを必要とするだけの地位に着いたと信じているのが本当に好きです。これは、ソフトウェアの世界がどのように動作するかということではありません。

11
時間の見積もりがうまくいかない場合はどうすればよいですか?
ケースの推定時間が3日間だとしましょう。2日目には、ケースが増えており、時間の推定が行われたときにカウントされなかった新しいシナリオがポップアップしていることに気付きます。新しい調査結果は、2日間余分にかかります(合計5日間)。これは、開発者として遅かれ早かれ直面する典型的な問題です。 プロジェクトリーダーに新しい納期を通知する場合、どの戦略を使用できますか? 多くの場合、なぜ質問がありますか?新しい配達時間をどのように動機付けますか? 実際、多くのプロジェクトでは、SDLCの分析と設計にあまり時間をかけていません。 編集: 非常に複雑なプロジェクトでは、分析と設計にどれだけ合理的な時間を費やしても、ビジネスルールが複雑すぎるため、常に驚きがあります。しかし、そのような場合、プロジェクトリーダーは複雑さを認識し、予期しない驚きが生じたときに正しい態度をとる必要があると思います。問題は、複雑さを理解していないプロジェクトリーダーにどのように取り組むかです。

6
基本的に構造のないプロジェクトを修正する方法は?
私は、5年以上にわたってほとんどソロでソフトウェアプロジェクトに取り組んできました。始めは混乱でした(私が取り組んでいる3番目または4番目の開発者です)が、混乱は少なくなりましたが、まだ非常に混乱しています。それを制御できるようになるまでの進行速度は氷河期であり、私はそれが現在の状態に落胆し始めていると感じています。 プロジェクトの詳細:これは、ほぼ完全にVisual Basic Classic(VB6)で記述された販売プログラムで、MySQLバックエンドとレポートエンジンがC#で記述されています。C#レポートモジュールは、作業するのが楽しいです。過去数年で書かれたばかりで、Crystal Reports 9ですべてのレポートが作成されました(はい、まだ依存しているレポートがいくつかあります)。 ただし、実際のプログラム自体は完全な災害です。LOCの合計は90,000ほどではなく、コメントの行数は10,000になります(ほとんどはドキュメントではなく、コメントアウトされた古いコードです)。158個のフォームファイルと80個のモジュールファイル。プログラムの一部の機能は単純に非推奨になり、(場合によっては)関連するコードをプログラムから削除せずにそのように表記されるため、それらのどれだけが実際に使用されているのかわかりません。実際に生産的に使用されているのはコードの50%だけだと思います。 あいまいなクライアントが依存している何かを壊しているかどうかわからないという理由だけで、多くのコードに触れることを恐れています。コード全体に地雷が散らばっているようなものです。 プロジェクトには実際には構造がありません。私がこれまで改革する忍耐を持っていたいくつかの場所を除いて、それはオブジェクト指向ではありません。フォーム上のデータを取得する必要がある場合は、データベースオブジェクトをインスタンス化し、関数内でクエリを宣言し、それを実行して、データセットで必要な処理を行います。 プロジェクトの作業を開始したとき、使用中のソース管理はありませんでした。私が取り組んでいる他の人々にそれを使用するように奨励しようとしましたが、私は新しい人であり、人々にSubversionを使用させるための私の試みは失敗しました。同社の主任開発者はここ数年でようやく水銀のバグを発見し、すべての開発者が現在すべてのプロジェクトでソース管理を使用していることを確認しました。 プロジェクトの改革にフルタイムで取り組むことができた場合、まともな進歩を遂げることができ、おそらくプロジェクトを完全に改造するのにどれくらいかかるかを見積もることさえできると思いますが、それは積極的に使用されています火を消す、バグを修正する、機能を追加するなどのように常に求められます。 では、どうすればこのプロジェクトを実際に修正し始めることができますか?別の言語でVB6を使用してみませんか?空き時間にプログラムを書き直してみてください。またはこれは完全に絶望的ですか? 更新 この投稿の後、私は熱心にプロジェクトに戻りましたが、そのようなゆっくりした進歩を見た後、数ヶ月以内に絶望に陥りました。それから、このサイクルを来年かそこらでさらに2、3回繰り返しました。 それから別の仕事に移りました。vb6の長年の経験と、他のテクノロジーの周辺経験だけでしたが、検索は難しく、途中で多くの拒否に直面しました(1年間で約12件のインタビュー)。この状況にある他の人への私のアドバイスは、この要素だけを残すことを検討することです。このような行き止まりの位置にとどまることによってあなたのキャリアに与えるダメージを考えてください。


10
チームに新しい開発者を追加する方法
私は2人の開発者で構成される小さな会社を経営しています。私たちは、クライアントの1人に対して非常に大きなアプリケーションを構築しています。このプロジェクトの開発は1.5年間続いています。 現在、このクライアントは重要なスポンサーを獲得しており、このプロジェクトに関連するイベントを開催しています。だから今、私たちは2ヶ月で期限があり、私たちはそれを見逃すことはできません。 チームに新しい開発者を追加することを考えていますが、彼の統合を支援するために何ができるのかと思います。 これが状況です: ブルックスの法則の限界に近づいています-新しい開発者を追加するときのポイントは非生産的です。 アプリケーションは比較的適切に設計されていますが、実装はいくつかの点で混isとしています(特に古いコード)。 ユニットテストは、より新しいコードに対してのみ行われます。このプロジェクトが始まったとき、私たちは定期的にテストを行いませんでした。 ドキュメントとコメントは不完全です。 アプリケーションは大規模で複雑です。 クライアントは、プロジェクトに関するほとんどすべての詳細を、非常に明確で「プログラマーに優しい」方法で書き留めています。 今すぐ人を追加することをお勧めしますか?もしそうなら、新しい開発者がチームに統合するのを助けるために何ができますか? 編集: スポンサーは来春にインターネットベースのスポーツイベントを開催しています。年の特定の日に開始する必要があります。変更することはできません。 開発者(私は2人のうちの1人)がする必要があるのは: 既存のアプリケーションを完了します(実行する作業の約25%)。 このイベントの組織に不可欠な新しいモジュールの作成(行う作業の約75%)。この新しいモジュールは、メインプログラムのAPIを理解しないと開発できません。 正確な時間の見積もりはできませんが、私たちは危険な状況にあります。

10
同僚にインスピレーションを与えて、より良いコーディング手法を採用しますか?
で、私の時代遅れの同僚の取り扱い質問を、様々な人々がいる同僚に対処するための戦略を議論したくないチームで自分のワークフローを統合します。 可能であれば、現代の技術やツールに無知で、おそらく少し無関心な同僚を「教える」ためのいくつかの戦略を学びたいです。 会社の別の部分で、最近まで比較的孤立して働いていたプログラマーと仕事を始めました。彼は幅広い分野の知識を持ち、最も重要なことには、多くの候補者が欠けているように見える、優れた問題解決スキルを実証しています。 しかし、私が見た実際の(C#)コードはVB6時代への先祖返りです。手続き構造、ハンガリー語表記、グローバル変数(の乱用static)、インターフェースなし、テストなし、ジェネリックの不使用、スローSystem.Exception...アイデアが得られます。 このプログラマーは私よりもかなり古く、少なくとも第一印象では積極的な変化を積極的に求めていません。私はそれが主にトピックがどのようにブローチされるのかという問題だと思うので、私は変化に抵抗するとは言いません。 プログラマーは頑固な人である傾向があり、銃を燃やし、コードのレビューと厳格に施行されたポリシーを厳格に施行することは、私が望む最終結果をもたらさない可能性が非常に高いです。これが新しいプログラマーである若手のプログラマーである場合、「メンター」スタンスを取ることについては二度とは思いませんが、経験豊富な従業員を無知な初心者として扱うことには非常に警戒しています(彼はそうではありません-彼はただ分野の特定の進歩に歩調を合わせました)。 穏やかな説得と非物質的なインセンティブを介して、この開発者のコ​​ード品質基準をデールカーネギーの方法で高めるにはどうすればよいでしょうか?敵対的な状況を作り出すことなく、微妙な段階的な変化をもたらすための最良の戦略は何でしょうか? 他の人々、特にリード開発者は以前にこのような状況にあったことがありますか?どの戦略が興味を刺激し、ポジティブなグループダイナミックを生み出したのでしょうか?どの戦略が成功しなかったので、避ける方が良いでしょうか? 明確化: 質問のすべての詳細を実際に読むことなく、個人的な感情に基づいて回答している人が本当にいると感じています。次の点に注意してください。これは暗示されるべきでしたが、現在明示的にしています。 この同僚は、年齢のおかげで私の「シニア」だけです。彼の肩書き、影響範囲、または組織での年数が私のものを超えるとは言わなかったが、実際には、それらのいずれも真実ではない。彼はLOBプログラマーであり、メイン開発ショップに夢中になっています。それでおしまい。 私は新入社員でも、若手プログラマーでも、一晩で会社を変革するという壮大な計画を持った他の未熟なバカでもありません。私は基本的にソフトウェアプロセスを担当していますが、「リーダー」として働いた多くの人が知っているように、責任は必ずしも組織図と正確に相関するとは限りません。 私は、どうやって自分の道をたどるのか、地獄に行くのか、満水になるのかを人々に尋ねているのではありません。私が望むなら、それを行うことができ、最終的な結果として、この人はresり、そして/または辞めます。私は変化を促進する社会的で協力的な方法を探していることを理解してみてください。 「...グローバル変数...テストなし...投げるSystem.Exception」という言及は、問題が単なる表面的または審美的ではないことを実証することを目的としています。比較的小さなCRUDアプリで機能するプラクティスは、大規模なエンタープライズアプリで必ずしも機能するわけではありません。実際、これまでのコードで実際に統合テストに合格したものはありません。 質問を額面通りに受け止め、私が話していることを実際に知っていることを受け入れ、実際に尋ねた質問に答えるか、先に進んでください。 PS前提に反論するのではなく建設的なアドバイスを提供してくれた人々に心から感謝します。現実世界の体験の方法でもっと多くのことを聞きたいので、私はこれをしばらくオープンにしておきます。

14
ソフトウェアエンジニアが時間を追跡するように奨励する
同僚が問題の解決と機能の実装に費やす時間を追跡するように奨励するにはどうすればよいですか?これを行うソフトウェアがありますが、数字を入力しません。 過去の見積もりと実際に費やした時間を比較することで、チームがプロジェクトの見積もりをより上手にできるようにしたいと考えています。同僚はプロジェクトのスケジューリングにあまり関与していないので、同僚には個人的な利益が見られないと思われます。

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