プログラマーSEが『思考停止』に陥らないためにすべきこと
「○○さんってホント思考停止して、過去や常識に囚われてるよな」って言われてる人いますよね?
思考停止とは、
- 何も考えていない状態
- 考えるべき時なのに考えようとしない
- 判断を放棄するのが当たり前になってしまっている
- 自分でそれに気がついていない
こんな状態のことです。
自分がそうならないためにも、『思考停止』に陥らないためにすべきことを考えてみたので紹介します。
むしろ新入社員の方が、思考停止しやすい?
私の場合、新入社員の時が一番思考停止していたようにも思えます。
新入社員ってその会社のことしか知らないので、考え方が限定されていて、先輩が言ってることが絶対になってしまいがちです。
ですから、新入社員時代って先輩に洗脳されやすい時期なんです。
私の場合、年収が入社3年目で320万円というレベルでした。1年目はなんと200万円台です。
今思えば「安すぎだろ!?」なんですけど、当時は外に目を向けたり自分で考える習慣がなかったので、先輩に
「うちの会社って給料安くないですか?」
と聞いてみて、
「どこもそんなもんだよ、ふつうだよ」
と言われて「そうなのかぁ…」と納得していました。
結局その会社に4年半勤めて、「やっぱ安すぎだろ?」と思って転職したら、やっぱ安すぎだったんです(笑) 年収が120万円上がりました。
この先輩のようにずっと「どこもそんなもんだよ」と思考停止していたら、未だに年収が300万円台だったかもしれません。
ということで、思考停止に陥る罠の一つ目は「同じ環境にずっといること」です。
同じ環境にずっといると、それが当たり前になり、その環境の中しか見えなくなってしまいます。
よって、常に外に目を向けることが大切です。
同じプログラミング言語を使い続けてると思考停止しやすい?
転職して入った会社には6年半勤めました。最初の会社も次の会社も業務システムの受託開発やSES(エンジニア派遣)の会社で、仕事の内容の大半はJavaで業務システムを開発するものでした。
当時の私は、「より大手で、より安定した会社に転職していこう!」と思っていました。
そうして3社目の会社に転職したのですが、超絶ブラック企業だったため2ヶ月半でやめることになり、そのショックでしばらく仕事をしたくなくなりました。
ぽっかり時間が空いたので、趣味でWebサービスを作ってみることにしました。
当時WebAPIを使ったマッシュアップサイトを作るのが流行っていました。そのような事例を紹介してるブログを読んで自分もやってみたいと思ったんです。
マッシュアップサイトの作り方を紹介している記事の多くはPHPを使ったものだったので、PHPを学ぶことにしました。
やってみると、かんたんで、しかもめちゃ楽しくて「もっと早くやってればよかったぁ」と思いました。
そして、その時気が付いたんです。
「Javaしかやってなかったから、レンタルサーバ借りて、個人でWebサービスを自作するという発想がなかったんだ」と。
発想できること = 人生の可能性
使ってる言語や、やってる仕事によって、思考は制限されます。Javaで業務システム開発をやってると、個人でWebサービスを作るって発想はなかなか浮かびません。
もちろん、今だったら「JavaでもVPSとかクラウド使えばできるじゃん?」なんですけど、その前にまず「個人でWebサービスを作ろう」って発想自体が出てこないんです。
発想さえ浮かべば、「どうやればできるんだろう?レンタルサーバだとJavaは動かないのかぁ、VPSってやつだとJavaが動かせるみたいだな」という風に続けますが、そのための最初の発想が浮かばなかったら何も始まりません。
これも言ってみれば、思考停止の一種です。
ですから、プログラミング言語をいくつも使っていくことで、その言語が得意な分野のソフトウェアを発想できるようになり、選択肢が広がります。
加えて、プログラムロジックの発想も言語によって影響を受けます。
オブジェクト指向言語を使ってるとプログラムを組む際に「どういうクラスを作ろうか?」という発想になりますが、他のパラダイムの言語、手続き型ではロジックを中心とした発想に、関数型言語を使うときには関数を組み合わせる発想をするようになります。
アーキテクチャ設計も思考停止しがち?
システムアーキテクチャもそうです。同じものをずっと使ってると思考停止してしまいます。
例えば、私の場合、同時アクセスをさばく手段はマルチスレッドしかないとずっと思っていました。
node.jsのシングルスレッドノンブロッキングIOの話を聞いた時、「そんな方法があるのかぁ!!!」と衝撃を受けました。
シングルスレッドでも、IO発生時にIOが終わるのを待って次の処理に移るのではなく、IOが終わったら「コールバック関数を呼んでね」という風にして、別のリクエストの処理に移るという方式にすれば、シングルスレッドでも同時アクセスがさばけちゃうんです。
これがシングルスレッドノンブロッキングIOです。これに対して私達が慣れ親しんできたマルチスレッドの方式はマルチスレッドブロッキングIOと言います。
まさに思考停止していました。
もしもこの時、私がJavaで業務システム開発だけやっていた人間であったら、おそらくnode.jsにも目が向かなかったと思います。
そういう意味でも、常に今やってること以外のことにも目を向ける、これを意識していきたいと思います。