見出し画像

プログラマに大切なこと

25年以上プログラマをやっていて、大切にしていたこと。それは個々の言語や要素技術というよりは、物事の考え方、不断の情報収集、そして、ポイントを見極めるセンスかと考えてます。

物事の考え方

その昔、パソコンのデスクトップがアイコンで埋まっていたりしている人は仕事ができない、と言われることもありました。プログラマとかITとかの業種に関係なく、必要な情報に素早くアクセスできることで効率化すること、無駄な時間を減らすことは重要かと思います。

そういう作業の進め方とか、課題の整理とかはプログラムを書くことにも通じます。プログラムを書くというのは、やりたいこと(要件)をまとめて整理し、順序立てて組み立てることです。その過程で似たような処理はまとめたり、必要な処理が別途提供されていれば活用したりして、揃えたパーツを組み立ていくことになります。

例えば。やりたいこと(要件)は(1)あるシステムからデータを取ってきて、(2)それを集計して、(3)別のシステムに登録するだとします。
この(1)について、さらに(1-1)システムにログインして、(1-2)取ってきたいデータを呼び出して、(1-3)実際にデータを取ってくる、といったように分解します。さらに、(1-1)について、(1-1-1)システムに認証に必要な情報(ユーザ名、パスワード等)を渡して、(1-1-2)システム利用可能かチェックして、(1-1-3)その人の利用権限を取得して、とかどんどん細かい処理に分解していきます。これを他の部分でも同様に分けていきます。
その中には、同じ処理、似た様な処理、似て非なる処理があるので、必要に応じてまとめたりして最終的なプログラム(あるいはシステム)が出来上がります。

なので、どの言語がいいとか悪いとか、何をやるべきか、といったことはあまり気にしていません。必要な時に必要な言語を使うだけなので、よくあるプログラマに人気の言語みたいなものは話のネタとしてしか興味がありません。
とは言え、やりたいことによって学んだ方がよい言語や要素技術はあるでしょう。例えば、超大雑把に言ってプログラミング言語には手続き型と関数型の2種があり、それぞれの向き不向きと特徴があります。関数型言語が向いている方面をやりたいのに手続き型言語ばかり学ぶのはやや遠回りでしょう。

極論を言えば手続き型言語の考え方なんてどれも大なり小なり同じ様なものなので、どの言語をやるやらないということに頭を使うよりも、物事の整理して、パターンに分け、再構成する考え方を身につける方が役に立ちます。

不断の情報収集

この世界は日進月歩の世界なので、情報収集も欠かせません。どんなプログラミング言語が人気なのかはどうでもよいですが、例えばこういう言語やライブラリや要素技術が新しく出てきた、それはどういう方面で使うことを想定している、といった情報はつかんでおく必要があります。
具体的な数字やデータも掴んでおければ言うことないですが、大まかなイメージだけでもあるとないとでは大違いです。

新しい何かを使うことで効率が上がるかもしれません。自分も先輩から「楽をするための苦労を惜しむな」と言われてました。何か矛盾する様ですが「聞くは一時の恥、聞かぬは一生の恥」とか言いますが、1時間苦労することで、10時間、100時間と楽ができることも少なくありません。

忙しいからそんな暇がない、今知っていることで対応できるから問題ない、という人もいます。それは分かるし、理解はしますが、それでも必要なことはやらないと、いつの間にか時代遅れ等ことになりかねません。

ポイントを見極めるセンス

さて、不断の情報収集が重要と書きましたが、世の中には大量の情報があります。その全てに目を通すことは忙しくなくても難しいでしょう。

では、どうするか。これは結局個人の経験や知識に基づいたある種の勘の様なもの、つまりはセンスが必要になります。これはどう伸ばすのかと言うのは難しいですね。とは言え、全部の情報に当たれないのだから、ある程度の取捨選択は必要になります。大昔に見たマンガで、世の中の全ての女性と出会えない以上、理想の相手を探し続けるか、どこかで諦めるか、そもそも探さないかの3つしかない、という話がありました。どこか別のところに有名な元ネタがあるのかもしれません。それはさておき、一夫一婦制の日本では理想の相手は一人かもしれないですが、技術的なネタは無数にあるので、それこそ永遠に探し続けることになります。

新しい技術が出てきたとして、そこには落とし穴があることもままあります。自分はよく「筋が良い、悪い」と言った言葉を使いますが、ある新技術が自分にとって良さげなのか、それともあまり意味がなかったり、最悪、逆効果なのかといったものを一見で判断する必要があります。もちろん、当たり外れがありますが、その辺の嗅覚を鈍らせないようにする必要があります。

そんなわけで、自分にとって一番効果的なものをパッと見分けることができないと、情報を集めて学ぶにしても効率が悪いです。センスについては磨いていくしかないですが、それがないのであれば何らかの基準を設けるしかありません。

例えば、Webシステムをやりたいのであれば、そういう人の多いコミュニティとかの情報を追いかける、とか。結局、当たり外れがありますが、自分の中にそう言う視点がないのであれば、視点を持っていそうな人を何人か見つけて追っかけるしかないです。

銀の弾丸は存在しない

別の記事でも書きましたが、この業界では「銀の弾丸」と言うフレーズがよく出てきます。元ネタは、狼男を倒すには銀の弾丸が必要という御伽噺というか伝承です。吸血鬼が日光に弱いとか、ニンニクに弱いとか、流れる水を渡れないとかいった類の話ですね。

このフレーズが使われる時の定番は、そんなものはないという結論です。これさえ分かればどんな問題も解決できる、と言った便利なものは存在しないですよ、という戒めとして使われます。もちろん、効率とか考えなければ、頑張ればなんでもできるかもしれません。でも、そこに頑張ってしまうと、他のことができなくなるので、同じ頑張るならば楽になる様にがんばりましょう。

全てはここに集約されます。

拙い記事でございますが、サポートしてもよいよという方はよろしくお願いします。著者のやる気アップにつながります。