memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

プログラムは動いたらそれでオシマイではない

企業は情報系の大学出身者のプログラミング能力にあまり期待していない。。。という記事をどこかで読んだことがあります。理由はいろいろあるでしょうけど、実は直感的に気づいていることが1つあります。

授業では講義で教えたことについて基礎演習で慣れてもらい、応用問題では自分で考えて答えを出すべく試行錯誤してもらいます。この試行錯誤はプログラミング能力を高めるために必要な論理的思考や仮説検証能力などを身につけるチャンスではあるのですが、実は悪癖の温床?でもあると感じています。

学生が提出する答えの中には、結果は確かに要求した通りなのですが、学習した項目を無理矢理組み合わせて作ったものもあります。「結果は確かにあっているけど、”普通は” こう書かないんだよなぁ。。。」と。それでも課題には提出期限があるためそのまま受け取ることが多いのです。アルゴリズム以前の問題として、変数名のつけかた、インデントがなっていない場合もあります。簡単なものはその場で指摘して直させますが、なぜそうしなければならないか言葉で説明してもレビュアーやメンテ屋になったことがないので実感がわかないでしょう。

こういう学生を新卒者として迎えた企業の中には「変な癖がついて再教育するコストを考えるなら何も知らない方がいい」という考えをもつことがあっても仕方がないとは思います。

以下の記事にそうした問題に真っ向から勝負している取り組みが紹介されています。

Link: Teaching Real-World Programming (Communications of the ACM)より

Charles E. Leiserson氏とSaman Amarasinghe氏のソフトウェア開発の授業に関する取り組みの紹介です。ごくごく短く要約すると以下の通りです。

情報系大学の課題はプログラムを作らされることが多い。学生は答えを出すことに集中するがコードの品質(読みやすさ)を意識したプログラムを書く意識はない。この状況を打開するため数年前から2人の先生で手分けしてプログラムをチェックしたり指導してきたが非常に大変だった。そこで卒業生や近隣のエンジニアに声をかけてボランティア(レビュアー)を募ったところ多く集まり、その方に協力してもらいながら学生のプログラムを60〜90分かけてレビューするようになった。

教育効果については特に言及していないようですが、これから成果が発表されるのかな? 本文中ではClean Codeを書かせることを念頭においた教育プログラムになっているとのこと。動くのは当たり前。将来、技術者を目指すなら”カッコイイ”プログラムを書くこと、そういうプログラムを”カッコイイ”と思える価値観を身につけることが大切、ということだと思います。

「Clean Code」に興味のある方は以下の書籍を読んでみてください。うちの図書館にはないようですが持っていますのでお貸しします。変数名のつけかた、コメントの書き方など具体的に書かれています。読むだけではダメでそれを実践して自分の型として身につけなければなりません。こういう授業、考えて行かないといけないな。。。と思いました。地元企業の方に参加をお願いしないといけないかもしれません。そういうネットワークつくりもしないといけませんね>自分

Clean Code アジャイルソフトウェア達人の技

Clean Code アジャイルソフトウェア達人の技

なお、本文の末尾にボランティアで参加している企業の方のコメントがありました。能力の高い学生を見つける手段になる、とも書かれていました。それより印象的だったのは以下の一言。この方のところでは新卒を採用する枠はないそうですがそれでもこのプログラムにボランティアとして参加しているそうです。補助金など申請して産学官で連携して教育する。。。という活動はよく目にしますし、そうでないと大学はよくても企業は困りますよね。。。それでもこの取り組みのように個人レベルではビジネスの世界とは少し離れて若者を教育する指導者としてやりがいを感じたい、ということはあるんじゃないかと思います。そういう方がもしいらっしゃいましたら、ぜひご参加いただければと思いますが。。。いかがでしょうか?

“The world doesn’t need more software engineers; the world needs better software engineers.”