こんにちは、エンジニア、業務委託の深山 @kenzan100 です。
突然ですが、皆さんは「アルゴリズム」と言われて何を想像しますか?
アルゴリズムというと、とっつきにくい技術分野/難しそう、という印象があるかと思います。しかし、「期待する成果を出すための、一連の手順に沿ったプロセス」という意味であれば、私たちは無意識のうちに様々なアルゴリズムを使いながら生活していると言えます。
会社までの通勤経路アルゴリズム、目玉焼きを上手に焼くアルゴリズム、歯磨きをするアルゴリズム...
もしかしたらエンジニアであっても、アルゴリズムを意識しながらコードを書く機会はそう多くないのかもしれません。ライブラリやフレームワークが充実している言語であればなおさらです。
アルゴリズムを学ぶ意義
それでも、私はアルゴリズムを学ぶ意義は大きいと思います。
私にとっての最大のモチベーションは、「利用者から開発者へ、一段技術を深堀りできるから」というものです。 Rubyでいえば [3,1,2,4].sort
が [1,2,3,4]
を返すことを理解しているのは「利用者の視点」です。
利用者の視点で満足することなく、「Rubyが sort
をどう処理しているのか」を知ることで、Ruby開発者の視点に(局所的ではありますが)おりていくことができます。
こういった内部実装の理解が進むと、さまざまな技術に主体的に関わることができます。それがエンジニアとしての自信につながります。「好奇心旺盛でい続けること」と置き換えても良いかもしれません。この姿勢は、(アルゴリズムに限らず)エンジニアとして成長し続けるために必須のものだと思います。
アルゴリズム勉強会 @クラウドワークス
私がこの二ヶ月間働いていたクラウドワークスではそんな好奇心旺盛なエンジニアが集い、アルゴリズム勉強会が開催されました。
続きを読む