web-dev-qa-db-ja.com

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

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

経験の浅い開発者が犯しがちな間違いのうち、経験豊富な開発者の不満につながるものは何ですか。

15
awmckinley

新しい開発者が忘れている主なことは、現実の世界では彼らはしばしばチームの一員として働いているということです。これは自分自身を示しています。

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

それは、彼らのコードが単独でスクラッチすることができないと言っているわけではありませんが、彼らはもはや分離して働いていません。

12
Garry
  1. テスト。
  2. テスト。
  3. その他のテスト。
  4. ソース管理
  5. 対象とするすべてのプログラムに適した税金。

Windowsでは、これらの税金は

  • 高DPI環境への対処
  • 移動ユーザープロファイル
  • ユーザーの簡易切り替え
  • リモートデスクトップ(RDPが有効なときにダブルバッファリングを使用したくない場合など)
  • 階層ストレージ管理をうまく活用する
  • マルチモニター
  • 64ビットWindows

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

  • Unicode
  • ローカリゼーション
  • パワーマネージメント
8
Billy ONeal

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

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

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

5
Simon Whitaker

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

ここにあなたが始めるための一般的なシステム定義チェックリストがあります-

  • システムの重要なリソースは何ですか?それらに対する要求はどのように変化しますか?
  • システムのパフォーマンス機能とはどのようなもので、どのように拡張する必要があるのでしょうか。
  • 要件のどの領域が不要になり、取り外し可能になるか?
  • 異なる機能を持つシステムの異なるバージョンが必要になる可能性はありますか?
  • 特定された変更が行われた場合、人的資源とコンピュータリソースにどのような影響がありますか?
  • 新しいシステムは既存のオペレーションシステムにどのような影響を与えますか?
  • システムの経験に照らして変更が必要になる可能性が高いのは、どの機能領域ですか?
  • システムの将来のユーザーは誰ですか?
  • システムの将来の保守担当者は何ですか?
  • システムの将来のユーザーが可能性として識別できる将来の機能拡張は何ですか?
  • システムはユーザーの全体的な計画にどのように適合し、どのように開発されることが期待されますか?
3
Steven A. Lowe

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

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

開発マシンとターゲットマシンのシステムをクリーンに分離することで、「まあ、それは自分のマシンで機能する」という状況にならないようにします。

そして、どれだけ早く開発マシンを再構築できますか?

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

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

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

次は組織です。多くの場合、彼らは自分が書いたコードに集中しすぎて、その方法や必要なことを思い出せません。したがって、必要な依存関係をバンドルまたは文書化するのを忘れています。彼らはまた、物事が落ちる場所に置く傾向があります、私は先週の後輩が3つのwsdlを含むルートディレクトリで彼のコードをチェックインしたと批判しなければなりませんでした。サブディレクトリandルートディレクトリ。コードは、あなたが考え得るどの標準にもフォーマットされておらず、存在するが呼び出されない関数がいくつかありました。

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

1
gbjbaanb

私の最大の問題は、柔軟性を計画することを忘れないことです。クラスでは、ほとんどの場合、要件は最初に示され、変更されることはありません。ソフトウェアでは、それはしばしば反対です。あいまいな要件のセットを取得し、それらは頻繁に(毎日でも)変更されます。これを支援するためにできる最善のことは、柔軟にコーディングすることです。疎結合、複数の状況で確実に使用できる小さな関数、ハードコーディングをできるだけ避けることです。

そのうちに、a)変更される可能性が最も高いもの、逆に変更されない可能性が高いもの、およびb)変更要求を予測して計画する方法について学習します。

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

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