標準プログラマー

約1週間前、彼はMicrosoft公開ジョブコンテストに参加しました。 そして失敗しました。 1週間が経ち、私の頭の中の考え(どうしてそうなのでしょうか?それはできなかったのです!)少し落ち着いて、私はこの経験からいくつかの結論を出しました。



4年前、私が大学を卒業したとき、私は自分が誰になりたいのか全く知りませんでした。 私は学生のときにシステム管理者だったので、主に同様の役職のコンテストに参加しました。 偶然、友人のアドバイスで、私はかなり大きなノボシビルスクの会社に行き、C ++開発者の地位に関するインタビューを受けました。 インタビューで私は非常に異なる質問を受けました(何のための継承ですか?stlを知っていますか?)、その90%は答えませんでしたが、私はただ一つのことを思い出しました。 私は、C ++、Pascal、およびPHPのカーネルミックスで擬似コードを考えて記述しました。 彼らは私に言った:「まあ、元気に…そして今、ラインの真ん中の位置を保存するバッファなしで...」 彼らは私に言った。 月曜日に出勤しましょう。」



私の将来のチームリーダーが、どのようにしてインテリジェントな(控え目ではないでしょう?)開発者を識別できたのか、私にとっては謎がまだ残っています。 私は後で彼に尋ねました、そして、彼は他のものがちょうどより悪いと言いました、そして、私もそれほど悪くありませんでした。 さて、もし私が彼の代わりにいたなら、おそらく誰も連れて行かなかっただろう。



私が働いていた会社が好きでした。 私たちは本を読んで、自分の専門的なレベルを上げる時間を与えられました。 私たち(緑の人、昨日の学生)はセミナーに参加し、デザインパターン、オブジェクト指向デザインなどについて話されました。 半年後、私はC ++言語での操作が悪くありませんでした。 さらに、デバッグツールの習得、メモリリークの検索、プロファイリング、単体テストを行いました。



それから私はもっと多くの仕事をしました...私の現在の仕事はフリーランスの期間を含めて、連続して5番目です。



そして、私はさまざまなソフトウェアシステム(通常のWebサイトからCDN、VoIPゲートウェイからCRMシステムまで)に精通すればするほど、それを書いた人たちを憎みました。 特に激しく、私はmehmatの卒業生と元オリンピック選手を嫌っていました。 バイナリソートを自分で実装する必要がある理由、リンクリストを実装する理由、手作りプロトコルを使用して手作りのメッセージングサービスを作成する理由を理解していませんでした。 そして、私はこれらの自己決定に対処し、それらをサポートしなければなりませんでした。



私のカルマを損なわず、同僚への憎悪を引き起こさないために、 標準的な問題を標準的な方法で解決しようとしました。 DBMSにデータストレージを実装するために、 標準の ORM(Hibernate、Doctrine)を使用しましたが、独自に作成しようとはしませんでした。 システムの新しい部分を設計する必要がある場合は、クラシックの標準的なシンプルなデザインパターンを使用しました。 メールの送信を実装する必要がある場合は、これに標準ライブラリ(Java Mail API、Zend Framework)を使用しました。 ほとんどすべての問題を解決するために、私はそのような標準的なソリューションをたくさん知っています(そして、それらを毎日探し続けています)。 私は、料理が上手で、多くのさまざまなレシピを知っており、さまざまな料理をたくさん作ることができます。



そして、優れたプログラマーはまさにそれであるべきだという印象を受けました。 標準タスクに標準ソリューションを適用します。 そして、彼が知っているそのようなソリューションが多ければ多いほど、プログラマーは優れています。



...そして、これらすべてが私が考える方法を忘れていたという事実につながりました。 技術的な質問については、Googleで回答を探しています。 Microsoftのインタビューで、選択した要素の積が最大になるようにint ar [n] = {...} n-1要素から選択する方法を尋ねられたとき、しばらくの間、私はst迷に陥りました。 私の頭に浮かんだ最初の質問:「 一体何だ?なぜ?」 それから、いくつかの標準ライブラリから同様のアルゴリズムを思い出そうとしましたが、それは複数知っています...できませんでした。 結局、問題を解決しましたが、インタビュアーが期待したほど簡単ではなかったようです。



私は標準的なタスクを素早く解決できる悪い標準プログラマーではありません。 Googleのすべての結果を最後のページで調査するまで、非標準のソリューションを適用することはありません。 実行可能なコードを書くのはまったく好きではありません。なぜなら、常にミスを犯しているので、それを検索して修正する必要があるからです。 開発者からのパッケージに含まれるxml番目の構成を追加するのが好きです。



私は標準的なプログラマーです。 そして、これは恐らく悪くないことです。 しかし、数万ページのさまざまな書籍やマニュアルがロードされていない完全に空のヘッドでは、4年前ほど簡単に非標準のエンジニアリングの問題を解決することはできません。



All Articles