見出し画像

プログラミングとパズル

プログラムを書いているときの感覚は、パズルゲームを解く時の感覚に似ています。パズルゲームというは例えば、数独のようなものだったり、ルービックキューブのようなものだったり。

プログラミング全くの未経験でIT企業に入社した私ですが、入社してからの新人研修の中で、プログラミングはパズルだな、と思うようになりました。そこからしばらくの間、プログラマーやエンジニアという職業は、「業務時間中にパズルを解いているだけでお金がもらえる仕事」という認識を持っていました。

IT業界は他の業種と比べて比較的給与が高い業界だと言われていますが、パズルを解いているだけの人たちが、営業・接客のような、顧客と直接コミュニケーションを取っている人たちよりも高い給料をもらっていることに違和感を感じていた記憶があります。私は人見知りで初対面の人とのコミュニケーションは苦手なので、初対面の人ともスムーズに話ができる人が羨ましいです。そのような、高いコミュニケーション力が必要とされる仕事よりも、パズルを解いているだけの仕事の方が給料が高いことが腑に落ちませんでした。

ただ、そんな考えもエンジニアとして働いているうちに徐々に変化します。

実際にエンジニアとして働き始めると、パズルを解いている時間よりも、顧客やチームメンバーとのコミュニケーションを取っている時間の方が実は多かったりします。また、顧客に提供するシステムを開発するにおいては、顧客側の業務に知識が必要になったり、プログラミング言語以外でもサーバーの知識やフレームワーク・パッケージの知識など、非常に幅広い知識が必要になってくる。プログラミングの作業がパズルを解く感覚であることには変わりはないけれど、現場での開発はそもそもパズルに取り掛かるための必要なピースが自分に足りな過ぎてどうしようもない、みたいなことがよく起こります。

なるほど。ここまで全体像を把握することで初めて、これは誰にでもできる仕事ではないな、ということがわかりました。

そもそもパズルを解くこと自体、得意ではない人も多くいます。ロジカルに考えることをあまりしてこなかった人にとっては、パズルを解くことだけでも苦労する。その上、コミュニケーション能力や幅広い業務や技術の知識が必要になる。経験を積めば、パズルを解くことだけではなく、パズルそのものを設計する仕事(上流工程)を任されることにもなる。

これは確かに誰にでもできる仕事ではないし、仮に自分たちでやろうと思うと相当な労力を必要とする作業で、できる人に高いお金を払ってやってもらいたくなることも十分に理解できます。

プログラムを書く作業というのは、感覚的にはパズルゲームを解くこととほとんど同じです。
ですが、エンジニアの仕事の本質はパズルを解くことではありません
結局のところ、ほとんどの仕事は顧客に対してどれだけの価値を提供することができるかが重要です。

パズルを解く作業というのは、顧客への価値提供のほんの一部の作業であって、それができるからといってエンジニアとして認めてもらえるわけでもありません。

パズルを解く力に加えて
・顧客の本当の課題を引き出すコミュニケーション能力
・顧客の立場を想像する想像力
・課題解決における最適解を提案するための幅広い知識
・パズルを設計する論理力と文章力

などといった幅広いスキルが求められるのがITエンジニアです。

もちろん全てのスキルが高い人は稀で、人によって得意分野と不得意分野があります。私も実際できないことの方が多いと思います。それを補うためにチームという形で仕事を進めていくわけですが。いずれにせよ、パズルを解く力をどれだけ鍛えても、その能力だけでITエンジニアとして成果を出し続けられることはありません。

初心者がプログラミングを学ぶ時というは、パズルのルール(プログラムの書き方)を覚え、パズルを解く(実現したい処理を組み立てる、いわゆるアルゴリズム)練習をします。そして、プログラミングを挫折した経験がある人は、ほとんどがこのパズルの解き方がわからずに挫折します。

ですが、それはプログラマー、エンジニアとして働く上での本質ではないです。さっさとパズルの解き方を習得して他の能力を身につけていけるようにしていきたいですね。

サポートいただくとめちゃくちゃ喜びます。素敵なコンテンツを発信できるように使わせていただきます。