常識はアルゴリズムスキルよりも重要です

Habrahabrの読者に、James Hagueによって書かれたOrganizational Skills Beat Algorithmic Wizardryによる短いメモの翻訳を提供します。 メモは面白そうで、観客と共有したかった。



私は何度も大手企業の技術面接について読んでおり、プログラマを探していなかったことを非常に嬉しく思いました。 ヒープまたはツリーの元の実装を記述する機能。 さまざまな制限のあるパズル。 要件を適切に分析および言い換えることができない場合、コンパイルに100億年かかるタスク。 私の最初の反応は、彼らがどのように誰かを雇うことさえできますか?



実際、プログラマーのほとんどの作業には、このようなアルゴリズムの習熟は必要ありません。



コードを書くとき、あなたにとって最も重要なスキルは、あなた自身の複雑さの重みの下で、このような関数の積み上げをすべて破壊から守る方法です。 私は大規模な通信システム、コンソールゲーム、ブログ、いくつかの個人用ユーティリティに取り組みました。 ごくまれに、unningなデータ構造やアルゴリズムを使用する必要がありました。 多くの場合、状態を監視し、構造をソートし、システムのさまざまな部分が互いにどのように相互作用するかを注意深く理解する必要があります。 コードの記述はタスクの一部にすぎません。 リファクタリング、単純化、過剰な操作の排除が行われた後。



多くの人が「偶然」プログラマーになるのはこのためです。 場合によっては、脳神経外科医になった人と会うことはほとんどありません。ただあなたの自由な時間にそれをするだけです。 これには、非常に集中的かつ具体的なトレーニングが必要です。 しかし、コードを書くことを学ぶのは簡単で、多くの人がそれをします。 8ビットのホームコンピューターでプログラミングを始めたとき、アルゴリズムが何であるかさえ知りませんでした。 データの並べ替え方法がわからなかったので、当時書いた簡単なおもちゃには必要ありませんでした。 カウンター、タイマー、状態管理について知るだけで十分でした。 このためには、「天才」は必要ありません。常識で十分です。



数年前、私は画像を長方形のテクスチャに変換するユーティリティを書きました。 このプログラムは小さく、ErlangとCで約1,500行のコードです。長さ20行の非常に小さなコードが、画像を長方形にパックするのに関与しています。 書くのは難しくありませんでしたが、インタビューではほとんど対処しなかったでしょう。 残りのコードは、ファイルの読み取り、結果の出力、画像パラメーターの処理、アプリケーションの異なる部分間のデータの転送です。 何か新しいものを追加したり、エラー処理を改善したり、使いやすさを改善したりする必要がある場合、私が最も頻繁に変更するのはこのコードです。



そして、それはまさにほとんどのソフトウェア開発のようです。



All Articles