ソフトウェア開発者はしばしば難しい仕事を任されますが、そのほとんどはコードを書くこととは関係ありません!
9.デザイン・ソリューション
タスク: 技術的なソリューションを設計し、一連の要件に基づいて適切なアーキテクチャを選択します。この作業には、ビジネスロジックと理想的なユースケースを包含するデータおよびコード構造、機能アルゴリズム、アプリケーションフローの設計が含まれます。
課題:設計されたソリューションが、期待される内容で、必要な期間内にお客様のニーズを満たすようにすること。
クラウド・ビュー:"Aから始まってZで終わる方法を考えるのが、この仕事で一番難しい"
"プロジェクト・デザインが肥大化しすぎると、やがてその大きさに圧倒されるでしょう。" "薄すぎると、実用性に欠けるでしょう。"
"実際に仕事に取り掛かる前に、物事の行く末を正確に予測するのは難しい......"
8.ライティングテスト
タスク:単体テストを書きます。単体テストとは、コードの小さな単位をマクロテストして、それが動作することを確認するものです。これらのテストは、開発プロセスの早い段階でバグを発見して取り除くのに役立ちます。また、コードが修正されたり更新されたりした後のリグレッションテストにも役立ちます。開発手法によっては、オープンなコードに取りかかる前にテストの計画を立てることを推奨しているものもあります。
課題:テストメカニズムを選択し、それを記述することは、面倒であり、それゆえに大きな頭痛の種となり得ます。開発者は、それがアプリケーション自体の開発から著しく切り離された追加タスクであると明らかに感じるでしょう。
クラウド・ビュー:"ライティング・テスト"
#p#
7.ドキュメンテーション
課題:これは時間と労力のかかる作業であり、若さを無駄にすることになりかねません。結局のところ、ドキュメントを注意深く読もうとするユーザーはそれほど多くないのです。プログラマーは通常、ドキュメントを直接生成するコードを書く方が楽です。
クラウド・ビュー:「『プロセス』の一部だからといって、誰も読むことも使うこともないようなくだらない文書を書く」。
"コードを扱える代わりに、目の前の仕事を明確に説明する文書を書く必要があります"
"文書を書くときには、良い説明、明確な説明、簡潔さの3つの主要な要件を同時に満たす必要があります。"
6.同意できない機能の実装を強要
Task:時には、ある機能や特徴をアプリケーションに含めるべきでないと考えることもありますが、顧客や上位の人物はそれを強く要求します。
課題:個人的な感情や意見はさておき、まだ疑問の残る機能の実装に時間と労力を費やすこと。
群衆の見方:"......選択肢は2つしかありません。
5.他人のコードを扱う
タスク:他の開発者が書いたアプリケーションやコードスニペットの保守、デバッグ、拡張をしなければなりませんでした。
クラウド・ビュー:「支離滅裂なコードに対処してみる」。
"コードを書く資格のない人間もいるのに、ときどき彼らが捨てたものを処理しなければならない......"
4.他者への対応
業務内容:顧客からの要件情報収集、経営層への状況報告、テスターとの連携、他のエンジニアへのプロジェクト内容の説明。
課題:技術的な内容を技術者でない人に説明すること、仕事のイニシアチブを他の人に委ねること、品質保証担当者や他の開発者との意見の相違。
クラウド・ビュー:「私はある人たちと話すより、プロセッサーと話す方が好きです。
"非技術者からの障害......そして他の技術者からのコード作成指示......"
「......技術業界のことを何も知らない連中とコミュニケーションを取るのは本当に難しい。"
"他のチームのメンバーは、座って待たされている間に遅れている......"
#p#
3.任務完了見込みの見積もり
タスク:プロジェクトの立ち上げ段階で、すべての作業を完了するのに必要な時間の見積もり。
課題: 何かにどれくらい時間がかかるかを推測する前に、漠然とした要件に基づいて見積もりを作成し、これらの不特定多数の問題に処理時間を割り当てます。
クラウド・ビュー:"実際に練習している段階で、プログラミングの仕事で起こりうる予期せぬ状況について予測を立てるのは本当に難しいと思います......"
「見積もりは一番難しい仕事だと思います。
「タスクの実際の実行時間を正確に予測することはできません。
2.私の仕事について説明してください
タスク:プログラマーでない人たちに、自分たちの仕事の責任とやってはいけないことを説明すること。
課題:全身の中には、自分が一体何のために仕事をしているのか本当に理解できない人が大好きな人もいます。また、コンピューター関連の問題で常に助けを求めてくる男もいます。
クラウド・ビュー:「誰かに説明してみてください。
"プログラマーとは昼夜を問わずプログラミングをすることではない "と、素人には数え切れないほど説明してきました!」。
「私は、海賊版のオペレーティング・システムや海賊版のソフトウェアを毎日人々に提供しているような、エレクトロニクスの町の連中の一人ではないということを、人々に説明する必要があります」。
1.ネーミングの課題
タスク:変数、プロシージャ、関数、クラス、オブジェクト、データベースコンポーネントに名前を付けます。
課題:小さなプログラムやアプリケーションであっても、多くの名前を考えなけれ ばなりません。名前は、何かが何であるか、何をするかを表現するために選ばれ、これはアプリケーション全体で行われ、十分にシンプルでなければなりません。
クラウド・ビュー:"意味のある変数名を考えよう"
"データや関数の意味のある名前の数々"
"コンピューターサイエンスには、キャッシュの無効化とネーミングという2つの大きな問題しかありません"
「......重複を削除したり、悪い名前を修正したりするのが得意なら、あなたはすでにオブジェクト指向設計の達人です。"