スケジュールが非常に厳しいプロジェクトに取り組んでいます。コーディングとテストを行う時間があまりなく(毎日12時間以上働いているにもかかわらず、それでも遅延します)、結果は非常に壊れやすくなっています。そのコードも非常にジレンマです。
このプログラムは、多くの国にあるお客様の会社のすべてのオフィスで使用されています。ユーザー/テスターからのエラー、または一部の機能の使用方法がわからないというエラーについて、真夜中に定期的に電話を受けます。
このプロジェクトに3年間携わった後、私は非常にストレスを感じ、エラーや電話が非常に心配なので、よく眠れません。
少し質問があります:
ユーザーが世界中にいる場合、午前4時でベッドにいるときに電話がかかることを期待することはできません。私は電話を禁止し、このシナリオをより効果的に提供できる他の通信手段(電子メールまたはいくつかの問題追跡DB)に切り替えます。しかし、オフィスでも予定された電話のアクセシビリティスケジュールを作成します。そうしないと、オフィスにいる間は何もできません。
これにより、貴重な睡眠と休息が得られます。
このプロジェクトが3年間タイトにスケジュールされている場合、誰かが何かが実際に機能していないことを疑っていたはずです。多分それは誰かがプランナーに何か、特にあなたのユーザー/クライアントとあなたのマネージャーにこれが死の行進のプロジェクトであることを告げる時についてです。それは3年間開発されており、遅れており、バグがたくさんあります。計画は完全に再評価されるべきであり、既存のコードはリファクタリングされるべきであり、そして多くの問題が解決されるまで新機能は開発されるべきではありません。
予測可能で耐えられるものにする開発方法を確立します。あなたが開発者である場合、彼らが入ってくるときに電話をかけることはあなたがどんな仕事もすることを許可しません。中断するたびに、中断したところに戻るまで15分かかります。電話はoffである必要があります。あなたは開発者なので、少なくともあなたの机の上に。あなたがそれを行うよりもすべての呼び出しの後にあなたを気にしないだろう誰かに電話をリダイレクトすることができるなら。
ある種のインシデント/バグデータベースを確立します。毎朝、仕事に取り掛かり、新しいインシデント(自分、チーム、またはクライアント/マネージャーと共に)に優先順位を付けるときは、少し時間をかけてください。この優先順位の後書きでそれらを解決するようにしてください、そして電話さえ考えようとしないでください。
電話をオフにすることができず、ユーザーにいつでも電話をかけることができないことをユーザーに伝えることができない場合はどうでしょうか。ユーザーの電話番号をお持ちの場合は、反対のことをお勧めします。電話がかかってきたら、通知して、解決したら電話をかけることを通知します。次に、彼らが寝ているときに彼らに電話をかけます。彼らが寝ていると彼らが言った場合、彼らの返事を覚えておいて、彼らが次回深夜に電話するときにそれを使ってください。通常、人々は自分の言語をよりよく理解します。
彼らがオフィスの電話を使用していて、あなたが携帯電話を使用しているので、勤務時間外に彼らを呼び出すことができず、電話をかけることができない場合、オフィスを離れた後、携帯電話の電源を切り始めます。あなたは12時間滞在していて、あなたは値する仕事を休むことになります。携帯電話が個人用の携帯電話である場合は、会社が新しい携帯電話を入手し、ユーザー/クライアントに通知する必要があります。彼らがあなたの個人的なものであなたに後で電話をかけ始めたら(彼らはあなたのビジネスであなたに連絡することができないのであなたもどちらか:
既存の問題を解決するまで、新しい機能を開発しないでください。優先度の高いものと中程度のもの。
あなたがチームの唯一の人でない限り-その場合、あなたはおそらく燃え尽き症候群への道の半分以上のところにいます-'ポケットベル'と交代してください。それは今のところ負荷を軽くするはずです。
次に、技術的な負債を返済するフェーズをスケジュールする必要があることを経営陣に提案する必要があります。つまり、テスト、コードのクリーンアップ、リファクタリングです。そして、それはすぐにスケジュールされる必要があります。一般的に、これはしばらくの間新しいコードなしが存在することを意味します。これはリファクタリングまたはテストではありません。そうでない場合は、悪化するだけです。
そのフェーズに入ると、コードベースの最も厄介なセクションを選び、それをリファクタリングし、クリーンアップして、たわごとをテストするテストを記述します。呼び出しが停止するか、開発者が気にせずに処理できるようになると、機能の別のフェーズに備えます(必要な場合)。この時点で、新しいコードでテストを記述し、回帰を実行し続けます。今のところ、ソフトウェアは書き直しの道のりのように聞こえます。
上司との会話のセールスポイント:
正直言ってみましょう。これまで、あなたの会社はこれが何かをするのに十分なほど大きな問題であるとは考えていませんでした。あなたは燃え尽きそうです。どうやら、管理職の誰も実際の開発経験はありません。探し始めます。
生産性の小さな向上を達成できるいくつかのテクニックがあるかもしれませんが、仕事量の5%増加は、今のあなたにとって役に立たないよりも悪いです。ここで欠けている本当のスキルはシンプルで基本的なものです。
いいえと言う方法を学ぶ
あなたが拒否すべきであるとあなたがすでに知っている不合理な期待すべてにノーと言ってください。あなたは彼らが何であるか知っています。それだけは明らかです。今はノーと言えないなら、できる場所で仕事を見つけましょう。賢い雇用者はこのスキルが望ましいと思うでしょう。
何も変化しない場合、プロジェクトが失敗するであることを理解することから始めます。これは、必要なことを行うための最も重要なステップです。開発者は、1日12時間の作業を維持できず、有用なコードを生成できません。あなたは愚かな過ちを犯し、実際には進歩を失うところにたどり着きます。なぜなら、あなたは前日にあなたがしたことを修正するために毎日始めなければならないからです。あなたはすでにそこにいるようです。
正気を取り戻す前に対処する必要のある2つの主要な問題があります。
状況を修正するには、経営陣の賛同が必要です。問題は、彼らが痛みを感じていないこと、そして彼らの注意を引くために脳卒中で病院に行きたくないということです。最初のステップは、あなたがどこにいるか、そしてあなたが下にあるプレッシャーを経営陣に説明することです。彼らがそれを取得しない場合、管理の別のレベルを上げます。または、人事部門にあなたの労働条件を説明してください。 1日8時間を超えて長時間働くことを要求するmayは法律違反であり、人事部門は確実にそれを知っています。
経営陣があなたの嘆願を聞いたとすると、次のアクションを実行する必要があります。
重要なバグ修正リリースが完了したら、次は計画です。すべての機能とバグ修正に優先順位を付ける必要があり、保留中のワークロードのサブセットを中心にリリースを計画する必要があります。ワークライフに正気を取り入れると、ストレスレベルが下がり、品質が上がり、全体的に効率が上がります。
あなたは私がFalse Economyのケースであると考えることに苦しんでいるように見えます機能しないものに固執するほど、問題は悪化します。
主な指標:
プロジェクトのスケジュールが非常に厳しいときに機能するコードを書くことが可能かどうか知りたいのですが。
短い答えはイエスです。長い答えは、それは複雑であり、経営者とおそらく顧客にも代わって認識の大幅な変更が必要であり、あなたの側での非常に大きな努力が必要です...しかし、私はすぐにこれらすべてに戻ってきます。
同じ時間でより良いコードを書くにはどうすればよいですか?
現実的には、時間を節約しながら完璧な結果を得ることができるものなら何でもできるということがあなたの前提であるなら、それは不可能です。詳細を正しく把握することに集中するために時間をかける必要があるため、コードの実装にかかる時間を増やすテクニックを適用する必要があります。これには時間がかかり、ここであなたの偽りの経済があなたを最も傷つけています。ただし、より良い方法で物事を行うことで、コードの品質が向上し、その結果、システムの脆弱性が減少します。繰り返しますが、これについては後で詳しく説明します。
眠りにつくとき、どうすれば心を清め、仕事の心配をしないのですか?
不安は睡眠不足を引き起こし、睡眠を失うことは不安を引き起こします。これは悪循環であり、チェックされないままにしておくと不安の悪双子につながる可能性が高くなりますうつ病。慢性的な睡眠の喪失は、おそらく運動不足とおそらく栄養不足の習慣と組み合わされていると考えられ、すべてが慢性疲労。これはすべて、職場で直面しているすべての問題と、家庭生活で直面する可能性が高い結果として生じる問題の兆候です。これは、偽りの経済の最大の証拠が存在する場所であり、おそらく最初に対処する必要がある最も深刻な問題です。
また、どんな提案も歓迎します。
私は最初に私は医療専門家ではないことを述べなければなりません。しかしながら、私はあなたがあなたの投稿で説明した経験を通して生きてきた、そして私がそれに対処することがいかに難しいか、そしてそれに対して何かをすることがどれほど重要であるかを知っています。私はうつ病、不安、慢性疲労、ストレス、およびそれらに伴う他のすべての小さな厄介な生活を経験してきたので、これらの経験に基づいてアドバイスを提供します。
医学的に関連するすべてのことを終えたので、あなたの仕事についてあなたが何ができるかを見てみましょう:
実際のプログラミング関連のものに関して:
最も重要なのは、自分自身から始めて、期待を管理する必要があることです。あなたは人間であり、いつでも多くのことをすることができます。上司の期待を管理する必要があり、上司または直接自分の顧客に顧客の期待を管理してもらう必要があります。これは、行う作業に真剣に優先順位を付けることを意味します。新機能のための時間とバグのための時間を割り当て、期限が遅れると想定します。納期遅れの可能性に対処する場合は、重要な機能のセットのみを提供することを約束し、残りの機能は「可能であれば良い」として残します。次回の配達日には、このプロセスを再度実行し、前の配達の「Nice to have」の優先順位を上げます。これを最小の開始点として開発方法論に組み込み、数回の配信後にレビューして、プロセスを調整して効率を向上できる場所を確認します。最大の効率は、ライフスタイルの変更から得られますが、ドキュメントと自分とエンドユーザー間の通信に関連するオーバーヘッドを削減するなど、作業を効率化するためにできることは常にほとんどありません。
これらすべてに積極的に取り組む。あなたは上司に、両方が協力して問題を本当に改善できることを示します。これは、最終的にはあなたと会社全体の両方によく反映されます。
また、今は思い切った決断をしないでください。健康状態とワークロードに対処するまで待ち、しばらくの間どのように進むかを確認します。あなたの心がより明確になり、あなたがより良い場所にいると感じたとき、それは滞在する価値があるのか、それとも次に進む時間なのかを決定する時です。私が基本的に言っているのは、一度に1つの問題に対処し、残りがあなたの注意が必要になるまで少し煮込むことです。
スケジュールが厳しい場合は、 Do n't Repeat Yourself について強迫する必要があります。最も使用されている方法を特定し、それらが頻繁に再利用されるようにします。
今日は何に取り組むかを計画し、それを書き留め、それに固執します。一度に覚えておく必要のあるものを7つ以下のアイテムに制限してください。
私はもう一歩進んで、他の作業を繰り返すのを避けます。可能な限り、言語のライブラリを使用してください。可能であれば、サードパーティのライブラリを使用します。
書くのに時間がかかるように見えるかもしれませんが、1つのことだけを行うメソッドを目指してください。私は方法を、意思決定または物事を行うことに限定します。結合が減少する一方で、コードの凝集度は増加するはずです。テストの方が簡単だと思うはずです。これは、漸進的な分解に適しています。
可能な限り簡略化します。テンプレート、チェックリスト、および些細なことについて考えないようにするためのテクニックを使用します。
中断を避ける必要があります。中断ごとに、スケジュールでは約15分かかります。時間を守ってください。
これが長期にわたる場合は、パフォーマンスが遅れ始めたら家に帰ってください。常に12時間稼働している場合、パフォーマンスは8時間稼働する可能性が高いです。パフォーマンスがどれほどひどく低下しているのか気付かないかもしれません。運動と休息をとるために、さらに4時間かかります。あなたが昼寝をするか、昼食後に数時間休むことができるかどうかを確認してください。
私があなただったら、私はマネージャーと話し、彼らが設定している締め切りは非現実的であることを説明します。あなたがそのように作業を続けると、彼らはすべてがうまくいくと思います、彼らはあなたが抱えている問題を認識せず、あなたは毎日ますます不十分なコードをシステムに追加することになります。さらにあなたの仕事を複雑にします。
別の方法として、いつでも他の仕事に切り替えることができます:-)
あなたがするすべてを追跡する
時間をかけて、すべてのことと、あなたとチームが費やした時間を追跡します。これは、別のことをする必要があることを示すために経営陣にもたらすものになります。あなたが何をしているか、他の人から報告された問題の修正にどれだけの時間を費やしているかという冷酷な事実がない場合、変更を加える必要があることを彼らに納得させるのははるかに困難になります。これが正確であるためには、毎時間全員が追跡する必要があります。これは、過去3週間で80時間を費やして、同じ時間でゼロからゼロから再構築できたシステムを修正したことを意味します。
物事を変えようとする
収集した追跡と、ソフトウェアを改善するための計画をまとめるために他の人が作成したすばらしい提案を使用してください。最も問題を引き起こしているソフトウェアの部分を選択してください。あなたが物事を通常の扱いやすいペースにするものだと思う計画をまとめてください。仕事に時間をかけてください。
出発する時間になるかもしれないという事実を覚悟してください
経営陣が物事を変えてあなたと協力する気がない場合は、次に進むことを考える時がきたかもしれません。私はあなたが燃え尽きていると他の人に同意します。履歴書とポートフォリオの準備を始めます。状況は改善し、先に進む必要はありませんが、経営陣が変更を加えることに同意しない場合は先に進みます。あなたの心と体の健康は、あなたから多くを奪っている仕事にとどまることよりも重要です。
神の愛のために、あなたのプロジェクトマネージャーはどこですか?
生産的な時間を確立するのに役立つプロジェクトマネージャーがいない場合は、必要です。開発時間の確保、スコープのクリープの制限、期待値の管理などに専念できる人が必要です...
あなたは生活のために創造的な仕事をします。顧客/ユーザーとあなたの間に障壁がない場合、どのように効果的に開発に集中できますか?
良いPMは、多くのことに役立ちます...
1。「ハイパワー」カードをプレイするには:
あなたのユーザーは新機能のためにあなたを悩ませていますが、バグ修正リリースに集中するために本当に時間が必要です。ユーザーと話をする必要があると誰が言ったのですか?契約書を作成するのはあなたの責任ですか?顧客の期待を管理するのはあなたの仕事ですか?契約の条件を決定する最終決定力はありますか?
番号?それでは、なぜ顧客とのやり取りに対して単独で責任を負うのですか?開発は難しく、集中力が必要です。開発時間を取り戻す能力が必要であり、適切なPMと適切な言い訳でそれを行うことができます。
PMがあなたに比べて何をしているかに関係なく、顧客が仕様の範囲外の変更についてあなたを悩ませ始めたら、ただ言ってください。
「仕様外の交渉交渉は私の給与水準を上回っています...」
それは丁寧な言い方です、私はs ***を与えません。
それらに「スコープクリープドッグ」を傷つけることによってそれをフォローアップします。
「仕様を変更したい場合は、私のPMに連絡する必要があります。」
さあ、放っておいて。ユーザーが開発者と直接対話する能力は、奪うことができる特権として許可されています。そうでない場合は、経営陣が失敗しています。
2。期待の管理101
あなたがそのようなクレイジーなスケジュールで作業できると彼らの正しい心の中で誰が思っていますかand 24時間年中無休のテクニカルサポートを処理します。あなたの時間は貴重であり、あなたの技術に専念する必要があるため、誰かがあなたのために立ち上がる必要があります。
これは、顧客だけでなく、勤務先の会社にも当てはまります。顧客の場合、超過している場合はいつでも質問できます...
「このサービスは契約書に書かれていますか?」
そうでない場合は、リクエストを拒否する権利があります。誤解しないでください。顧客を満足させるために、それ以上のことをするのはいいことですが、期待されていることと、顧客に好意的に与えていることの違いを知らせることも同様に重要です。
あなたが働いている会社のために、あなたは誰かがメッセージを運ぶ必要があります...
「私に求められている仕事は私の給与水準と同じですか?」
つまり、彼らはあなたの時間の50%を費やすために年間60kを支払い、はるかに低い支払いポジションである電話技術サポートに費やしていますか?これはブローチにとって危険なトピックなので、PMがあなたのために良いケースを作るために信頼できるものである必要があります。彼に対して行うべき議論は...
「私は年間6万人の給料を受け取っていますが、私の潜在的な生産性の半分は男性の仕事に費やされています。」
または、皆さんは私を雇い、低学年のポジションを埋めるために私の時間の半分を費やすようにさせて、その投資から喜んでお金を失っています。信じられないかもしれませんが、あなたの可能性を最大化することで、長期的に彼らはより多くのお金を稼ぐことができます。
ビジネスに関して言えば、Win-Winの状況を提示できれば、会社の立場を変えるのは非常に簡単です。あなたはこれを続けるために交渉の主人である必要はありません。もちろん、会社のリソースが限られている場合、これはあなたに逆効果をもたらすかもしれません。
。誰もが時々チアリーダーを使うことができました
良いPMは当然人と人になります。彼らがすることの核心は人との関係です。良いPMは顧客に伝える能力を持っています彼らが聞きたくないものであり、それでも彼らを幸せに歩かせます。
彼らはまた、時が厳しくなるときの道徳的なサポートの素晴らしい源にもなり得ます。 PMあなたが尋ねる場合に対処するには、単純な士気向上は多すぎてはいけません。あなたの側に誰かが必要であるか、そうでなければ士気が下がって仕事が圧倒的に感じられます。
期待を管理する責任を負う組織内の上級者がいない場合、あなたの管理は失敗しており、上級者はおそらくプロジェクトがどれほど悪いかさえ気付いていません。
それが疫病のような企業で働くことを避ける主な理由です。私は幸運にも小さな会社で働くことができました。私は上層部の誰かがいるので、自信を持って発言する必要がある人と問題を正直に話し合い、必要に応じて行動を起こすことができます。
あなたはあなたの側に誰かがあなたをビジネス要件に沿った状態に保ち、気晴らしを管理するのを手助けする必要があります。それがなくて、将来的にそれを見つける希望がない場合は、頑張ってください...
今できることは
これは、少なくともあなたがこれからやることが2人の人々によって承認され、うまくいけばそれらのコードを改善することを意味します。
他に何ができるかは、管理者次第です。あなたは彼らにこの質問を答えとともに見せたいかもしれません!
電話を禁止し、厳密な「バグはバグトラッカーにのみ行く」ルールを実装します。次に、その日の最初の動きは、新しく入力されたバグのトリアージ、複製のクリーンアップ、優先順位付け、そして最初にバグ修正に取り掛かることです。そして、あなたのバグ修正が実際にバグを修正し、新しいバグを導入しないことを確認してください。
最後の部分はどのように行うのですか?既存のコードにテストケースを追加する。関数がある場合は、期待どおりの入力と出力を行い、ジャンクを与えるとうまく機能しないことをテストします。何らかの自動UIテストを使用して、統合とパフォーマンスを全面的にテストします。
コードの問題を解決するために、午前3時に実際にベッドから出ているわけではありません。もしそうなら、あなたはあなたが得るすべてに値する。
すごいすごいすごい!馬のカウボーイを抱きしめてください。あなたはそこで開発がすべて間違っているようです。コーディング中に、ここにいくつかのソフトウェアの基礎が欠けています。ええ、あなたの基本をブラッシュアップします...人生ははるかに簡単になります。
今学校に戻る
*必読
私はTODOリストを作成し、必要に応じて並べ替え、無条件にその順序を守りたいと思っています。
次に何をすべきか迷っている時間を減らすだけで、どれだけの時間を節約できるかに驚かれることでしょう。
pomodoroテクニック を使用してみてください。また、私は 個人ルール を使用して、あなたが役立つと思う良いコードまたは悪いコードを書いているかどうかを確認します。
あなたやあなたのような開発者は、医師や弁護士のようなソフトウェア開発ライセンスを要求する理由として私が考えることができる唯一の理由です。そうすれば、最小限の基本的なプログラミングの良い習慣に従っていないためにライセンスを取り消すことができます。これは、業界を無能な人から保護するだけでなく、有能なプログラマーを、彼らのプログラマーが良い習慣に従っていないと主張するマネージャーからも保護します。
参考までに、実質的に誰もが厳しい締め切りに取り組んでいます。ただし、何をしているのかを理解している開発者は、長期的に見れば作業が早く完了するため、ベストプラクティスに従います。そうすれば、3年連続で12時間勤務する必要がなくなります。