本日は、今話題のたんぽぽブログで書かれているプログラミングむいている、向いていない問題について原因と解決案を記載したいと思います。
プログラミングやる前に重要な能力があるかないかは企業で働くうえでかなり重要となるので、採用担当者は少し参考にしてみるとよいと思います。
よい大学出てようが、できない人も見てきましたので、あまり相関はないかなと思っています。
私について
組み込み系の会社でプロジェクトマネジメント系の仕事をしており、
オフショアや新人教育などいろんなengineerをみてきました。
プログラミングにむいているむいていない問題
タンポポの記事でもありますが、プログラマーになる前に重要なスキルとして
・コミュニケーションスキル
・問題分解スキル
が重要だと私は考えています。なぜこの2点が必要かという話をタンポポブログの例を使って説明していきます。
コミュニケーションスキル
まずコミュニケーションスキルについて少し深く解説しておきます。
たんぽぽの記事では、PCとのコミュニケーションが取れていません。
「エラー出たんですけど、どうすればいいんですか」
なぜなら
・aが定義されていない
と言われているのに、自分の書いた部分を一生懸命見たりする行為。
これまさにコミュニケーション取れていないのですよ。
だから自分と相手(人、モノ)とのコミュニケーション問題なわけです。
※さっさとエラー読め! (私もよく先輩に言われますがね。)
問題解決スキル
次に問題解決スキルの必要性について語ります。
頼むから質問してくれ
この一行がなぜ起こってしまうのか解説します。
できるプログラマにとできないプログラマの圧倒的な違いとして出てくるのが
この何がわからないかわかるという能力です
言い換えると、自分にとって何が問題なのか言語化できる能力を指します
できないプログラマというのが、案外わからないことすらわからない状態で進んでいるので、何を聞いていいかわからない状態に陥っています。
だから質問に行くことはありえません。
だってわからないことすら認識できていないんですもの。
プログラミングにむいているむいていない解決策
コミュニケーションスキル/問題解決スキル
コミュニケーションスキルとは私は、自分と他人の情報を埋める行動だと考えています。すなわち今回のケースでコミュニケーションしなければいけないのは、
問題)エラーすら読まないプログラマ
・生徒はエラーを読む気はない。俺の書いたところは正しい!
・先生はエラーを読んでほしい。お前のコードはクソ
というコミュニケーションの対立を解決する必要があります。
間違った解決案)
よくある間違った解決は、先生の命令で直させる行為です。この行動をしても、生徒側は別の問題でまったく同じようなことが起きます。ようするに成長しません。
私がやる解決策)
この問題の本質は、お互いの期待値がまったくあっていません。
そのため、私の場合この2人の間に入りホワイトボードを持ってきて、
制約理論のクラウドという手法を使い、
お互いの認識がずれていることをお互いに認識させます。
先生はエラーを見て!と訴えているが、
何かしらの要因で、生徒はエラーを見ることを
受け入れてくれていないという事実を先生も認識する必要がある。
(言っても伝わらないということを自覚する必要がある)
生徒はわからないことすらわからないという事実を相手に伝える。
こうして、エラーを読むという行為の前に潜んでいる本質的な問題をみつけ解決する必要があります。
解決するためには、自分と相手の認識が合うまで問題を具体化する必要があります。
このやり取りが相手とのコミュニケーションであり、問題解決にもつながる行為となるわけですよ。
(プログラマに数学やってよって言われる要因は、これって因数分解に近い感覚なんですよ。お互いの共通項を見つけるまで分解する行為なので)
参考文献
コミュニケーションスキルの解決案としては、コミュニケーション能力とは何か?を記載している、エンジニアリング組織論を書いた広木氏のブログを一度読むとよいです。
エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング
- 作者: 広木大地
- 出版社/メーカー: 技術評論社
- 発売日: 2018/02/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
制約理論関連の話
- 作者: エリヤフ・ゴールドラット,岸良裕司,青木健生,蒼田山
- 出版社/メーカー: ダイヤモンド社
- 発売日: 2016/03/18
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
まとめ
プログラマになる前に必要なことは、コミュニケーションスキルはかなり重要です。
初心者がコミュニケーション不要だからプログラマになるみたいなことを言いますが、
コミュニケーション不要なエンジニアはスーパーぶっとんだエンジニアだけです。
なぜ不要かは、スーパーエンジニアが生み出す価値がすごすぎて、コミュニケーションの部分を代わりの人がやってあげたほうが、チームの生産性が上がるからです。
何もできない初心者が、コミュニケーションしません、キリッってなっても誰も助けてくれません。
これからプログラマになる人は、
・わからないをわからないと言える環境に入ること
・コミュニケーション大事なこと。
を意識して、日々起こる問題をいろんな人と解決していってほしいなと思います。