コードの「建設的な」批判はどの時点で役に立たなくなりますか?


39

私は最近、ジュニア開発者として始めました。チームで最も経験の浅い人の1人であると同時に、私は女性でもあります。男性が支配的な環境で働くことには、あらゆる種類の課題が伴います。私は自分の仕事に対して不当な教訓的な批判をしすぎているように感じるので、最近問題を抱えています。最近の出来事の例を挙げましょう。

チームリーダーは忙しくて、私が作ったいくつかのブランチをプッシュすることができなかったため、週末まで彼らに連絡しませんでした。私は自分のメールをチェックしましたが、実際には作業を行うつもりはありませんでした。変数名に基づいて2つのブランチが拒否され、エラーメッセージがわかりやすくなり、いくつかの値が構成ファイルに移動しました。

これに基づいてブランチを拒否することは有用ではないと思います。週末に多くの人が働いていましたが、私が働くとは言いませんでした。事実上、変更を行って再送信する時間がなかったため、一部の人はおそらくブロックされました。私たちは非常に時間に敏感なプロジェクトに取り組んでおり、クライアントにとって透過的なものに基づいてコードを完全に拒否することは役に立たないと思われます。私は間違っているかもしれませんが、時間があればパッチタイプのコミットでこの種のことを処理する必要があるようです。

今、私はいくつかの環境ではこれが標準であることがわかります。しかし、批判は平等に分配されているようには見えず、それが私の次の問題につながるものです。これらの問題のほとんどの原因は、私が誰か他の人が書いたコードベースにいて、最小限の侵入を試みているという事実によるものでした。ファイルの他の場所で使用されている変数名を模倣していました。私がこれを述べたとき、私は「他人を真似しないで、正しいことをしてください」と率直に言われました。これはおそらく私が言われたかもしれない最も有用なものです。すでにチェックインされているコードが受け入れられない場合、何が正しいか、何が間違っているかをどのように伝えるのですか?混乱の原因が基礎となるコードに由来するものであった場合、私はそうは思わない

私はこの状況で本当に選び抜かれ、イライラしていると感じています。期待される標準に従うことについてはずっと良くなったし、たとえば、以前は行方不明だったエラーチェックを追加するためにコードの一部をリファクタリングするとき、私はそうしなかったと言われただけでイライラするエラーを十分に冗長にします(これに基づいてブランチは拒否されました)。そもそも追加したことがない場合はどうなりますか?それがとても間違っていた場合、どのようにして最初にコードに入りましたか?だからこそ、私はあまりにもひたむきだと感じています。私は常にこの既存の問題のあるコードにぶつかって、模倣したりリファクタリングしたりしています。私がそれを模倣するとき、それは「間違っている」。そして、それをリファクタリングするなら、私は十分なことをしないことを恐れる(そして、私がずっと行くなら、バグを導入するなど)。繰り返しますが、これがこのような問題である場合、コードがコードベースにどのように侵入するかわかりませんが、

とにかく、どうすればこれに対処できますか?私は女性だとトップで言ったことを覚えておいてください、そして、これらの人は他の人のコードをレビューしているとき、通常は礼儀について心配する必要はないと確信しています、そしてそれは私に生産性を低下させています。私はそれについて上司に話したら、彼は私が環境などを扱うことができないと思うだろうと心配しています。


18
私は(この会社の)後輩の男で、同様の二重基準を感じています。コードベースはしばしばがらくたのように見えますが、それでもはるかに高い標準に従うことが期待されています。まあ、それは過去に作られた「死の行進」のためにがらくたが入ったことが判明しました。また、どうやら私は自分より5歳若く見えます。同僚が私の本当の年齢を知ったとき、私は一晩でずっと賢くなった。人間は不完全な猿です。あなたが彼らと昼食を共有し、彼らのジョークに笑うが、それを無理しないでください。みんなはすべてを浮気と解釈します。
仕事

4
@ジョブ:ええと、コードベースががらくたである場合、それはより良いはずです、したがって、あなたのコミットはより高い標準を持たなければなりません。そうしないと、さらにくだらないことになりますよね?:)
マッケ

@Marcus、あなたは正しいですが、本当に役立つのは、ルールが明確に述べられていて、同じルールが全員に適用されている場合です。また、質問者が述べたように、同じコード標準へのブレンドについても言及する必要があります。後輩がスケープゴートとして放されているのを見たことがあります。管理者は、エンジニアがあまりにも多くのバグを作成したと不満を述べました。管理者が固定期限を与えているため、エンジニアはまともな仕事をすることができませんでした。そのため、何かがうまくいかないときは、責任を負わせて手放すために最も多くのねじ込みをしている若い男が常に存在します。en.wikipedia.org/wiki/Dedovshchina
ジョブ

3
私が際立ったものの1つは、「彼らは男に慣れているので、礼儀を使わない」ということです。それが明らかに差別の問題でない限り、あなたはそれを吸い取る必要があると思います。建設現場に行き、他のフレーマーとは異なる扱いを受けることを期待しますか?強化する。男性が支配する環境で仕事をする場合、さまざまな社会的規範に対応し、調整する必要があります。そんなに「敏感」にならないでください。
リグ

1
私はこれが数年遅すぎることを知っていますが、これは将来の読者にとって重要なトピックだと思います。チームのリーダーが単によく知っている可能性を排除しないでください。彼はおそらくもっと年上で、問題のあるスタイルの懸念に対する直観を開発しました。丁重にあなたが理解していない問題について明確化を求める、および悪意のあるとして同僚のドライな性格を誤解しないように注意してください。
weberc2

回答:


41

あなたが女性として選ばれている可能性はありますが、あなたがジュニア開発者であり、仕事に慣れていない可能性もあります。

エラーチェックと表現力豊かなメッセージは重要です。コードに何かを追加する場合は、それがチームの標準に合っていることを確認してください。同様に、他の人のコードを変更する場合は、可能な限り改善するようにしてください。全体を書き直さないでください。しかし、あなたが見つけたよりも少しきれいにしておくようにしてください。

チームが従うコーディング標準の書面バージョンはありますか?そうでない場合は、すべて書き留めておくことをお勧めします。あなたが犯した間違いを書き留めて、チェックリストにまとめ、レビューのために変更を送信する前に参照できるようにすることで、努力の先頭に立つことができます。副作用として、その書面による標準を使用して、矛盾する場合は将来の拒否をアピールできます。

あなたとチームリーダーの間に理解不足があるかもしれません。あなたが彼と1対1の会議を依頼し、あなたが改善するために何ができるかを議論することはあなたにとって役に立つかもしれません。「やるべきことのニュアンスがまだ足りないように感じます。ジュニア開発者として成長し、改善したいと思っています。そこに着くのを手伝ってもらえますか?」そして何が起こるかを見てください。


アンナの回答は一般的に非常に合理的です。+1。あなたが働いている場所で仕事をすることは私を夢中にさせると思います。経営陣は会議の締め切りを気にしませんか?コードが機能する場合は、出荷してください。後でクリーンアップします。ええと、月曜日にクリーンアップして、次のリリースでプッシュすることもできます。あなたのマネージャーによるこの行動は、私の職場では決して飛びません。私は、政治ではなく、期限を満たすことに集中できてうれしいです。状況が良くなり、解決策が見つかることを願っています。:)
jmort253

11
@ jmort253ありがとう。:)とはいえ、「コードが機能する場合、それを出荷する」ことは危険な態度になる可能性があります。動作するコードは常に良いコードとは限りません(ただし、壊れたコードよりも確かに優れています)し、長期的にはコードの品質が重要です。他の期限が表示され、より緊急の事態が発生するため、後でクリーンアップすることはほとんどありません。これには「技術的負債」という用語があります。
アダムリア

@Anna、適合コードの重要性に同意します。Linus ThorvaldsがLinux用に提出されたパッチをその場で拒否するには、非準拠コードで十分であると読んだことがあります(ただし、今のところ見つけることができません)。

@ Anna / Thorbjorn-期限がある場合でも、顧客が望むことをしなければならないことがあります。あなたは単にあなたが大文字の誤りをきれいにしたかったので、彼/彼女が15,000ドル相当のビジネス収益を失ったかどうかあなたのクライアントはあまり理解しません。残念ながら、技術的負債を100%排除することは常に可能とは限りません。住宅ローンを借りるのではなく、夢の家を買うのに十分な現金を貯めるのに40年待つのに似ています。確かに、あなたは自由で明確になりますが、あなたは一生を怪しげな地主に対処しているでしょう。
jmort253

オープンソースプロジェクトは、利益プロジェクトとは異なります。多くのオープンソースプロジェクトは、常に利益を得る/失うとは限らないため、より厳しい基準を設ける余裕があります。独自のプロジェクトにはさまざまな目標があり、それらのビジネス目標が優先される場合があります。コードが準拠すべきではないと言っているわけではありません。単に、あなたがしなければならないことをし、展開後に戻って問題を修正するための規律を持たなければならないだけです。
jmort253

25

このようなものを少し個人的に取っているようです。しないでください。この種のことは常に起こります。

チェックインを拒否する理由(変数の命名、コメントの品質、構成の場所)は、私にはかなり標準的なようです。

それのタイミングはあなたのチームリーダーの決定であり、私があなただったら心配しません。週末に誰かがブロックされた場合、チームリーダーはチェックインを許可し、後で修正するよう依頼することができます。他の開発者をブロックする可能性があるにもかかわらず、彼がそれをキックバックすることが適切であると感じた場合、それは彼の責任です。

チームリーダーが他の人を真似せずに正しいことをするように言っているのは、コードベースを改善するためのイニシアチブを与えようとしているようです。それは良い兆候です。彼はあなたにあなたの判断を使うと信じているので、先に進み、あなたが正しいと知っていることをしてください。それは、他のすべての人のコードを変更しなければならないという意味ではありませんが、あなたが書いたコードの品質に責任を持つべきであることを意味します。


2
+1あなたは関係と感情に焦点を合わせています。あなたが作業しているプログラマーは非常にドライに聞こえますが、彼らはコードの問題に専念しています。これは私が働いていたプログラミング環境ではかなり一般的です。性別を問わずこれを見てきました。
マイケルデュラント14年

14

他の回答への追加:

主任開発者として、私は通常、ジュニア開発者の方が好きです。なぜなら、彼らは数年働いている人たちよりもずっと柔軟だからです。(私のplplスキルはそれほど良くありません...まだ。)

しばらく働いていて(まともな給料を稼いで)、コードのレベルに満足している(品質は改善できても)人を変えるのは非常に難しいです。あなたが彼らをより良い/偉大なプログラマになるように導こうとしても、彼らは気にしません。彼らはコード工場で働いて幸せです。

あなたのような新しい人、OTOHは、通常、ガイダンスを求め、何が正しいかを知りたいと切望しています。また、彼らは報酬を吸収し、より良い方法に変更することができます。それらは他の方法で設定されていません。

これらのアドバイスを心に留めて、日常生活の一部にすると、すぐに既存のコードベースの多くより優れたコードを書くことになります。

そう ...

..何かをする可能性があるからといって、より多くのフィードバックを得ている可能性があります。:)


これは多くの良い点をもたらします。
sevenseacat

13

なぜなら、あなたはジュニア開発者だからです。

あなたの説明から、あなたはチームリーダーがそれを認識しているので、あなたは標準に従わなかったように聞こえます。

解決策は簡単です。

  • それが標準であれば、それに従ってください。
  • 標準を理解していない場合は、説明を求めてください。
  • 標準または説明の解釈がチームリーダーのものと異なる場合は、説明を求めてください

それから戦いをしないでください。チームを「間違った」リーダーにしようとすると、勝ったとしても負けます。適切なレッスンを学び、成長し続けます。


1
彼女が説明するように、人がひどいことを扱っているときに、「T」に何らかの「標準」に従うことを試みることは、あまり役に立たないでしょう。定義とセマンティクスに関する無限の議論になるでしょう。
MrDatabase

4
@MrDatabase私にとっては、あんなふうに聞こえない。少しうるさいかもしれませんが、悪魔は細部にまでこだわっていることが多く、標準をすり抜けると、アプリ全体が急降下する可能性があります。
アダムリア

3
基準が尊重されるべきであることは事実です。しかし、彼女はそれが実際には標準ではないことを明確に示しています(以前の開発者はそれを順守していませんでした)。したがって、彼女の同僚が「標準」を彼女に課している(「ちょっと見て...矛盾しているように見えるが、コードベースを改善しようとしている」などのことは言わない)は偽善的で役に立たない。同僚がこのように行動する場合、別のよりスマートなアプローチをとる必要があります。
MrDatabase

@ user15859:あなたが私の答えに言及している場合、それは私の意図ではありませんでした。アンナが答えで言ったのとまったく同じことを言ったと思います。違反は意図されていません。あなたが言及した標準違反は長期的なメンテナンスにとって重要であり、標準の適用範囲のあいまいさはチームリーダーと一緒に解決する必要があります。あなたが怠けているなら、あなたはここに投稿しなかっただろう。あなたが無能だった場合、あなたはそんなに気にしません。私はあなたがそれらのどちらかだとは思わない。
スティーブンA.ロウ

1
彼女はWoot4Mootが彼のコメントのフレーズとして「怠inessで無能な」と言ったのを言っていると思います。OPに実際に何が起こっているのかという彼女の解釈に基づいて行動を起こす余地と余裕を与えるので、あなたの答えは素晴らしいと思います。
jmort253

10

著者のメモ

何年か後; この状況をより正確に反映するように編集しました。これらの状況でニュアンスについてより多くを学んでいるので、答えにもっとニュアンスを入れています。「黒か白」の答えを主張するのは簡単ですが、私たちは皆、それがそれほど単純ではないことを知っています。私の答えはそれを反映しています。

あなたが説明したことから。あなたが経験している行動はあなたの性別とは何の関係もないようです。それは、あなたが性別に関連した治療を受けていないということではありません(あなたがそうでないことを願っています)。

私がチームリーダーだったとき、私は皆を平等に扱いました。性別のために誰かをひどく扱うための技術の余地はありません。それがあなたに起こっている場合、私はそれをどのように処理するのか分からない。

チームリーダーが男性と女性を等しく扱うことを信頼することが重要です。彼がそうでない証拠がある場合、古い格言が当てはまります:あなたの環境を変えるか、あなたの環境を変える。

同様に、私は彼が性別を尊重せずに平等にすべての人を扱うことを意味します。彼が彼の仕事を正しくしているなら、あなたは彼が他の誰かを批判するのを見るべきではありません。そして彼らは彼があなたを批判するのを見るべきではありません。他の人の前で、プライベートに行動を修正する前に最後の5分間を費やしただけでも、チームリーダーが自信を示すことは非常に重要です。

次に、提起した問題について説明します。

彼が設定した基準を満たしていないコードをチェックインしたため、彼はあなたのブランチを拒否しました。私が彼の靴にいたなら、私は同じことを同じ方法でやったことはなかったでしょうが、私の部下(奇妙な言葉;私はリーダーを彼らの人々の「優れた」とは思わないためリード;しかし、それは状況を正確に(適切にではなく)記述します)正しいことは何かを知っています。彼らが標準が何であるかを知らないなら、それはリーダーとしての私のせいです。それを修正するのは私次第です。この場合、あなたは間違いを犯したかもしれませんが、実際に起こったという事実は、あなたが1)正しいことを何も言わなかったか、2)適切に指導されなかったことを意味します。どちらもあなたのせいではありません。

プログラマーになるための最も重要な部分の1つは、作業するコードベースが多くの異なる人々によって保守可能でなければならないことを認識することです。読みにくいコードの問題を修正するのに時間がかかるので、コードを読むことができないことを損なう可変のメスサップやその他のものは、顧客には見えません

チームがコーディングガイドラインを作成している場合は、それらに従ってください。そうでない場合は、言語に何らかのコミュニティ規約が必要です(.NETおよびC#の場合、Microsoftには多くの企業が従う標準があります)。

コーディングガイドラインがどこにあるかをチームリーダーに確認して、それらに従うようにしてください。他の2人の開発者がガイドラインに一貫して従わなかった場合、会議に2つのチェックインを行います。そうしないと、他の開発者も問題を抱えているように見えることを指摘できます。それらのガイドライン。

彼があなたを公正に扱っているなら、彼はこれを見るでしょう、そして、これはするべきことの彼のリストの一番上にあるべきです。もし彼があなたを公平に扱っていないなら、それが起こり続けるならあなたは弾薬を持っています。

「後で行きます」と言うのは悪いことです。後で起こることはありません。時間をかけて正しく実行してください。プログラミングの後半はありません。

あなたがジュニア開発者であるとき、それは難しいです。実行するようにプレッシャーを感じ、多くの人があなたを見ていて、あなたが犯すすべての間違いは、ソース管理においてあなたの名前に永遠に結び付けられています。


1
「後でやります」についてのコメントを二番目にします。聞いたことがあるたびにニッケルを持っているとしたら、このコメントをここに入力することはないでしょう。:
エリックキング

.Netには、スタイル警官がいます。オンにして、StyleCopが満足するまでコードがビルドされないようにします。これにより、労働力のいじめである人間の主観が排除されます。ご覧のとおり、Michael Phelpsが1位か2位かを判断するのにテクノロジーが役立ちます。フィギュアスケートでは、しかし... figureskating.about.com/od/famousskaters/tp/scandals.htmチームリーダーであるが、パワートリップについてはすべきではありません。チームにはお気に入りが[嫌い]であってはなりません。そのような印象が形成されないように注意する必要があります。そのための良い方法の1つは、コードをチェックして公平な答えを出すルールを有効にすることです。
ジョブ

3

あなたの投稿のどこにも、周りの人がどのように扱われるかについて言及していません。あなたは「女性」だから、「シングル」になっていると「感じる」ことを繰り返します。

性別を問わず、あなたはジュニアプログラマのように扱われていると思います。それは平等の意味なので、感謝する必要があります。また、5分間の小さなコードの見た目の変更について、大騒ぎをしているのではないかと感じています。

あなたの投稿のどこにも、あなたが週末にこれらのことをするように命じられたことを言及していません。月曜日の朝に修正プログラムをチェックインしても問題ありません。

あなたのチームリーダーは私の好みに対して少しつまらないかもしれませんが、あなたの投稿からは、彼または彼女のリクエストに何の問題もありません。

性別カードのプレイを何もしないでください。これは無礼であり、男女共同参画の概念を損なうものだと思います。


1

これに基づいてブランチを拒否することは有用ではないと思います。週末に多くの人が働いていましたが、私が働くとは言いませんでした。事実上、変更を行って再送信する時間がなかったため、一部の人はおそらくブロックされました。私たちは非常に時間に敏感なプロジェクトに取り組んでおり、クライアントにとって透過的なものに基づいてコードを完全に拒否することは役に立たないと思われます。私は間違っているかもしれませんが、時間があればパッチタイプのコミットでこの種のことを処理する必要があるようです。

あなたのコードを見たことがなく、プロジェクトのスケジュールについて何も知らない誰かとして有用なことを言うのは難しいです。しかし、あなたのリードが責任を持って行動し、良い仕事をすれば、他の人が実際にブロックされず、スプリントが遅れないことを彼は知っています。だから、それを心配しないでください。おそらく、コミットへの影響を過大評価しています。それ以外の場合:プロジェクトがタイムクリティカルであり、すべてのテストに合格した場合、コードを拒否するにはあまりにもうるさいため、リリース後すぐに修正できます。

動作させる正しく動作させる高速にする

だから、あなたのリードがあなたのコミットを拒否する決定を下した場合、彼は専門家として彼が何をしていたかを知っているべきです。

今、私はいくつかの環境ではこれが標準であることがわかります。しかし、批判は平等に分配されているようには見えず、それが私の次の問題につながるものです。これらの問題のほとんどの原因は、私が誰か他の人が書いたコードベースにいて、最小限の侵入を試みているという事実によるものでした。ファイルの他の場所で使用されている変数名を模倣していました。私がこれを述べたとき、私は「他人を真似しないで、正しいことをしてください」と率直に言われました。

ジュニアとして、企業のコードベースを見つけるのは困難です。

ベスト:文書化されたコーディング標準があります-そして、あなたはそれらを理解することを願っています。

通常:ある文書化されていないコーディング標準は-あなたは経由で学ばなければならトライアルエラーまたは私が言うべきコミットと_reject?これは多くの場合(あなたの場合のように)苦痛です。これはコードの品質の点で危険である場合があり、カーゴカルトプログラミングにつながる可能性があります。変数の命名を模倣するだけでなく、誠実にコードベースから構造とパターンをコピーして貼り付けるため、そのようにする必要があります。そんなことしたらダメ!既存の変数の命名をまねてはいけません。

クリーンコードに固執します。それは良い習慣であり、防御しやすい立場を与えます。読み取り可能、テスト可能、および保守可能なコードであれば、ほとんどの議論に勝ちました。

そして、これは別の(最後の)アドバイスにつながります:ボーイスカウトのルールに従ってください!

常にコードベースを以前よりも良い状態に保ちます。作業している周囲のコードが厄介な場合でも、コードをきれいにしてください。時間があれば周囲を修正してください。


0

同僚の性格のさまざまなニュアンスを学ぶのに少し時間をかけてください。私の経験では、同僚の癖を回避すれば、不合理、不必要、一貫性のない、または単なる価値のない批判を避けることができます。

たとえば、一部の同僚は月曜日に二日酔いになります。彼らは非常にいらいらし、特定のコードブランチやコミットを拒否することに過度に熱心であるかもしれません。このような人と仕事をする必要がある場合は、月曜日にコードをコミットしないようにしてください。

一方、二日酔いの同僚は、エラーメッセージの冗長性を気にするのが面倒かもしれません...月曜日の朝は、コードをコミットするのに最適な時期かもしれません:-p

オフィスや職場での性格の癖は文字通り無限です。誰がいつ回避すべきかを学ぶことができれば幸いです。また、自分自身にあまり厳しくしないでください:-)いつでも辞めて別の仕事を見つけることができます!


1
辞める前に仕事を見つけてください。多くの採用マネージャーは、あなたが雇用されていなければ面接さえしません。
Woot4Moo

-2

特定の規則に従わないという理由でコードが拒否される環境で働いたことはありません。もし私があなたの立場にあったなら、私は正しい決定を下すためにより力を与えられ、コードではなく顧客が第一の焦点である場所で雇用を探したいと思うでしょう。

きれいなコードと標準は重要ではないと言っているわけではありませんが、非技術者、顧客、または幹部がこれまで目にすることのないもののスペルミスが原因で、顧客と製品のタイムラインが損なわれるべきではありません。

そうは言っても、何らかの理由で期待が明確でない環境で作業している、または要件を完全に理解していないように思えます。

状況に関係なく、管理し、明確な質問をするのはあなた次第です。まだプロアクティブでない場合。チームメンバーとチームリーダーは、チェックインのルールを明確にするために質問することであなたをより尊敬するでしょう。また、あなたとチームリーダーが代わりに何をすべきかを議論する「アフターアクションレビュー」を求めることもできます。特定のアクションを実行するタイミングと実行しないタイミングに関する違いを判断できます。

あなたは新しいので、時間を与えて、ハードルを乗り越え、経験、コミュニケーション、標準を学ぶことでこれらの問題を解決できるかどうかを確認することをお勧めします。ただし、数か月後も状況が変わらず、環境が依然としてあいまいさに悩まされている場合は、別の会社に就職する時が来るかもしれません。

すべての組織がこの過酷な仕事をしているわけではなく、あなたの性格、スタイル、およびコミュニケーションの要件により適した他の作業環境を見つけることができます。


2
これは「厳しい」とは思えません。一貫性は保守性の重要な要素であり、保守性は品質の重要な要素であり、高品質のソフトウェアは「妥協コード」よりも納期通りに低コストで出荷できる可能性が非常に高くなります。ソフトウェア会社の80%のようなものが品質を危うくして結果に苦しむことを奨励しているので、「非過酷な」雇用機会の不足はないようです。:)
weberc2

1
基本的な規則が強制されていない環境では働きたくないでしょう。プロジェクトがコーディングガイドラインを守ることをIfめた場合、長期的には維持できなくなる運命にあります。特に変数の命名はささいなことではありません。特定のマトリックスを既存のコードがどれだけA呼び出したBとしても、一貫性のために別のマトリックスを呼び出すコミットを受け入れることはありません。もちろん、OPが「他の場所で使用されている[...]名前を模倣する」ことの意味を正確には知りませんが、見たコードの品質を考えると、これらの行に沿っている可能性があります。
cmaster
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.