流なコーダーがグッドプラクティスを無視する場合、彼の流fluさは彼に反していないでしょうか?[閉まっている]


16

私はかなり大きくてバグのあるアプリケーションに取り組んでいます-それが書かれている方法のために(詳細は省きますが、あなたが考えることができるほとんどの分野でルールに違反します)、大きなリファクタリングなしでそれを開発することはほとんど不可能です。

アプリの重要な部分は、インターン、n00bsなどによって作成されました。しかし、Master Developerの階級にプログラマーもいました。そして、謙虚に、彼が残したコードも、おそらくは別の方法で疑わしいです。

確かに、彼のコードはほとんどの場合、仕事を終わらせる傾向がありますが、通常はわかりにくく、車輪を再発明します(たとえば、通常のSQL dbバックアップを実現する大きなカスタムメソッド)など。基本的に、不必要な混乱と多くのオーバーエンジニアリング

そして、他の資質を伴わない場合、高度に熟練したコーダーであること(私は意図的に「開発者」という単語をより広いスキルのセットを示すと仮定して使用しません)が実際には有毒であると考えるようになりました。

それが真実だと仮定すると、私が考えることができるいくつかの理由は次のとおりです。

  • 簡単にコーディングしている場合、ライブラリや既存の機能などを使用せずに、その場で独自のソリューションを簡単にスナップアウトできる(または実際には短期的には)と感じます。
  • 複雑なプログラムのメンタルイメージを簡単に維持できる十分な経験がある場合、それをモジュール、レイヤーなどに分割する傾向は低くなります。

私のポイントは、流なコーダーが偶然悪い開発者である場合、流fluさは後者を補うだけでなく、実際にはむしろより多くの害をもたらすということです。

あなたはそれをどう思いますか?それは本当ですか?


24
「木を切り倒すために6時間与えてください。最初の4時間をかけてspendを研ぎます」-アブラハムリンカーン「自分の時間にxを研ぎます。」-ほとんどのボス
ジェフ

15
「流fluent」を読んだときのように、タイトルが原因で混乱が生じましたI.ThinkOf(this).KindOfThing()
-Benjol

この上級開発者にこれらのことをした理由を尋ねましたか?すでに示したように、アプリケーションにはバグがあります。そのため、シニア開発者は、バグのあるアプリケーションを自分で実行できることを制限されていた可能性があります。彼のコードが「ほとんどの場合」しか動作しない場合は、バグが含まれているため、交換または修正する必要があります。
ラムハウンド

@Ramhound-いいえ、彼は私が入社する前に会社を辞めていました。彼は私がそれを取り上げる前に最後に取り組んだ人物です。同僚からは、彼がかつて急いでいたことを知っています。多くの顧客からの苦情により、アプリの修正が優先事項だったからです。しかし、彼は明らかに時間の管理という点ではあまり良い仕事をしていませんでした。ところで、彼はWPFおよびWinformsアプリケーションをローカライズするための独自のライブラリを作成しました。
コンラッド・モラウスキー

1
関連性が高い: thisthis。一部の(多くの)人がこの段階で動けなくなる...
BlueRaja-ダニーPflughoeft

回答:


22

簡単にコーディングしている場合、ライブラリや既存の機能などを使用せずに、その場で独自のソリューションを簡単にスナップアウトできる(または実際には短期的には)と感じます。

はい。私はその男でした。そして、私はそれがひどいことであることを学びました。

それはすべてあなたにとってとても良いことです。あなたは何か新しいことを学ぶ必要はありません。

しかし、チームの他の部分はどうですか?彼らはあなたに非常に依存するようになります。「Clive's Quicky ORM」をグーグルで検索して、作成したオブジェクトリレーショナルマッパーのヘルプを取得することはできません。

そして、新しい人を雇う必要があり、CliveのQuicky ORMで経験のある人を探すことができない日が来ます。

そしてついにあなたが去り、誰かがあなたのORMのバグに気付く日が来ます。そして、あなたの製品をテストし修正する人々のコミュニティ全体がないので、それはそこにあります。

はい、Hibernateの学習は、軽量なものを書くよりも時間がかかった可能性があります。しかし、そうすることの利益は無視できないほど大きいのです、私見。


1
私もその男でした-2番目の文に同意しません。ほとんどの問題を解決できるということは、ソリューションが堅牢で、保守可能で、柔軟で、スケーラブルであることを意味するわけではありません...または、初期実装がすぐに開発されるということでもありません。言語/ライブラリリファレンスマニュアル以外で学んだ最高のアイデアの多くは、「どうしてそんなことを考えなかったのか」ということです。シンプル、そしてまた柔軟でスケーラブルな、など最悪のものの一つ-私がいることを実現し、以前のアイデアにさらされ、まだ私はそれを必要なときに...そう、ない実用と無意味な学術不条理としてそれを却下
Steve314

6
一部の組織で、サードパーティのライブラリを使用するための承認を得るに、6か月以上かかる場合があります。場合によっては、とにかく6か月待って、最後に拒否されることがあります。すでに短いタイムラインにあったときに官僚機構に対処する時間を無駄にしたくなかったからといって、私は以前に一度限りのORMを構築しました。
トビー

2
@トビー:フェアポイント。しかし、これらの企業は一般的にはとにかく節約を超えています。
-pdr

言うまでもなく、米国空軍は@Tobyが言及した企業と同じです。私たちはRuby on Railsをプッシュしようとしましたが、彼らはそれを嫌いました。
トラビスペセット

車輪の再発明することは行うには正しいことだいくつかの例がある@Toby、鍵は必ずある理由を理解することです
JKを。

14

•簡単にコーディングしている場合は、ライブラリや既存の機能などを使用せずに、その場で独自のソリューションを簡単に作成できるようになります(実際には短期的には)。

言語は習得できますが、ツールは習得できません。それは本当に強力なコーダーでさえありません。あるスキル(言語の知識)を磨き、別のスキルを錆びさせる(図書館の知識)だけです。他の方法は同じくらい悪いですが、見つけやすいです。

複雑なプログラムの精神的なイメージを簡単に維持できるほど十分な経験がある場合、それをモジュール、レイヤーなどに分割する傾向が少なくなります。

それはスキルに偽装した怠です。あなたが積極的に取り組んでいるものを頭の中に保持することは、それほど労力を必要としません。適切な継ぎ目を見つけて、それに沿ってコードを分割するには、スキルが必要です。すべてを1つの場所に残す方が速いか、または良いと言うコーダーは、多くの場合、どのアイテムを分割するかを見ることができません。


1
はい、そうです。そして、私が長年にわたって彼らの後をきれいにするために良い生活をしていなかったら、私はこの種の人々にもっと反対すると思います... ;
マイク・ウッドハウス

4

彼が「キーボードがクリックされないのなら、あなたは働いていない」環境で働いているからではありません。私たちは皆、コードを振り返り、私たちが何を考えていたのだろうと考えています。また、このショップはコードのリファクタリングを行っていますか?それは彼が与えられなかった贅沢だったかもしれません。

ただし、最初のアイデア(ただ座って打つことができるアイデア)から脱却し、もう少し計画、研究、思考を行う必要があります。それぞれの小さな問題を邪魔にならないように誘惑することは魅力的であり、プロジェクト全体がこのプラクティスに散らばっています。誰も「壊れていない」ものを修正するために人々にお金を払いたくないので、なぜリファクタリングします。

編集:たまたま答えを知っている人を罰しないようにしましょう。流fluentで、優れたコードを迅速に書く人がいます。重要なのは、この方法ですべての問題にアプローチすることではありません。


まさに私の考え。会社の主な焦点が可能な限り迅速に提供することである場合、人々はしばしば遅くまで働いて、プレッシャーなしで働くことを許されたなら彼らがしないことをします。入力中に考えている多くのコードを入力すると、「生産的」で便利だと感じます。振り返って考えたり、同僚と問題の問題についてチャットしたりすることもできます。その種のものは、プロジェクトを遅らせているような気分にさせます。あなたはその時にコーディングすることができますよね?;-)。
-deadsven

私は幸運でした。移転後、自宅で仕事をすることが許可されました。誰もがそれが行われたかどうかを知りたいのですが、私は働いていません。答えを知ったからといって罰せられることはありません。
ジェフ

3

100%。

これを冷笑的に見ると、これらの種類のコーダーが実際に大部分の開発者を動かし、安定性、柔軟性、安全性に途中で到達することなく何千人もの開発者時間を費やすことができる非常に基本的なバグを修正します、モジュラー、または[お気に入りのソフトウェアプロパティ]システム。これらのシステムには非常に多くの特異性があり、機能の95%が既に配置されており、その背後に活気のあるコミュニティがあっても、他の何かに移行するという考えはばかげていると解雇の根拠のどこかにあると考えられています。

一言で言えば、流なコーダーは大勢の競合他社よりも多くの損害を与えることができますが、代償は通常長年にわたって支払われます。そして、彼らは通常、彼らの仕事を他の誰かによって定義されているように単純に行っていました。

あなたが開発者なのかコーダーなのかをどのように見分けるのですか?それは不可能だと思いますが、品質落とすことなくコードをシンプルにする方法を見つけるたびに啓発に向けて新たな一歩を踏み出しました。


1

あなたが説明した問題は基本的にNIH(「ここでは発明されていません」)でした-他の症状はありますか?

NIHは、特に1人または2人に分離されている場合、グループディスカッションで対処できます(「ここのジョーは、標準ライブラリを使用してSQLバックアップを行う経験があります-ジョー、どう思いますか?」)。これは、あなたが直接その人に行って、「ちょっと!標準ライブラリを使って、ダミーだ!」と言うよりも対立的ではないかもしれません。:)


1

あなたの状況にあり、同様の状況を引き起こしたことはあなたの不満を理解していますが、あなたの質問に対する答えはフラットな「ノー」だと思います。流Fluさは、プログラマが保守可能なコードを生成することを保証しません。多くの場合、組織は、ばかげた予算と時間の制約のために、プログラマーに設計と実装が不十分なソフトウェアを提供することを余儀なくさせます。流なプログラマーは、プログラマーだけが顧客が気にかけている何かを提供することに関心があるコーナーをカットしている可能性があります。明らかにこれは実際には良くありませんが、悲しいことに、ほとんどすべてのプログラマーはキャリアのある時点で対処しなければなりません。また、流なプログラマーが怠け者であったり、満足している可能性もあります。私は完璧な英語を話すことができますが、スラングを使用する方が簡単で楽しいです。

他人のコードを使用したり、独自の議論を展開したりすることに関しては、仕事が最もうまくいくものに本当に帰着すると思います。「ベスト」とは、2週間で6週間のプロジェクトを提供することを意味する場合、スタイルや保守性などを考慮しないこともあります。これがリファクタリングと改良の理由です。また、開発者は、サードパーティコードに関して利用可能なものを認識し、それを使用する方法を理解し、それが機能し、適切にサポート/維持されることを信頼する必要があります。そのようなものを使用する一般的な開発パラダイム用のオプションのフレームワーク、ライブラリ、およびAPIが何千もあることを考えると、単に独自のものを転がすよりも多くの時間、エネルギー、およびストレスがかかります。また、サードパーティのコードが必要なことを正確に行わない場合もあります。


0

私はその船に乗っており(レガシーで流writtenに書かれたコード)、しばらくの間は流fluentなタイプでした。

「迅速で汚い」ソリューションの最大のハードルは、後でさらに追加する必要がある場合です。より多くの機能が必要な場合。構造なしでできることはそれだけです。その後、それは壊れ、それを再配置するのに費用がかかります(まだ満足していますが、本当に感謝されていません)。

基本的に、熱心な営業担当者が販売できる「実行可能なソリューション」になる可能性のあるハックから身を守る必要があります。それは古い「準備ができていません!-しかし、動作しますか?」難問。


これは質問にどう答えますか?
gnat

@gnat「あなたはそれについてどう思いますか?」という質問に、私の答えは私が考えたことでした。私はまだ同じ意見です:流fluさ(したがって、迅速な解決策、ハッキングなどを行うことができる)は、長期的には有害なコードにつながる可能性があります。言語に堪能であるだけでなく、コードを整理する方法を知っている必要があります。
MPelletier
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.