オルタナティブ・ブログ > プログラマー社長のブログ >

プログラミングでメシが食えるか!?

プログラマーに向いている人・不向きな人

»

先日のブログでも少し書いたのですが、現在プログラマーを求人中で、何人かの方と面談を行ったりしましたが、プログラマーに限らずIT業界の仕事は向き不向きがかなりはっきりとあり、なかなか難しいと感じています。

社員として採用するケースはもちろん、派遣で来てもらうケースも同じなのですが、1週間くらいで出社できなくなったり、あるいは数ヶ月持ちこたえても徐々に鬱状態になる感じで、結局続けられなくなることが意外と多いのです。私の勤務先だけなら勤務先がひどい仕事のさせ方をしていると言えるかも知れませんが、知り合いのIT業界の方からもそのような話しはよく聞きます。

単純に表現すると「ついていけません」となることが多いのですが、「ついていけない」というと「技術レベルが?」と想像するかも知れませんが、そうでもないのです。実は採用する側は、最初から技術レベルに関してはあまり求めていません。プログラミングといっても対象によって様々な技術が必要ですので、そんなものは一緒にやりながら徐々に身につけてもらえば良いと思っているのです。それでも「ついていけない」となるのはなぜかというのは長年の疑問でした。

最近は、おそらく「他の人達がスーパーマンに見えて、そのレベルに自分が到達できる自信がない」という状態になるからではないかと考えるようになりました。

プログラミングは教わってもなかなか身につきません。学校で英語を習っても喋れないのと同じで、プログラミング言語を教わったり本を読んだりしても使えないのです。英会話と同じで、試行錯誤しながら使ってみる、つまり、「コードを書いてコンパイルして動かしてみる」というのを繰り返さないと身につかないのです。逆に言えば私のようにプログラミングは学校はもちろん誰からも教わったことがほぼなくても、試行錯誤を続ければ身につけられるのです。

プログラミングができるようになる人は、「プログラムを作って動かしてみる」もっと簡単に言うと「コンピューターで遊んでみる」ことができる人だと私は思っています。私がこの業界に入った30年前(?)は誰でも当たり前のようにそれをしていた気がします。ところが今はできない人が多いのです。

・昔に比べて開発分野が専門化され、さらにプログラミングの仕事でも細分化されたある一部分だけを担当させられることが多いため

・今どきはググれば簡単に答えが見つけられるので、試行錯誤をする苦しみ(とともに楽しみ)を知らないため

・コンピューター環境が複雑・多層に進化しすぎて、素人が簡単に全容を把握できる状態ではないから手が出せないため

・IT教育が当たり前になり、IT業界に入る人ならプログラミングなどの教育も受けていて当たり前という前提で、試行錯誤をする余裕が与えられないため

他にもいろいろな原因がある気がしますが、環境の問題も大きいとは思います。一方で、「いろいろ試行錯誤してみると良いよ」とアドバイスすると・・・

・今度時間があるときにやってみます
 ↑時間に余裕があるときなど永遠にこない

・この仕事が終わったらやってみます
 ↑今の仕事が終わったら次の仕事が指示される

と返答されることが多いのも気になります。もちろん、指示を出す側も余裕を作ってあげることが大事ですが、そもそも、自分自身で「新しいことを身につけよう」と考えているなら、時間を作り出してでもあれこれやってみたいと思うはずですし、知らなかった仕組みを知ることができるワクワク感で、仕事などそっちのけで試行錯誤を優先してしまいたいくらいではないかと思うのです。

私の勤務先でも様々なタイプの人がいますが、プログラミングで活躍する人は、

・プログラミングに限らず、誘いをかけるとやってみたいと動く人
 嫌いな分野には手を出さないタイプもいますが・・・

・言われなくても余計なことまであれこれやりまくる人

・分かった振りをせず、食らいついてくる人

・自分で勝手にあれこれ作ってみている人

・自分でやったことを見てもらうことができる人・むしろ見せたい人?

こんなタイプが多い気がします。もちろん例外もたくさんありますが。

プログラミングはパソコン1台あれば簡単にできる時代です。電子工作に比べても道具は断然必要ありません。誰でもやりたいと思えばすぐにできる技術です。英会話を本気で身につけるよりも環境面では簡単でしょう。海外に行く必要も、英会話学校に行く必要もなく、パソコン1台あれば良いだけですので。そんな状態で、目の前に取り組むべき課題があり、やってみるための環境があるのにワクワクしない人はおそらく向いていない人だと思います。言われたことだけ坦々とこなす仕事ではありませんので。

ただし、あまりにもプログラミングだけに没頭してしまうタイプも危険です。体を壊したり、精神的に病んでしまったりすることもありますし、仕事ではどうしてもメンバー・パートナーさん・お客さんとのコミュニケーションも多少は必要ですので、あまりにもプログラミングだけというのもなかなか上手くいきません。

とはいえ、多くの人はIT業界やプログラミングに多少なりとも興味があったから扉を叩いてみたのだと思います。受け入れる側も最初に書いたように、技術面での高望みはしていません。知ったかぶりをしても詳しい人から見ればすぐに分かりますから、知らないことは知らないと言えば良いのですし、興味があることはどんどん質問してみたり、やらせてもらったりすれば良いのです。なかなかそれができずに、雰囲気に飲まれて動けなくなってしまう人が多いのが残念です。受け入れる側が一番困るのは、状況が分からないことです。「分かっているのか分からないのか」「進んでいるのか止まっているのか」など、素直にどんどん報告・相談してくれるだけでどれだけ安心できることでしょう。5分悩んで解決できないことは、自分で考えてもまず分かりません。とっとと相談すれば良いのです。それがなかなかできないのは、受け入れ側の雰囲気もあるのでしょうけれど、なかなか難しいところですね。

プログラマーの仕事は、できる人とそうでない人で大きな開きがあります。私なら5分で解決できるネットワークプログラミングの課題でも、初心者なら1週間かかってもできないというのはごく普通にあります。でも、その差は基本的に「知っているか知らないか」「やったことがあるかないか」なのです。知らないことは調べれば良いですし、詳しい人がいれば聞けば良いのです。多くのプログラムは簡単に動かせることが多いので、作って動かしてみれば良いのです。そうすれば同じような課題はすぐにできるようになります。それをどれだけ経験したかどうかだけであり、別に「頭が良いか悪いか」はあまり関係ないのです。ところが最初は周りがスーパーマンに見えてしまい、「自分の能力が低すぎるのだ」と自分を責めてしまうので苦しくなってしまうのです。もったいないことです。

なお、長年プログラマーを続け、社長としても仕事をしてきた経験から言うと、本当に頭や心を使うのはプログラミングよりもさまざまな決断や人間関係の調整でしょう。むしろプログラミングは素直で自分が書いたとおりにしか動きません。本当に能力の差が出るのはプログラミングよりも他の仕事だと思います。プログラミングは経験がほぼ全てですから。まあ、余程難しいアルゴリズムを思いつくことなどは能力も必要ですが、そういう仕事はそれほど多くもありませんし、初心者に求めません。「能力ではなく経験」「自分の頭を責めるのではなく、やってみること」がプログラマーとしてはまず大事な考えだと思います。

Comment(10)