経験の浅い開発者が考えることを忘れる最悪のことは何ですか?[閉まっている]


15

若い開発者として、私は高品質のアプリケーションを開発するために考えるべきことに関するいくつかのアドバイスを得ることが有用だと思います。私の大学のコースでは、ほとんどの教師が入力の検証を強調し、一部の人はセキュリティの問題について話しましたが、たとえばロギングなどの他の特定のものの重要性をカバーした人はいませんでした。

経験の浅い開発者が経験する開発者のフラストレーションにつながる可能性のあるミスは何ですか?


1
セキュリティを「チェックリスト」に入れるものとは厳密には呼びません。セキュリティは、設計のすべてのレベルで考慮しなければならず、後付けとして追加するものではありません。セキュリティ機能!=セキュア機能!
ビリーONeal

「チェックリスト」は間違ったことを暗示しているかもしれません。開発の最後に考えるべきことのリストを探しているのではありません。私は物事が考慮されるべきか興味としてアプリケーションを開発しています。質問を再度説明するための提案はありますか?
awmckinley

@awmckinley:あなたの質問は「アプリケーションをどのように開発するのですか」ですが、その質問は広すぎて答えられません。
ビリーONeal

@Billy ONeal:質問を編集しました。これは理にかなっていますか?
awmckinley

1
それは理にかなっていますが、残念ながら、それはまだベストプラクティスのランドリーリストよりもはるかに多くを求めていません。建設的な質問は、実際には特定の問題に関するものであるか、少なくとも1行以上の意見を述べた回答が必要です。
アーロンノート

回答:


12

新しい開発者が忘れている主なことは、現実の世界ではチームの一員として働いていることが多いということです。これは..として表示されます

  • ビルドを壊すコードをチェックインする
  • 既にあるコードを再利用しない
  • 他の人と同じ方法ではなく、自分のやり方で物事を行う-メンテナンスが高価になる

それは、彼らのコードが単独でスクラッチになっていないということではありませんが、彼らはもはや単独で動作していません。


+1:基本的に、これらはあなたが直面する問題です。ジュニアコーダーはコーディングが苦手かもしれませんが、経験豊富なコーダーはコーディングが苦手です。主な違いは、このようなアイテムです。
-gbjbaanb

8
  1. テスト。
  2. テスト。
  3. より多くのテスト。
  4. ソース管理
  5. 対象とするプログラムに適切な税金。

Windowsでは、これらの税金は次のとおりです。

  • 高DPI環境に対処する
  • 移動ユーザープロファイル
  • 高速ユーザー切り替え
  • リモートデスクトップ(たとえば、RDPが有効なときにダブルバッファリングを使用したくない場合)
  • Hierarchical Storage Managementをうまく利用する
  • 複数のモニター
  • 64ビットWindows

ほとんどすべてのプラットフォームで、次のことに対処する必要があります。

  • Unicode
  • ローカリゼーション
  • 電源管理

すみません、ビリー。質問の仕方がはっきりしていなかったのかもしれません。開発管理(ソース管理など)をあまり探していません。このソフトウェア開発プロジェクトのチェックリスト何を追加しますか?。ただし、「税金」セクションは間違いなく役立ちます。
awmckinley

3
@awmckinley:ソース管理を立ち上げる理由は、ソロ開発者だけであっても、複数の開発責任者がいなくてもリリースを効果的に管理できないからです。リリースnで作業している場合でも、リリースn + 1について考える必要があります。
ビリーONeal

5

私の経験では、ほとんどすべての経験の浅い開発者が心に留めていないことの1つは、あなたが(ほとんど常に)商用環境で働いているということです。あなたのコードは良いものでなければなりませんが、完璧ではありません。最も重要なことは完璧ではなく、コードが出荷されるということです。

別の言い方をすれば、会社が破綻してから3か月後に完璧なコードを提供することは誰にとっても良くありません。

私の意見では、これは現実の世界での開発が大学で教えられている開発とは異なる最も重要な方法の1つです。


3

本当に幅広い質問。詳細に答えることは...複数の本です。

始めるための一般的なシステム定義チェックリストを次に示します-

  • システムの重要なリソースは何ですか?また、それらに対する要求はどのように変化しますか?
  • システムのパフォーマンス機能とは何ですか?また、どのように成長させる必要がありますか?
  • 要件のどの領域が不要になり、削除可能になる可能性がありますか?
  • 異なる機能を持つ異なるバージョンのシステムが必要になる可能性はありますか?
  • 特定された変更が生じた場合、人員とコンピューターリソースにどのような影響がありますか?
  • 新しいシステムは、既存のオペレーティングシステムにどのような影響を与えますか?
  • システムの経験に照らして、どの領域の機能を変更する必要があるか。
  • システムの将来のユーザーは誰ですか?
  • システムの将来のメンテナーは何ですか?
  • システムの将来のユーザーが可能性があると特定できる将来の拡張機能は何ですか?
  • システムはユーザーの全体計画にどのように適合し、どのように開発されると予想されますか?

1

開発マシンのシステムとターゲットマシンの完全な分離。これにより、「まあ、それは私のマシンで動作します」という状況にはなりません。

また、開発マシンをどのくらい迅速に再構築できますか?

  • 必要なパッケージを知っていますか?
  • データベースを再構築するためのプッシュボタンソリューションはありますか?
  • ソースコードの整合性をテストするプッシュボタンソリューションはありますか?

1

おそらくデザインだと思います。つまり、実行する前に何をしようとしているかを考えるアプローチです。

あまりにも多くの経験の浅いコーダー(最初に始めたときを思い出してください)は、飛び込んで何かを始めてから、もう少し追加して、もう少し広告を追加して、さらに追加したいと思います。この方法は、そのように計画している場合は機能します(結局、各ビットをテストすることができます)が、ほとんどの経験のないコーダーは、書いている部分のみに焦点を合わせます。したがって、すべての追加はハッキングされる傾向があります上に。そして、私たちは皆、そのように進化したコードを見てきました!

組織は次のものです。多くの場合、彼らは自分が書いたコードに集中しすぎて、どのようにそれを実行し、何が必要かを覚えていません。そのため、必要な依存関係をバンドルまたは文書化することを忘れています。彼らはまた、物事を置く場所に置く傾向があります。先週、3人のWSDLを含むルートディレクトリのコードをチェックインした後輩を批判しなければなりませんでした.2つは同じファイルで、彼がコミットしたサードパーティのDLLのセットサブディレクトリルートディレクトリ。コードはあなたが考えうる標準にフォーマットされていませんでした。また、存在したが呼び出されなかった関数がいくつかありました。

明らかに彼はそれを機能させましたが、それはきちんとはしていなかったので、インストールとメンテナンスが面倒だったでしょう。


1

最大の違いはコーディング技術にあると思います。誰もが少し異なるアプローチを持っていますが、経験の浅い開発者は次のようなコードを作成する傾向があります。

  • 境界ケースを処理しません
  • 必要以上に長い
  • 関連するシナリオでパフォーマンス特性が悪い
  • 懸念の分離が不十分
  • const、sealed、readonlyなどの使用のような自己保護技術がありません。
  • データとデータのコレクションを返す奇妙な方法
    • これは、プラットフォームの経験が少ないことを示しています

0

あなたは最悪のことを尋ねたので、私の答えは次のとおりです。

  1. 開発マシンをスパイウェア、マルウェア、およびトロイの木馬ウイルスからサニタイズすることを忘れていました。
  2. 地理的に異なる場所にある安全なストレージに保存される定期的なバックアップを作成することを忘れていました。

0

私の最大のものは、柔軟性を計画することを忘れないことです。クラスでは、要件はほとんど常に最初に記載され、変更されることはありません。ソフトウェアでは、多くの場合それとは逆になります。あいまいな要件があり、頻繁に(毎日でも)変更されます。これを支援するためにできる最善のことは、柔軟にコーディングすることです:疎結合、複数の状況で確実に使用できる小さな関数、ハードコーディングを可能な限り回避します。

やがて、a)変化する可能性が最も高いものと、逆に変化しない可能性があるものと、b)変更要求を予測し、それらを計画する方法を学習する可能性があります。

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