2003年11月11日

プログラミングしたい人の声、聞かせてください


フリーウェア作家になろう!

4月に本を出しました。
でも、この本は、実際のプログラミングに関してはあまり突っ込んで書いていません。
そのせいか、もっと具体的にプログラミングが出来るようになる本が欲しいという声もあったりします。
ま、あの本のコンセプト的にはそこまでは書けなかったと言う言い訳もあるにはあるんですが……。

でも、僕がプログラミングを始めたのって、今から20年以上も前で、その時とは状況も変わっているし、いったい、プログラミングできない、挫折した、してみたいけど何から始めていいのか分からない、という人の状況ってのが分からないのです。

で、質問です。
なぜ、プログラミングに挫折したのでしょう?
何が、つまずいた原因なんでしょう?
どういうところをカバーしてもらえれば、プログラミングが出来るようになると思います?
プログラミングしたいのに二の足を踏んでいる理由ってなんですか?

参考までに、聞かせてもらえると嬉しいです。

Posted by CHEEBOW at 2003年11月11日 15:47 | TrackBack
コメント

ご無沙汰してます、ひぐちです。

「フリーウエア作家になろう!」は発売直後に買って、
その日のうちに読み切ってしまいました。
本当に楽しく、フリーウエア作家の気持ちを代弁して
くださっていると思います。

...で、本題ですが。

>なぜ、プログラミングに挫折したのでしょう?
>何が、つまずいた原因なんでしょう?

ありきたりの答えかもしれませんし、そもそも私が
答えるのはCHEEBOWさんのご期待に沿っていない
かもしれませんが...どうしても伝えたくって(^^

私の考えですが...プログラミングに挫折した
人は、自分の考えているソフトを表現する「方法」
を知らなかったのだと思います。
別にフローチャート等の書き方を知らなくたって、
表現する方法はいくらでもあると思いますが、
その「方法」の1つを知ることで、少なくとも人に
自分のソフトを説明できるようになり、そこから
第一歩が始まるのではないでしょうか。

このあたりの「方法」を、CHEEBOWさんのわかり
やすい文章で紹介していただけたら、きっと
たくさんの人がプログラミングの”とりこ”に
なると思いますよ!

長文、失礼いたしました。それでは。

Posted by: ひぐち on 2003年11月11日 23:16

コメントありがとーです>ひぐち
この方法ってのは、設計、実装、どっちなんでしょう?
でも、確かにフリーウェアの設計って言う部分、つまりアイデアを形にしていく部分てのはあまり語られていないかも。

Posted by: CHEEBOW on 2003年11月12日 10:32

>この方法ってのは、設計、実装、どっちなんでしょう?

主に設計ですね。最終的に画面遷移図とか状態遷移図などに落とせるとベストではないでしょうか。
実装に関しては、ツールや言語によってアプローチが変わってきますが、設計の部分は汎用的に「語れる」のではないでしょうか。

>でも、確かにフリーウェアの設計って言う部分、つまりアイデアを形にしていく部分てのはあまり語られていないかも。

上でも書きましたが、ここでつまずいてしまう人って、多いように思うんですよ。
アイデアだけはあっても、人に説明できるレベルまで形にできない、というか...

なんにしろ、ものすごーく期待してます!頑張ってくださいねー。

Posted by: ひぐち on 2003年11月12日 12:42

ん〜と、しゃしゃり出ていいっすか?
僕、設計って大っ嫌いです。
でも、プログラミングは好き。
設計なんか端折って、なんとなくぼんやりと「こんなんが作りたい」で始めて、なんとな〜く形にします。
本当はこれじゃいけないんでしょうけど。(^_^;
思うに、本当にプログラミングしたい人は、ほっといても自分で調べてなんとかするし、したいけどできないと言う人は、実はきっとそこまでしたいとは思ってないんじゃないかと。
それを言ったら元も子もないんですが。
CHEEBOWさんは、その「きっとそこまでしたいとは思ってない人」にプログラミングを楽しんで欲しいと思われてます?
前にもここにコメントしたような気がしますけど、ある程度乗り越えるべきハードルがあるからこそ、その後が楽しくなるんじゃないかと思うですよ。

Posted by: 太鉄 on 2003年11月12日 18:37

ただ、そこまで詳しい設計ってフリーウェア開発には必要ないかもなぁ、とは思います。>ひぐち
書類作るのって、しんどいし……。^^;
ま、でも、こんな感じにしたいっていう完成図をイメージするのは大切だと思います。

僕は、設計も開発も好きだし、嫌い。^^;>太鉄
一番好きなのは、企画かも。
ぼんやりと形にするのって、趣味ならそれでいいんだと思いますー。僕もそうだし。(笑)
「そこまでしたいとは思ってない人」にプログラミングして欲しいとも思ってないし、どちらかというとそういう人は僕の視野にはないです。
ただ、「したいけどつまずいてしまって諦めてしまった人」にはもう一度がんばれる機会が作れたらいいなと思ってます。
ハードルはあってもいいけど、僕にはそのハードルがなんなのか分からないんです。だから、もしそのハードルが僕に分かったなら、それを乗り越える方法を僕は用意することも出来るんじゃないかと思ったりはするわけです。
やりたくない人は、やんなくていいです。(笑)
でも、ちょっとでもやりたい人には、なんかアドバイスできたらいいなぁ、と。

Posted by: CHEEBOW on 2003年11月12日 18:50

プログラミングが難しいというよりは、その目的を達成する為に必要な学習や作業に見合うだけのモチベーションを維持するのが難しいんじゃないでしょうか。たとえば英語がペラペラ喋れたらいいなぁ思うけれども、学習を維持するだけのモチベーションにはならないといった感じ。

如何にして完成までモチベーションを維持するか? 自分の技術的・作業量的許容範囲外の物を作りたいと思ってしまった時、如何にしてそれを実現するのか(あるいはしないで、どう小さくまとめるのか)? その辺のアドバイスが欲しいです。

Posted by: tnd on 2003年11月12日 20:13

>その目的を達成する為に必要な学習や作業に見合うだけのモチベーションを維持するのが難しい

あ〜、これ正解かも。
僕の中では、「したいけどつまずいてしまって諦めてしまった人」は、「そこまでしたいとは思ってない人」です。
ほんとうにしたいと思っていれば、ハードルはハードルじゃなくなるんです。

Posted by: 太鉄 on 2003年11月12日 21:26

それって、すげー難しそう>tnd
モチベーションて、人のアドバイスでどうにかなるもんなんだろうか?
実際、自分の場合どうしてる?
僕は、モチベーション割と持続するかも。

確かにそうかも>太鉄
ハードルが「ある」だけでやめちゃうとか、常に他力本願とか、努力もしないで結果だけを求めるとか、さすがにそういう人は僕もどうしようもないと思いますねー。
でも、例えば、そのハードルを越えたいなぁと思ったときに、なんかこう、「光」見たいなものが見えると、軽々と越えられちゃったりっするじゃないですか。
そういう、アドバイスってのもあるんじゃないかなぁ、と思うんです。
これは誤解されたくないんだけど、僕も、やる気のない人はあんまし好ましくないです。
やる気のある人が好き。

でも、こういう話題って、すでにプログラミングできる人の方が興味あるのかしらん。

Posted by: CHEEBOW on 2003年11月13日 00:31

こちらでわ、はぢめましてなのです(へこり)。

をいらわ「実装」ができない方なのです。
#単に時間的余裕がナイからなのですが(泣)。

設計とゆーか、「こーゆーそふとつくりたいなー。」と
あれこれ考えているとき、かなりしゃーわせです。
厳密にフローチャート書いたり、ちゃんとした画面遷移図を
書いたりってのでわなく、めも用紙に「こーゆー画面でー、
ここにボタンつけてー、このボタンを押すとこんなことができてー。」
ってなかんぢでらくがきしてます。
#他人に見せられないです。汚くて(汗)。

ひぐちさん)
>アイデアだけはあっても、人に説明できるレベルまで形にできない

CHEEBOWさん)
>ま、でも、こんな感じにしたいっていう完成図を
>イメージするのは大切だと思います。

あいであをなんらかの「形」にするとゆーのわ、
かなり重要なことなのでわないかと思うのです。
をいらがやるよーならくがきなめもだったとしても、
「形」として残るので、あとあと何かの役に立つかもってことで。

自分なりの「形にして残す」方法を持っていれば、
実装して(もしくわ、他の人に実装してもらって)
世に送り出すチャンスがあるかもしれないと思うワケです。

・・・と、ややずれた話になってしまったかもですが(滝汗)。

Posted by: 酉野比奈子 on 2003年11月13日 01:01

CHEEBOWさん、こんばんわ。
実は過去、2回ほどプログラムにチャレンジした経験があります。初心者でも分かりやすいという本を買ったり、友人でプログラムの教師をやっている人にマンツーマンで教わったこともありました。しかし挫折。
どこで挫折したかというと、『変数』の概念が理解できなかったのです。数字や文字を入れておくための箱だと説明され、いろんな比喩でも説明受けましたが、いくら聞いても理解できませんでした。エクセルであるセルの条件を変えたら計算式が変わるという、”あるセル”も変数のひとつだと思いますが、それなら理解できるんです。でもそれをプログラム言語でどう表現したらよいか全くイメージできません。
またプログラムのソースを見ると、よく#とか{のような文字列が出てきますが、それだけで引いてしまうのです。
しかし例えばGUIだけで、ボタンをマウスで配置して、そのボタンにパラメーターを割り当てるだけで作れるようなものなら、なんとなく分かります。でも、テキストベースになってしまうと途端に拒否反応が・・・・。

これが、私がプログラミングに挫折した理由です。何がいいたいかうまく伝わればいいのですが。

最後になりますが、『フリーウェア作家になろう』は、読み物として大変面白く読ませていただきました。

Posted by: ふふふ on 2003年11月13日 01:50

どもですー>酉野
ま、でも形にするのって、結局文書化するか、図面化するかってことですよね。これって、なんか特別な技術っていらないような気がします。自分の覚書なら、お作法があるわけでもないし。
その覚書を「モノ」として展開していくのに技術がいるんですよねー。

なるほどー>ふふふ
中学校とかで習う、関数にも変数って出てきますけど、それはたぶん理解されてると思うんです。なので、変数の概念は理解されているんじゃないかと。
どちらかというと、プログラミングにおける変数の意味とか、なんでそれが必要なのかってのが分からないんじゃないかなと思います。
どうでしょう?
あと、記号が出てくると引いてしまうのって、漢字の多い本は引いてしまうってのと、同じようなことなのかなぁ。
ソースコードには意味のない記号はなくて、すべてに意味があるはずなんで、たぶん意味を理解すれば抵抗がなくなると思います。

Posted by: CHEEBOW on 2003年11月14日 13:37

ふふふさんの話を聞いて思い出しました。
先の『「したいけどつまずいてしまって諦めてしまった人」は、「そこまでしたいとは思ってない人」』に補足。

「ただし、DNAレベルでプログラミングに向いていない人は除く」

別にそういう人を馬鹿にしてるとかではなく、そういう人もいるんだってことです。
ふふふさんがまさにそういう人なのかも。
走るのが得意な人がいれば、苦手な人もいる。
単にそれだけです。
僕が今まで出会った中にも、2進数の計算がどうしてもできない人(これは最近のプログラミングにはほぼ必要無いけれど)、for文やwhile文が何回ループするのか頭の中で数えられない人がいました。
そういう人でも、なんかのきっかけで、ある日突然プログラミングができるようになったりするものでしょうか。

Posted by: 太鉄 on 2003年11月14日 17:14

>太鉄
「DNAレベルでプログラミングに向いていない人」ってのがほんとに存在するのかはちょっと僕には分かんないなぁ。
でも、得意な人、苦手な人はいると思う。
ただ、苦手なものが克服できる人もいるよね。
2進数の計算も、ループの回数も、ちょっと見方を変えてみたらすっと理解できたりするのかもしれない。
実際、僕はそういう瞬間を何度も体験してます。
あんなに、泳げなかったのに、今はなんとかぎこちなくも泳げるし、とかそんなことって結構あると思うんですよ。
どうかなぁ。

Posted by: CHEEBOW on 2003年11月14日 17:23

太鉄さん)
>「ただし、DNAレベルでプログラミングに向いていない人は除く」
「のみこみの悪いひと」とゆー方にわ会ったことあるですが、
「DNAレベルで」ですか・・・会ってみたいかもです(目がまぢ)。

CHEEBOWさん)
>ちょっと見方を変えてみたらすっと理解できたりするのかもしれない。
コレは、何度も経験してますです。
ぢぶん自身もですが、他人にものを教える時、
相手にあわせた「たとえ話」ができると
あっさり理解してもらえたりしますねぃ。
教える側のテクニック(←?)として重要かもです。

学生の時の話なのですが、全く別の分野(確か、理学(数学)系)から
うち(工学(情報)系)に進学して、パソコンやワークステーションに
さわるのが生まれてはじめてとゆー方のプログラミングの課題の
面倒をみたことあるです。
その方曰く「プログラミングって、パズルみたいだねー。」

実現したい機能を実装するための命令(関数)を探してきて、
その命令(関数)をうまいこと組み合わせて、1つのプログラムにする。
うまいたとえだなーと思ったです。
パズルでいうところのピースを「探すのが苦手」とか、「めんどくさい」と
投げてしまう人が、「プログラミングに向かない人」なのかも・・・(汗)。

Posted by: 酉野比奈子 on 2003年11月14日 23:45

>どちらかというと、プログラミングにおける変数の意味と>か、なんでそれが必要なのかってのが分からないんじゃな>いかなと思います。どうでしょう?

まさにそうです。数学は得意じゃなかったけど、関数でいう変数は概念が分かります。でもプログラムになると突然わかんない。

>あと、記号が出てくると引いてしまうのって、漢字の多い>本は引いてしまうってのと、同じようなことなのかなぁ。

でしょうね。実は私、未だにHTML書けないのです。
例えば・・・

という一行を、打ち込めと言われたら打ち込めません。何度でも忘れるんです。だから全て単語登録しています。こんな単純な式でも""が出ているだけで、怖いのです。

しかし、一方では中国の漢詩などを1ページ分記憶して書けたりしますし、将棋とか好きなので、昔は盤や駒がなくても頭に浮かべるだけで対局ができました(今は自信ない)。だから、特に記憶力が悪いわけでもないんですよね。

やはり、私は太鉄さんのいうように、DNAレベルでプログラムに向いていないタイプかもしれませんが、やりたい意思はあるんですよね〜。

なんか、いいヒントがあればすごく期待しています>CHEEBOWさん。

Posted by: ふふふ on 2003年11月14日 23:46

ちょと失礼な言い方だったかもしれません、すいません。>「DNAレベルでプログラミングに向いていない人」
でも僕には、前述の2進数の計算ができない人、ループの回数が数えられない人の、「何が分からないのか」が「分からない」んですね、どうしても。
僕だって何か特別な勉強をしたわけじゃなく、その辺で売ってるような教科書読んだ程度な訳ですよ。
それが同じ手順踏んでも理解できないというのは、もう、「DNAレベルでプログラミングに向いていない」んじゃないかとか思ってしまうわけです。
正直、分かっちゃう人が、分からない人にアドバイスするのは非常に難しいと思います。
長嶋茂雄が、一般人に分かるようなアドバイスができないようなもので(別に僕が天才だとか言っているわけではなく)。
「DNAレベルでプログラミングに向いていな」かったけど、それを克服した人、要するに努力してプログラミングができるようになった人ならば、的確なアドバイスができるのではないかと思います。

Posted by: 太鉄 on 2003年11月17日 11:44

そっすねー。> 酉野
教え方のテクニックってあると思うんです。
そういうテクニックのある人に教わることが出来るならとても幸せです。

「プログラムになると突然わかんない」ですかー>ふふふ
それはきっと、概念の抽象化が出来ていないのかも。
たぶん、理解してるんじゃなくて、覚えちゃってるんでしょうね。
エラーが怖いみたいな感じでもあるし、完璧を求めちゃってるんじゃないかなぁ、と。
プログラミングって、ほとんどが間違えた部分の間違え探し(これがデバグってやつですねー)なので、完璧は必要ないです。実際、HTMLにしても書いてうまく表示されなければ直せばいいんです。
なわけで、一番いいのは、サンプルプログラムを打ち込んで、それを修正して、ぶっ壊しつつ理解するってことなのかなぁ、と思います。
あ、変数の考え方については、一応どうしたら分かってもらえるのかを今考え中です……。

そうそう!>太鉄
僕も、「「何が分からないのか」が「分からない」」んです。
だから、それを知りたいなぁ、と思って書いたのがこのエントリなのです。
それが分かれば、いろいろな方法でそれを分かるようにするためのメソッドを考えることが出来るはずで……。
今ある、技術書や、メソッドで、分かるんなら、新しい方法はいらないもんね。
なので、それを考えるためにも、情報収集しているところなのです。

で、

>「DNAレベルでプログラミングに向いていな」かったけど、それを克服した人、要するに努力してプログラミングができるようになった人ならば、的確なアドバイスができるのではないかと思います。

これ、確かに理想だけど、なかなかそれも難しいんじゃないかな。
それに、これをベースに考えちゃうと、僕レベルでもすでに的確なアドバイスは出来ないんじゃないかと思っちゃうし。^^;
ま、難しいのは分かった上で、なんかやってみたいなぁ、と思っているのです。うん。

Posted by: CHEEBOW on 2003年11月18日 11:32

僕は、そもそも人にものを教えるのがとても苦手なんですよね。
分かり易いように噛み砕いて、ってことができないみたい。
『「何が分からないのか」が「分からない」』というのは、分からない人に「これが分からないの」と言われても、理解できないという意味です。
あくまでも僕の場合ですけど。
どうして分からないのか、が分かれば説明のしようもあるんでしょうけど、分かっちゃってる人にはそれが分からない。
分からない本人も、どうして分からないのかを相手に説明できれば的確なアドバイスを貰える筈なんだけど、そもそもそれが分かってればアドバイスは必要無いし。
なんか端から否定するようなことばっか言ってますけど、あくまでも僕の場合、ということで。
的確なアドバイスができるならできるで、それはとても素晴らしいことだと思いますです。

Posted by: 太鉄 on 2003年11月18日 14:49

私は8bit機>ポケコンと来たので、BASICには
強かったんですけど、ちょうどプログラムをやりたい
お年頃の時に、なんだか時代がC言語1色になって
いったのと、その時にCが扱える機械が手元に
無かったという事で、挫折しました。
なんだか、プログラムはCでやらないと許されない
ような風潮が駄目でした。
それと、それに追いつこうとして追いつけないような
BASICの無理やりな拡張(QuickBasicなど)も
なんだか合わなかったんですね。

まあ、そんなこんなでプログラムをしない日々が
続いてきましたけど、パソコンを手に入れた頃から
awk>perlと来て、今はperlだけは何とかなって
いるかなあというところです。
自分がしたいと思うことが容易に実現できる言語と
いうのがたまたま無かったせいで挫折したんですね。

ところで、最近はLUAというのに興味があります。
PLUAというのがこれまた良く出来ているんです。
メモ帳に書いて実行したり出来る割には、
PocketBasicよりも強力な気がします。

Posted by: あおしま on 2003年11月18日 15:19
この記事へコメントする