プロのプログラマーの7つのスキル

毎年、プロジェクトのトレーニングを行い、チームで学生を募集しています。 もちろん、ハンティムはすべてではありません。 「私たちは仕事に行きますが、お金を得ています」-これは間違いなく私たちのためではありません。 「星」も探しません。 まず第一に、私たちは成長し、発展し、「スター」になりたい人を探しています。



私たちの高等教育の問題の1つは、大学が多くのこと、アルゴリズム、プログラミング言語、OOP、さらにはデザインパターンを教えることです。 でも、仕事を教えられている大学で会ったことはありません。 ラボはカウントされません。 押された-そして忘れてしまった! たぶん不運だ。



かつて、私は自分の意見では、すべてのプロのプログラマーが習得すべきスキルのセットを策定しました。 大文字のマスターだけでなく、作品にお金を払っていると主張する学生もいます。 そして、彼の試用期間の3か月間にこれらのスキルを生徒に教えることができなかった場合、間違ったものを採用するか、役に立たないメンターを任命します。



だから、約7つのスキル...







1.問題の分解を実行し、その解決策を設計する
タスクを受け取ったプログラマーは、コードを書くためにすぐに実行すべきではありません。 適切なプログラマーは、時間の80%を頭で、時間の20%だけを手で使っています。 それほど複雑ではないプログラムを作成する場合でも、分析と設計が必要です。問題をより単純なサブタスクに分解し、特定のソリューションから一般的なソリューションを合成します。 たとえば、整数変数の長さを選択することは設計要素です。



2.実装コストを適切に評価する
「この問題を解決するには8時間必要です」という答え-間違っています。 評価は常に確率的な値です。 たとえば、正しい答えは、「4(私は間違いなく速くなることはできません)から16時間(おそらく間違いなくそれをするでしょう)」です。 大きな広がりはリーダーを混乱させるべきではなく、プログラマーの問題を解決する際の不確実性の高さを反映しています。



3.彼の仕事を計画し、スケジュールを作成する
問題を解決するためのスケジュールを作成するとき、プログラマーは、リスクを可能な限り迅速に最小化し、問題の解決が急速に進展しないように、作業に優先順位を付ける必要があります。 遅延した「濁った」サブタスクは、採用された設計決定のデッドロックを明らかにする可能性があり、すべてを最初からやり直す必要があります。



4.受け入れられた標準に準拠
まあ、すべてが簡単です。 「あたかもあなたが住んでいる場所を知っている暴力的なサイコパスが同伴するかのようにコードを書いてください。」 (c)スティーブマッコネル。



5.コストとリスクを最小限に抑えながら、必要な品質を提供します。
これはおそらく最も難しいスキルです。 私たちは、プログラムされた「どうなるか」と「最も完璧なコード」を書くことの中間点を見つけることを学ばなければなりません。



6.コードのテストとデバッグを実行します
「コンパイル-テストに送ってください!」-アプローチが間違っています。 プログラマは自分のコードで最大のエラーを見つけなければなりません。 彼にとってプログラムは「透明な箱」であるため、彼はより効果的にそれを行うことができます。 ほとんどのエラーは、アルゴリズム変数の定義と変更の領域の境界にあります。 一方、テスターはコードを「ブラックボックス」としてテストし、多数のデータセットを列挙してエリアを爆撃します。



7.検出された欠陥とスケジュールからの逸脱を分析します
さて、最後の、自己管理システムのように、プログラマーはフィードバックを提供しなければなりません。 時間と品質の観点から計画からの実際の逸脱を分析し、ワークフローを調整し、将来そのような逸脱を最小限に抑えるために、その理由を特定することが義務付けられています。



おわりに


どういうわけか、2人の生徒が「Vasyaが私たちそれぞれの3倍の収入を得ているのはなぜですか?」 彼はコードを3倍速く書いていますか?」 「いいえ」と答えました。「彼はあなたよりもコードを書くのが遅いです。」 彼は、あなたが一緒になって、あなたに割り当てられたどんな時間でもまだ解決できないような問題を解決するだけです。 したがって、研究、研究、研究!」大文字のマスターは、スキルではなくプロのプログラマーとは異なりますが、解決するタスクの複雑さと規模が異なります。



All Articles