プロジェクトが特に複雑なのか、それとも取り上げるのが遅いのかを判断するにはどうすればよいですか?


16

私は主要なプロジェクトでほとんど進歩を遂げていません。ソースは巨大で、オブジェクトの多くのレイヤー、マカロニコード、多重継承のダブルダイヤモンドグラフ、元の作家が去ったときに中途半端な機能が凍結されており、その多くの部分がそのように設計された理由は誰にもわかりません。

有能なプログラマーなら、バグを修正し、中途半端なものを完成させ、新しい機能を追加するのに十分なほどうまくそれを理解するのに苦労すると思う。しかし、私は典型的なプログラマーよりも遅くなると思う。

ソースが異常に悪く、私ができることは誰でもできるかどうかを判断するにはどうすればよいのでしょうか?ソースはこのようなプロジェクトでは典型的であり、私はただの機知に欠けているか、未熟です?


11
他人のコードを理解することは共感の行為です。あなたがどれだけ速く進んでいるかを忘れ、コードを書いた人々が何を言っているのかを忘れてください。それを理解することは、柔軟性の練習です。ソースが異常に悪いと仮定し、あなたが過度に熟練していると仮定し、仕事に戻って、これらの愚かなフォーラムでのめちゃくちゃをやめましょう。それは私にも当てはまります...私は絞るコードを持っています。
ダンローゼンスターク

2
特に、その人が上司、上司の兄弟、上司の上司、上司の上司のneなどである場合は、「何という...」を忘れてください!
DarenW

2
ああ、行方不明の「なぜ」の。あなたがそれらを理解するときにそれらを置くことを忘れないでください。

@DarenW-それはマカロニコードではなくスパゲッティコードです:D(申し訳ありませんが、私はしなければなりませんでした)。
ジャス

1
@Jas google for macaroni code ...単にスパゲッティよりも多くの種類のパスタがあります;
ユルゲンA.エルハルト

回答:


6

その質問を決定する唯一の方法は、同じ問題に取り組むためにより多くのプログラマーを獲得し、彼らがよりうまくいくかどうかを確認することです。

もちろんこれはめったに実用的ではなく、タスクはあなたの善意に落ち、あなたができる限り最善を尽くし、あなたの知識があなたを失敗させる場所を調査することを提供します。複雑さによってされるところを解体し、気になる人に進捗を十分に知らせます。 それから私は心配しないで、それを続けます。


16

まず、私はあなたが「頭のいい人や下手な人」になるのではないかと心配するのにあまり時間をかけません。一部のプロジェクトは把握するのが難しく、大規模なプロジェクトは多くの場合、速度を上げるのに時間がかかります。あなたが「愚か」であるか、または仕事に任せていないことを考えることは、決してあなたを助けません。

コードのヘルプが必要なようですので、リソースを検討してください。元のコーダーにアクセスできますか?それらが利用可能な場合、それらは情報のための良いリソースになる可能性があります。利用可能なドキュメントは何ですか?ドキュメントが不足している場合は、ノートブックを引き出して、独自の個人ドキュメントの作成を開始します。

ここでの大きなアイデアは、このプロセスに時間がかかることを期待することであり、精神的に自分自身を打ち負かすことに費やす時間が少ないほど、コードを分析してそれを把握するためにより多くのエネルギーが必要になります。幸運を!


5
+1複雑なシステムを熟知するには、6か月以上かかる場合があります。コードベースが「良い」としても、開発者やチームが異なるとスタイルが異なるため、時折ベアリングを手に入れるのに時間がかかります。
ライアンヘイズ

3
@Ryan、そして6か月後、あなたは自分で問題の一部になります:)
Benjol

@ベンジョルうん、行ったことがあります。
ライアンヘイズ

FWIW、私がこの船に乗っていたとき(数回!)、ただ座ってコードをい回るよりも、頻繁に休憩を取る方が役立つことがわかりました。休憩を取るときは、起きてコンピューターから物理的に離れてください。ストレッチ、窓の外を見て、今見たものを考えてから、戻ってもう少し見てください。YMMV、しかしそれをやったとき、私は自分自身がずっと良い進歩を遂げていることに気づきました。幸運を!
TMN

独自の個人文書を作成するための+1。この作業を行うと、大量のメモを(コードまたは紙で)作成し、大量の図を描画するのが役立ちます(通常、それはその時点で何かを意味するだけです)。すべてに追加のプラスは、あなた自身の心の概念の強化です。
アンディハント

6

学習曲線を見たことがあります。 学習の呪い

理論によると、最初はステップアップするのに時間がかかります。秘Theは、ステップアップポイントをすばやく渡すことです。あなたが定期的に立ち往生している場合は、マネージャーに助けを求めるか、少なくともあなたが直面した問題について彼/彼女に知らせておいてください。スケジュールに問題がなければ問題ありません。


2

一度に1枚ずつ分析する

あなたの状況は非常に一般的です、 他の人がすでに述べたように「把握する」には時間がかかります。

私が見つけたのは、あなたがそれに取り組むと 、プロジェクトがどれほど複雑であるかに関係なく、「一度に1つずつ」。あなたはそれについて論理的でなければなりません。

ボタンで始まる、ソースコードを掘り下げる、ブレークポイントを置く、ステップバイステップを見る何が起こっているかします。達成する必要があるものが2つあります。

  • 高レベルの概要。
  • 上記の必要な機能を実装する重要な詳細。
  • その一部を理解したら、リファクタリングします。

「一度に1ピース」は他のプロジェクトで機能する可能性がありますが、これには他のクラスから派生したクラス、友人クラス、相互の内臓へのポインタが多数あり、独立して理解できる部分はほとんどありません。
DarenW

複雑な迷路(時間の経過とともに「成長」したもの)であると確信しています。ただし、1つの関数で開始する場合、エンドツーエンドでトレースできないと言っていますか?
ダークナイト

データのフロー、またはユーザーがボタンをクリックしたときのイベントのシーケンスをトレースすることは不可能であることが判明しました。
DarenW

1

別の見方をしてみてください:このコードについて何を知る必要があり、それを測定する方法がありますか?たとえば、バグを修正しようとする場合、コードをある言語から別の言語に移行する場合(VBScriptからC#に移行する場合など)とは異なる種類のダイビングが必要になる場合があります。現在のコードからすべての要件を取得しようとしている場合、ほとんどの人がそのような問題を抱えていると思われますが、しばらく時間がかかる場合があります。


私はこのコメントが好きです。特定の目標を設定し、その(そしてそれだけの)目標を達成するために努力する必要があります。さもなければ、あなたはそれで迷子になります-非常に地図物のよう​​です。
NoChance

1

新しいことを学んでいる間、多くの学生は「くそー、これは私にとって難しい。私は愚かだのだろうか。」
あなたは愚かではないことを、いくつかのものがハードであることを自分自身を保証する、任意の遠くに行く前に。…

アーロン・ヒレガス氏とスマートな言葉。

あなたは愚かではありません、あなたは遅くありません、そして、あなたは下手ではありません。私は同じ船に乗っており、新しい役割に就きました。既存のコードベースは非常に大きく、繰り返し過剰に開発されている兆候を見せています。フルスピードに近い。このプロジェクトがまったく新しい言語を学習するようなものだと想像してください。一晩では行われませんが、忍耐が必要です。

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