ツレヅレグサ

雑記と愚痴と、時々小説

早くプログラムできればいいのか?

2007-05-10 15:27:57 | 批評
 まずはこのサイトを見てほしい。
どうしてプログラマに・・・プログラムが書けないのか?
これによると、某プログラマ曰く、プログラミングの仕事を希望する者の99%以上がどのようなコードも書けないらしい。業界の人々は、希望者は簡単なプログラムさえも作れない、と嘆いているわけだ。それはわかるが、その後いろいろと説明が続く中でこういう一節がある。

「(前略)それで、そういった類の開発者を見分けるための質問を作り始め、私が「Fizz-Buzz問題」と呼んでいる問題のクラスを考え出した。これはイギリスの学校の子供たちがよくやっている遊び(というかやらされている遊び)にちなんで名付けた。Fizz-Buzz問題の例はこんな感じだ。
『1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。』
ちゃんとしたプログラマであれば、これを実行するプログラムを2分とかからずに紙に書き出せるはずだ。怖い事実を聞きたい? コンピュータサイエンス学科卒業生の過半数にはそれができないのだ。自称上級プログラマが答えを書くのに10-15分もかかっているのを見たこともある。」

 ここで問題なのは、プログラミングの技量を問題を解くまでの時間だけで見ている事だ。これでは、自分達のレベルと新人のレベルを比較して、お前らあまりにも役立たずだ、と言っているようでもある。確かに、簡単な問題を解くのに長時間費やすのは問題だと思うが、たったの2分でできる人間は問題を暗記しているか、あるいは経験を積んだ人間くらいだと思う。そんな連中と、大半が座学の学生を比べてどうするのだろうか。ちなみに、自分の場合は解くまでにおそらく30分近くかかると思う。
 基本事項を含め、プログラムが全くできない人間を雇うのは論外にしても、解けるけど時間がかかるという人間をプロ基準で裁くのはちょっと抵抗がある。プログラミングで生計を立てている人間と違い、自分は素人なので何とも言えないのだが、「俺達は2分足らずで解けるんだ。専門的に勉強してきたお前らも当然できるだろ?」というのは強引な気がする。それがその道での常識ならば仕方ないのかもしれないが。

 ちなみに、プログラムを作る早さを計測してやっている学校なんてあるのだろうか。もしあるのなら、どういう感じなのか詳細を訊いてみたい気もする。それともうひとつ。時間に追われるお雇いプログラマよりは、じっくり考えるフリーのプログラマの方が、クオリティの高いプログラムを作ると思う。だから市販ソフトよりもフリーソフトの方が利便性が高・・・ゲホゲホ。スピードだけならそういうのに長けたインド人を雇えばいいじゃないか、という気がするのは自分だけだろうか。その分、プログラムを作る早さが遅い人間は新たなもの、独自性のあるものを追求するとか、そういった路線にも向けられるのではないだろうか。


最新の画像もっと見る

8 コメント

コメント日が  古い順  |   新しい順
Unknown (fuku)
2007-05-10 21:07:22
はじめまして、こんばんわ。

引用されてる問題ですが、これは『ループ』と『イフ』というプログラムの一番基本的な命令を2つ書けばいいだけなので、本当に基本を学んでいれば2分も掛からないです。

10分以上かかるのは多分、プログラムを教科書で読んだことしかなくて、基本事項は知っていても、基本的な命令の『使い方』を知らないんじゃないかなと思います。

使い方を知らなくても、こういう問題の場合、1~100まで一つ一つの数字を自分で確認していけば、正しいプログラムは書けてしまうので。

プログラムは言葉や数学と同じで、使わないと身につかないものです。といっても大学レベルの勉強をしていれば、頻繁に出てくるレベルの処理なので、それほど多くの経験が必要という訳ではないです。
返信する
Unknown (ぷるるこぎ)
2007-05-10 21:39:18
「たったの2分でできる人間は問題を暗記しているか、あるいは経験を積んだ人間くらいだと思う。」
ちょwww2分は確かに早いけど5分くらいでいけるだろw
つか雇うんだから経験つんでなきゃ困るだろwww



…時給って知ってる?^^;
返信する
はじめまして ()
2007-05-11 00:41:04
仕事のレベルだとしたらこのくらいの問題は
2分くらいでできないとつらいですね・・・
(言語が自分の得意なものに限りますが)

仕事だとこんな問題に
何十分もかけられると
周りと連携できないんですよ・・・

仕事で作るシステムって
一人で作るものじゃないんで
流れ作業みたいになります。

でも、そういう人がいると
他の人が終わった仕事が
その人のところで止まってしまう感じですね。

自分の経験だとプログラムが遅い人って
まず「どのように解決するか」って
考え方ができないんですよ。
たぶん、このテストはそういうことを
調べてるんだと思いますよ。

ついでに言うとプログラムに独自性を出す人は
ちょっと困り者です。
なぜかと言うと分かりにくいもの書かれても
何年か後に変更や修正なんかあった場合、
そのプログラムの作者でない人は
「何をやろうとしているのか?」
から調べなくてはなりません。
きちんと説明とかいれてくれるといいんですが
大抵時間がないんでその辺は端折ります。
ってなことで無駄な時間を費やしてしまうんですよ。

そんなとこですね。
返信する
返信 (akkiy(管理人))
2007-05-11 08:52:01
本当に適当に見積もっただけなので、とんでもない時間です。
改めて見積もったところ、フローチャートを考えプログラム化して5,6分というところですか。

うーん・・・。言われてみると、そういう気もしてきますね。
智さんはおそらくそういう分野の方なんですね。なんとなくそういう文章ですし。

話は変わりますが、自分の場合、とりあえずC言語で考えてます。
専門系の方々はどういう系の言語を使っているんでしょうか。
解決する力がないって事は、プログラムの作り方が理解できてないわけですよね。
やっぱり文法だけ習って終わり、という学校とかあるんですかね?
フローチャートを脳内で構築できないと、できるものもできそうにないですし。
返信する
元です・・・ ()
2007-05-11 18:20:15
言語は自分の回りではJava、VB、C#が
多かったですね・・・
(もちろんCもできたほうがいいですよ)
あと、SQL文(主にOracleやSQL Server)で
複雑な事できる人は重宝されますね。
ぱぱっとテストデータ作りたいときとか。

解決する力がないってのは
「フローチャートを構築できない」
ってのは分かりやすいですね。
思いつきませんでした。
はい、そういう感じです。
文法知ってても、それができないと困ります。

冗談みたいですがSEとかで普通にいますよ、
そんな人。
FizzBuzz問題だと3と5両方の倍数の場合が
分からなくて「それは不可能です」って
断言してキレる人・・・

返信する
返信 (akkiy(管理人))
2007-05-11 22:24:19
>>智さん
貴重なご意見ありがとう御座います。
JavaとかVBあたりなら、何度か関連の本に目を通してみた事がありますね。
SQLはまだ読んだ事がないですけど。
機会があったら基礎の部分を勉強してみようかなと思います。

最初元ネタを読んだ時は、冗談のような話だな・・・と思ってた部分があったんですが、
やはり実際にそういう現象が起きてるんですね。
それと、基礎を学んでもどうやって使うのか理解できない人も多いかもしれません。
というのも、大概例題だけ習う事が多くて、実際にプログラムを作る事がないので。
自分の場合は制御工学系の学科なんですが、プログラムを組む訓練はやっておいた方がいいですよね。
返信する
やっておいたほうがいいですよ ()
2007-05-12 00:11:11
自分でゼロから何か作ってみるってのはいいですよ。
HPの掲示板とか、ちょっとしたゲームとか。

あと、よく職場で学ぶって人いますが
正直学べませんよ。
そんなヒマないですし
他の人も自分の仕事で忙しくて
誰も助けてくれませんから・・・

経験あろうがなからろうが
言語知ってようが知らなかろうが
いきなり仕事まわされて
「さぁ、やってくれ」って感じですね。

でも分からないからどうしようもない・・・
経験ある人に聞いても、そういう人は
経験の数だけ仕事量が増えて忙しすぎるので
助けてもらえない・・・

派遣の人ってそういう風に困ってる人が
結構多かったですよ。
会社が無理やりプロジェクトに入れた人とか・・・
返信する
返信 (akkiy(管理人))
2007-05-12 12:56:55
>>智さん
やはりそうなんですか。
確かに、職場というのはそういう状況だ、と以前聞いた事がありましたけど。
昔はまだ研修などをやらせる所が多かったらしいですが、今はそれもないですし。
これも一種の自己責任、という感じになってきたからでしょうかね・・・。

とりあえず、暇のあるときに遊び半分で何か作ってみようと思います。
授業で習った事の確認と応用を兼ねて。
貴重なご意見、本当にありがとう御座います。
返信する