文系プログラマによるTIPSブログスマートフォン用の表示で見る文系プログラマによるTIPSブログ文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。プログラマはもっと些細な事に疑問をもっていい2016-02-14プログラマはもっと些細な事に疑問をもっていいプログラマTwitterGooglePocket皆子供の頃「なんで〜?」「どうして〜?」と先生や親を困らせていたのに、大人になると疑問に思う事をやめてしまいます。なんででしょうねsimplearchitect.hatenablog.comこちらの記事を読みました。この記事を見て私はこう思いました。他人に聞く以前に、「何故?」と疑問にすら思わない人が増えているのではないか?疑問にすら思わないから、他人に聞いてみたり質問したりするきっかけがないのではないか?と。プログラマといえば環境構築は避けて通れませんね。環境設定の例を挙げると、gradleはbuild.gradleでプロジェクトに親子関係を持たせる事ができます。そこで「なんでその設定で親子関係が持たせられるの?」「build.gradleは具体的にどこにどういう設定をして親子設定したの?」と疑問に思う人と、思わない人がいました。自分の目で確認しないと信用ならない知っておいて損は無い疑問に思わなかった人の意見ツールのやる事なんて知らなくていい自分そういうの詳しくないんでそういう事を意識していたらそれを使う意味ない訳が解らないからざっくりこんな感じでした。疑問に思わない人の意見は尤もな意見です。裏で何が行われるか知っているけど、それを意識しないのと、何も知らないし考えもしないのは違いますね。完全に把握する必要はないのですが、ほんの少しでも知っておいた方がいいですね。しないと、「こんな事しらなくていい」→「それを知るきっかけが訪れない」→「一生知る機会が生まれない」と繋がってしまうかもしれません。他人に言われるがままで疑問に思わない凄く極端な例ですが、昔こんな方がいました。環境構築は完全に手順任せで手順をコピペするだけのマシーンと化している。デプロイ等の作業は、メモ帳にメモっているコマンドをコピペするだけ。エラーが起きても無関心。何か質問ありますか?と聞いて質問してきた試しがない。知識の源泉が、その職場でやっている事だけに限定されてしまい、外の世界を知らない。この方は、日々の開発の中で、「このロジック、なんでこういう回りくどい事してるんだろう?何か特別な意味があるのかな?」とか、「この設定でなんでこうなるの?」など、ほとんど何も疑問に思わない人でした。完全に手順・指示に沿って、ロボットのごとく作業するだけでした。その作業内容も、基本他のロジックのコピペで、そのロジックが中で何をしているのかを考えもしないようでした。www.bunkei-programmer.net例えばこの方はこんなミスをしていました。あるITに微妙に心得のある風のクライアントから、日付のフォーマットをハイフン区切りにしたいので「YYYY-MM-DD」にして下さいと依頼を受け、その方はこんなコードを書きました。sdf.parse(createDate);普通に考えれば、よほど特殊な事情が無ければ「YYYY-MM-DD」は明らかに間違いで、「yyyy-MM-dd」が正解だと解ります。彼はクライアントの言われるがまま設定し、見事バグとして起票されてしまいました。YYYY-MM-DDにしたの?と聞いてみると「言われた通りにやりました」と返答されました。確かにその通りなのですけどね。ここで「明らかにおかしくないかこれ?」と疑問に思わない点が、危険だなあと思いました。クライアントに言われた事であろうと、常に「ん?これ本当にあってる?」と考えたり、「これ言われた通りに反映するとヤバイよな・・?」と考える事は重要だと思うのです。言われるがまま作業をするだけだと、全く何も疑問に思わず、何か新しい事を知ったり知識を深めるきっかけがつかみにくいと思います。極端な例ですが、こんな感じに日々の作業で何かを疑問に思う事が無いタイプの方は、「他人に完璧にセットアップして貰った環境の上で、ビジネスロジックを書く事しかできない。そのビジネスロジックは他の処理をコピペするだけ、という状況に陥っていました。他人が敷いてくれたレールの上を、他人が作った電車をコピーして走らせる事しかできない、というわけです。ビジネスロジックしか書けない症候群に陥ってしまっているのです。そんな感じでできる範囲があまりにも狭く、何年経っても局所的な作業しかできないため、徐々にその人に仕事を振りにくくなっていくという事が起きてしまいました。局所的な知識しか無いと設計の幅が狭まるビジネスロジック以外に考えられる事ができないと、設計の幅が致命的に狭くなる事があります。ロジックで頑張ろうとせず、インフラ側で対応した方が効率が良くメンテナンスフリーにできたりするのに、知識が無いが故にそういう発想に至らない。ビルド・デプロイを工夫すればそんなロジック不要になるのに、知識が無いが故にそういう発想に至らない。発想が「ビジネスロジック」という狭い範囲に閉じてしまうが故、より効率の良い設計ができない場合があります。いう状況に陥っている事を本人は気づく事ができません。そんな世界がある事を知らないからです。それを知るきっかけが生み出せないでいます。疑問に思って欲しいプログラマはもっと日々行っている事を疑問に思ってもいいと思います。「なんでそういうプロジェクト名にしたの?」「この設定すると何が起きるの?」「このファイルなんでここに置いてるの?」など、些細な事すら疑問に思って欲しいと私は思っています。全ての事にはそうしている理由があるので、疑問に思う事ができれば、それを知るきっかけが生まれます。そこで疑問に思わなければ、一生それを知るきっかけが無いかもしれません。「些細な事を質問するなんて恥ずかしい」と思っているなら大間違いです。「些細な事を知ろうともしない事が恥ずかしい」のです。これは、社内だけでなく、社外の話にも言えます。「クライアントはなんでいつもこんな非効率な事やろうとしてるんだろう?何か理由があるのか?」「クライアントがこんな事を言うのは、向こうに何か事情があるのだろうか?」など、相手側の行動に対して疑問に思うと、相手側が抱えている問題を解決するきっかけが生まれる事もあります。私の個人的な意見ですが、知識が増えるきっかけは大抵「疑問に思う」事から始まっていると思っています。ネットでIT系のニュースを日々見ていて、「お?この記事に書いてあるライブラリなんだ?凄そう」と疑問や興味を持ち、実際それを使ってみたり勉強してみたりする事に繋がります。そこで出てくる専門用語や技術が解らず、初めて「他人に聞いてみよう」「気になるから自分で調べてみるか!」という行動を起こすのではないでしょうか。やって少しづつ知識を増やすきっかけを増やさないと、「え?それを知らずにその作業してたの!?嘘でしょ・・・」と言われる人間になってしまう可能性があります。なってしまうとgithub等の外部から自分の知らない未知の知識を取り入れる事もできないので、自分の知識源が自分の周りの非常に狭い範囲に限定されるリスクもあります。なってしまうと、将来がちょっと怖くなりますね。今回は非常に極端な例を挙げましたが、疑問に思わない人、は本当に増えてきていると感じています。最近はIDE・フレームワークが何でもかんでも自動でやってくれるので、余計に考えなくてよくなってきているのですよね。高機能になればなるほど利用者は考える事をやめてしまいがちなので、思考停止しないよう常に疑問に思う事を意識し、裏で何が行われているのか、今やっている事は正しいのか、を意識していきたいですね。ちなみに冒頭の記事の「気軽に聞けない事」に関して私の意見を言うと、「ガンガン質問していいけど、同じ質問するのは最大3回くらいにして欲しい」です。同じ質問を何回もされると、流石に「覚える気ねーな・・・」と思ってしまうので、嫌な感じがしますね。質問をする事自体は凄く良いことだと思います。然るべき人に聞けばググるより速く回答が貰える可能性があるし、回答する側にとっても、他人に説明するという練習をするきっかけにもなります。最近ではもう本当に疑問に思って質問してくれる人が減ってきているので、バシバシ質問して欲しいですね。01:02プログラマはもっと些細な事に疑問をもっていい関連記事2017-07-20「エンジニアは業務時間外でも勉強するべきなのか」について皆どう思っているか久しぶりにコメント色々見て皆の意見・考えを少しだけまとめて...2016-08-06「なんで私がやらないといけないんですか?」をやめてストレスを減らそう結局自分がストレスを溜める原因になって辛いです。上手く咬み合わないケースが多いのですよね2013-12-31【IT】仕事の仕方について改めて考える【プログラマ】これは永遠のテーマです。週間)昔は業務系SIer、今はベンチャー企業でプログラムを書いています。INFILEを実行できるようにするmacのAutomatorでhomebrewのコマンドをFinderのサービスから実行できるようにするReactオススメ書籍React自体の基礎、AtomicDesignの適用、CSSの運用手法の歴史的な経緯とメリットデメリット、Reduxの基礎、redux-sagaによる非同期処理、サーバサイドレンダリング、テスト、lint、を学ぶ事ができます。単行本(ソフトカバー)この商品を含むブログを見るAngularオススメ書籍Angularを学ぶなら絶対以下がおすすめです!バインディング、ディレクティブ、パイプ、フォーム、コンポーネント、サービス、ルーティング、httpClientによる非同期httpリクエスト、テスト、angular-cli、を非常に丁寧な説明で網羅的に解説しています。大型本この商品を含むブログを見るSEOオススメ書籍SEOを学ぶなら絶対以下がおすすめです!クローラに対して何をどうすればサイトの巡回効率・速度を上げる事ができるのか、どういったマークアップをする事が標準仕様なのか。巷に溢れる業者による経験則に基づくオレオレSEO情報は一切無く、全てGoogle等のオフィシャルな情報に基づいて何をすべきか、どんな手段があるのかを解説されています。プログラマな私が業務で行った施策が多く書かれており、プログラマ寄りで高度な内容となっており、巷のビギナー向けの曖昧な情報集とは一線を画しています。Amazonアソシエイト・プログラムの参加者です。reserved.スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。