プログラミングが苦手・・・悩んでいます

このQ&Aのポイント
  • ITヘルプデスクで働いている者ですが、プログラミングが苦手で悩んでいます。昔プログラマーとして働いた経験もありますが、読み解けないプログラムやロジックが浮かばないことが多く、新しい言語の習得も困難です。
  • プログラミングの思考プロセスが分からず、頭の中が混乱してしまいます。特に新しい言語の仕様を覚えるのが苦手で、ヘルプやチュートリアルが分かりづらい場合が多く、情報収集が難しい状況です。
  • 上司や他のプログラマーに頼ることが多く、単純な解答を聞いてしまうと自己評価が下がってしまいます。上達のためのヒントや思考法についてアドバイスをいただきたいです。
回答を見る
  • ベストアンサー

プログラミングが超苦手・・・悩んでいます

はじめまして、現在、一般企業にてITヘルプデスクとして働いているものです。 業務の一環として業務アプリの作成(=プログラミング)作業があるのですが、これが昔から非常に苦手で苦戦しております。 実はかつてプログラマーとして勤務していたのですが、適性の無さを痛感し挫折しました。 新しい言語を習得する度に参考書を買い込んだり人に聞きまくったりして得意な人の何倍も努力しても、そこまでやってもどうしても読み解くことができないプログラムがあったり、良いプログラムのロジックが思い浮かばないことが度々ありました。 現在はプログラミングはあくまで業務の一部でしかないので、何とかして乗り切りたいと考えてはいるのですが・・・新しい言語なので今までの経験が生かせず、またしても苦しんでいます。 (ちなみDBMagicという、市販の参考書も存在しないようなマイナーな分野です。) うまく説明できないのですが・・・ 例えば、人の話を聞いて理解する時や、本を読んで内容を理解する時などは順番に頭の中で単語を理解したり文脈を理解/推測しながら全体の内容を把握していく、というような感じだと思うのですが、それがプログラミングの場合だと何をどこからどのように考えていけばいいのか、いわゆる思考のプロセスのようなものが分からないのです。どこから考えていけばよいのか考えているうちに頭が混乱状態におちいってしまう、という感じです。 今回のように新しい言語の仕様を覚えていくのが特に苦手で、自分は頭が固いせいなのか言語に付属しているヘルプやチュートリアルのようなものを参考にしても、とても分かりづらい日本語で書かれている場合が多く、何度読んでもすんなりと頭にはいってきません。VBやJAVA、SQLなどのメジャーな言語であれば初心者向けに分かりやすく解説された参考書や勉強サイトなどが膨大にあるので今まで何とかなってきたのですが、今回は言語がマイナーすぎてそういった情報が一切なく、ヘルプを調べたり上司に聞くしか調査する手段がありません。 結局ゆきづまって上司に聞くことが多いのですが、答えを聞いたら以外と単純なことだったり、「なるほど!」と感心してしまうばかりで、自分はなぜそんなことが思い浮かばないのだろう、考えられないのだろうと思うと、そのたびに落ち込んでばかりいます。 当カテゴリにはプログラミングを職業にしていらっしゃる方も多くいらっしゃると思うのですが、プログラミングが上達するコツや考え方のプロセスなど、苦手だったプログラミングが得意になった方の打開策や思考法などがありましたら、是非とも参考にしたいと思いますので、アドバイスよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tasshi_
  • ベストアンサー率50% (1/2)
回答No.2

こんにちは. 私はそれほど長い業務経験はないのですが,プログラミングは得意な方だと思っています. DBMagicという言語(というよりツール?)は知らないので,憶測で話をしてしまい申し訳ないのですが, かなり特殊な言語のようなので.最初はできなくても別に悲観する必要はないと思います. 上司の方も,昔は同じような経験をしていると思いますが,どうでしょうか. 普通,一度同じようなパラダイムの言語を学んでると,新しい言語を理解するのは早いですが,知らないパラダイムの言語はなかなか覚えられません. たとえば,C++で多くの経験を積んでいる人でも,Javaを学ぶのは楽だと思いますが, SQLやPrologのような言語を学ぶのは,結構苦労します. 次に新しい言語を学ぶ時ですが,私の場合とにかく適当なサンプルコードを写して実行させて動作を見たり, 改良しながら書き方を覚えていきます. 仕様書的な本は,ある程度プログラムが書けるようになって,理解を深めたいときくらいしか読みません. とにかく,「よくわからないけどこうすれば動く」というようなことをたくさん覚えて実務を積んで, 徐々に言語や開発環境に対して深い理解をしていくのが,新しいプログラミング言語を学ぶ近道だと思っています. (わからないコードを理解するのは,実行させて途中経過や最終的な結果を見るのが結局一番早いです..) また,ロジックを考えるのは,言語依存ではない部分も多いと思うので,ご経験のある言語で実装されたアルゴリズムの本 を一冊読むと良いかもしれません(できれば名著と呼ばれる本を). そこに書いてあるアルゴリズムが直接役に立つことは少ないと思いますが,参考にするべき考え方はたくさん学べます. 人並みの意見かもしれませんが,何か参考になれば幸いです.

その他の回答 (3)

回答No.4

趣味のプログラマーですが 私も、長い事プログラムが上達せずに悩んでおりました。 最近急速にいままで理解できなかった部分が解るように なっていたので自己分析しておりました。 参考になればと思い投稿させていただきました。 ■プログラムが上達しなかった時 1.細部から入り全体を見ていなかった。一つの命令の理解を一つの解説等からその場で理解しようと やっきになっていた。 2.理解出来ない、ソースは打ち込まなかった。 ソースは理解できてから打つ物だと決めつけていた。 3.複雑に問題が絡んでいた。 命令が解らない+アルゴリズムが解らない+やりたい事がぼやけている と言った具合に複数の問題が絡んでいた。 とまあ、主な原因はこんな感じでした。 これらを下記の様に改善したら劇的に変わりました。 ■変わった点 1.全体を見る事でこう変わった いまやろうとしている事ではなく先に必要になる 部分の情報収集を休憩がてらやっておく事で、それに 取り掛かる時には用語等が頭の片隅にあり、解説を見た 時に何を言っているのかイメージがつきやすくなった。 さらに、全体を見て無理そうな部分を前もって把握出来 別のやり方を用意する準備時間が取れる様になった。 2.理解出来ない、ソースも打ち込む様になった。 解説書などは、英語から翻訳された物が多く、難しい表現 なので命令の動作を勘違いているケースが非常おおかった。 最近は野球やバスケットを習うように自身で実行することが 多くなった。これはキャッチボールと言う簡単な動作でも 言葉や文章で習う事を考えればどれほど複雑に書かないと いけないかを考えればよいと思います。 手の角度や力の入れ具合等数字で言われても理解出来ない様な 事に近い。 3.複雑に問題が絡んでいたのを問題整理、分解した。 2つ解らない部分があると2倍の時間がかかるだけと思っていたけ ど、実際にいくつかの作業でみると解決するのに4倍以上の時間 が掛かっていた。挫折した作業を思い出してみると3つあった。 一つの解らない所は、予想やトライアンドエラーでさほど苦労無く 解決出来る事にきずいたので、問題を一つに絞り込む事に全力を 使った、半年掛かっても解決できなかった問題もあっさりクリアできた。 忙しくても、上記の様に自信の問題を調査してみる事が最も近道だと 思います。 ■独り言 ちなみに、コードを入力してみるとか、問題を切り分けるとか 全体をみるとかと言う事はたくさんの本や人が言っていた気が しますが、私の場合は単に実践出来てなかったのです。 私は、まだ、たくさんの事も見落としていると思いますが みる目や聴く耳をもっと磨いて行きたいです。 お互いがんばりましょう。

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.3

言語の仕様をマニュアルや参考書に書いてある単語や文脈の 意味を理解/推測しようとする事は案外効果が薄い物です。 単語の意味を追いかけるのではなく自分がやろうとしている 事を実現する為にはどうしたら良いかを考えるべきです。 例えば、日常的な挨拶の言葉を他国の言葉ではどう言うかと いう様に。 データベース処理にしても 1)データベースに接続する。 2)データベースをオープンする。 3)SQL文を作成して実行する。 4)データを取得する。 5)データベースをクローズする。 6)データベースの接続を解除する。 といったのが基本的な流れとなりますが、これを 1)トランプを棚から出してくる。 2)トランプをケースから出す。 3)指を鳴らす。 4)カードをめくって見る。 5)トランプをケースにしまう。 6)トランプを棚に戻す。 の様に、自分にとって身近な事に置き換えてみると、何を しようとしているかがイメージしやすくなります。 後は、マニュアルから該当するコマンドを探してくるだけ です。 #データベースの種類が変わったとしても基本的には同じ #様な事しかしていません。

  • sgwjn
  • ベストアンサー率70% (47/67)
回答No.1

このような考え方については、個々人によって適した方法は異なると思いますので、こうすれば良いと言った明確な答はないと思います。 個人的には、処理全体を初めは大きく、その後細かく分割して考えていくことが多いでしょうか。最初から実装レベルで細かく考えていくと、全体像を把握しにくくなりますから。 英語を訳すときに、文の頭から訳していくのではなく動詞以前(主語)、動詞(否定かどうかとか)、動詞以降(その他修飾とか)などのブロックに分けて考えるようなものです。 例えば、数字をソートするプログラムを作るとします。 大まかに処理を考えると、『入力』→『ソート』→『出力』となりますよね。 その次に、各処理をもう少し細かく考えます。 例えば、入力であれば 『入力値の受取』→『入力値の健全性検査』→ データをソート処理へ送る のようになると思います。 その後、また各処理をもう少し細かく考えて行き、最終的にプログラミング可能なところまで落とします。 この例で言えば、『入力値の受取』は、例えばCではscanf()を終了条件が満たされるまで繰返す方法などが考えられます。ファイルから読込むかもしれません。 『入力値の健全性検査』では、少なくとも数値に変換できない入力値はエラーとなるでしょう。エラーがあれば、メッセージを出力して処理終了となるかもしれません。 このように、慣れないうちは段階を踏んで徐々に細かいところまで考えていくようにすれば、自分の考えを少しずつまとめながら作業を進めていけるので良いのではないでしょうか。それに、この類の考え方は、フローチャートも比較的書き易いのではないかと思います。 あと、新しい言語を覚える時ですが、私は特にチュートリアルやリファレンスを読んで、詳細な言語仕様やAPIなどを覚えたりはしません。 一番最初は、各種変数と関数の宣言方法、代入文、演算子、条件分岐(if)や反復処理(for)の書き方を覚えるくらいです。基本的に、これだけ押さえておけば大体の処理は書けます。その後で、必要に応じて標準関数やクラス、言語特有の処理(ポインタ、構造体、継承とか)などについて調べていきます。 これもアルゴリズムの考え方と同じで、初めに大まかな基本を押さえて、必要に応じて徐々に細かく調べていくということです。 初めから一度に何でもかんでも手を出しても、効率は余り良くないですし、不要な部分にまで時間を費やしてしまうことも少なくありません。 初めてのこと、慣れないことについては、最初は最小限のことから始めて、必要なときに必要なことを調べる、それを繰返して段階を踏んで進んでいくのが、結局は一番効率が良いのだと思います。

関連するQ&A

  • プログラミングが苦手。

    C言語をやっているのですが、つくづく苦手です。 周りの理解速度に圧倒的に遅れをとっています。 ミクロな思考が苦手です。 どのように練習をすればいいでしょうか。 考え方・気構えなどご回答お願いします。

  • プログラミングが苦手だったけど今は得意な方いますか

    現職でSEやってる者です。4年目です。 元々文系で、入社して始めてプログラミングを学びましたが、難しすぎるので困っています。 同じ境遇だったのに、今は得意な方いれば、勇気をください。 私の簡単な経歴です。 1.入社して3ヶ月pg研修 2.配属後1.5年pg開発をする 3.pg苦手すぎるため要件定義チームに飛ばされる まず1.についてです。新入社員8人のうち文系は私含め3人。sql,javaを学びましたが、テストなどでは私がぶっちぎりの最下位(javaのクラスや継承の概念が例題を50個解いても理解できず。) 2.では実際のweb画面のpgのため開発を担当させられましたが、先輩などに比べて4,5倍くらい工数がかかる、先輩に解説されてもクラスなどそもそもの概念を理解していないため説明を聞いて頭が真っ白になる。 参考にするソースがないと何を書いていいかわからず、何をやってもわからなかったため結局ほぼコピペ。都度作成したpgの復習を行い、やっと理解したと思いながら次のpgに進むが、結局復習した際の理解があってなかったようでまた振り出しから学ぶ→結局根本的に理解できていない→繰り返し…でした。 今でも、クラスの中で初期化する意味がわからないし、解説を聞いても「結局これをする意味はなんなの?」となり、理解していません。 gitも扱いましたが、仕組みを理解していなかったためか、一部ぐちゃぐちゃにしてしまい、怒られたことなありました。 3.上司からpg無理だと判断され、開発から離れ、sqlだけ扱う場所に異動。簡単なsql(2階joinしてるくらいのもの)ならパッと描けるようになりましたが、javaで書いたソースの中で持っている値(0,や1など)が where句にセットされるなど、sqlが複雑化すると同じく頭が真っ白になり、解説を何度聞いても言っている意味がわからなくなる。 もう正直限界です。向上心はあるので、何度嫌な顔されても、javaで幼稚なコードを書いていても、頑張っていればできるようになると信じてやってきましたが、sqlが少し長文になっただけでできない始末です。 毎回、sqlを作成するごとに、劣等感で溢れて、悔しくて毎日研修の時のことを考えて心が苦しくなります。 私と同じように、4~5年目までは開発していたけど全く意味不明だった、でも後から得意になった人などいますでしょうか。 現在pythonとsqlの勉強を独学で始めましたが、javaのとき見たく何年かけても一生わからないんじゃないかと思うと、怖くてたまりません。もう自信は底を尽きています。 他の人がどうか関係ないのも重々承知しておりますが、希望が見えません。私と同じように、5年目くらいまでは頭真っ白になるくらい理解できなかったけど、後々pg得意になった人ってこの世にいるんでしょうか? 教えてください。

  • プログラミングについて

    プログラミングを今年の四月にはじめたばかりなのでまったくプログラミングの知識がない状態で、大学の3年の授業でJSPをやっているのですが、ほとんどわかりません。(大学には3年次編入で入りました) ちなみにJSPは授業をとらないといけません。 しかし今、一年の授業でC言語を習っていますが、JSPで使うのはJavaなので、C言語をこのまま勉強するべきなのか、それともJavaをやったほうがいいのか迷ってます。プログラミングに関してもっている参考書はやさしいC、明解C言語入門編、 JSP業務アプリケーション短期開発入門です。 何かいい教科書や勉強法、アドバイスがありましたら教えてください。

  • プログラミング、または天才について

    現在C言語によるLinuxプログラミングを勉強しています。 Linuxもプログラミングもまだまだ初心者ですがなんとか勉強しています。 このまま勉強を続けていき、将来的にはLinuxを好きなように弄れる人間になりたいと考えています。 そこでいくつか質問があります。 まず、そういう人たち(例えばGNUやkernelの開発グループ)は一日にどれくらいプログラミングをしているのでしょうか。 廃人のようにゴリゴリキーボード叩いているイメージがあります。 また何歳ぐらいからコンピュータを触っていたのでしょうか。 20代から本格的に勉強を始めても彼らのようなレベルに達することは可能でしょうか。 それと、僕は情報系の学部に所属する学生であるにも関わらず数学・物理が苦手です(中学では数学は得意でしたが高校で挫折しました)。 パズルも苦手です。 プログラマーに数学が必要かどうかという議論はこれまで数多くなされてきたと思いますが、そういう人たちは数学・物理は得意なんでしょうか。 ある分野の天才というのは長い時間その分野に情熱を抱きやり続けた人間だと思います。 しかし僕がこの勉強を始めたのはつい最近です(中学ぐらいから憧れはありましたが勉強はしてきませんでした)。 彼らと経験値において大きなギャップがあります。 またプログラミングに限らず解けない問題があると無性にイライラします。 どうやっても解けない問題にぶつかったり、やっとのことで書き上げたコードも他人のもとよく書けたコードと比較したりすると劣等感を抱だき思考が脱線します(自己嫌悪です)。 僕はおそらくプログラミングに向いていないのでしょう。 しかしなぜか諦めきれないでいます。 おそらく昔から抱いていた「ハッカー」や「エンジニア」に対する憧れがあるからでしょう。 成人を越えた今でもそれを捨てきれません(思考も精神も凝り固まっているのでしょう)。 少し話が脱線してしまいましたが、大人からプログラミングを始めて大きなことを成し遂げた人はいるでしょうか。 プログラミングに限りません、あらゆる分野においてですが。 書いてる途中にいろいろな疑問が思い浮かびそのまま書いています。 かなりの駄文になりましたがみなさんの意見をお聞かせください、お願いします。 本文はもっと短くまとめられたでしょう。

  • プログラムが苦手なのに、仕事してます。

    プログラムが苦手なのに、仕事してます。 得意な方は、どのように勉強なさったのか、 ご教授願えないでしょうか。 文系大学卒業後に、IT企業に入社したのですが、 プログラムが苦手で困っております。 仕事は、他人のソースを読んで参考にしながら書いているのですが、 根本的な理解をしていないので、常に不安です。 言語仕様すら理解できていない私は、 仕事を辞めた方がいいとも思えてきてます。 どうぞ、よろしくお願いいたします。

  • プログラミング言語の習得

    プログラミング言語の習得 私は現在SEへの転職目指しております。 特に社内ではプログラミングの業務をしているわけではありませんが、 独学でC言語の学習をしております。 (就職前にVBを学習、C言語は1ヶ月前からはじめ参考図書「猫でも分かるC言語」を通して 学習し終えた段階です。) プログラミングの言語は多数存在する昨今、どの言語を習得すべきなのか、 このままC言語を学習し続けていいものなのか迷っております。 目標や用途によって習得すべき言語は異なってくるということは耳にしますが、 実際C言語のプログラミングでは何ができるのでしょうか?

  • プログラミング 勉強法

    プログラミング 勉強法 プログラミングの勉強法がわかりません。例えばC#やVBなどで入門書に載ってるような1つ1つの機能はできるのですが、逆にいえばそこまでしかできません・・ 一応業務ななんとかついていけてるのですが 上司を見るとすらすらとプログラムを理解し即時解決ができています。そこまでの域にまで進みたく、参考書を漁ってもほとんどtextboxがどうとかRadioボタンがどうとか機能説明ばかりでどうしたものかと思っています。プログラミングが早く上達する為にはひらすらプログラムを組む必要があるのは承知してるのですが勉強方法について先で見えません・・ 皆様はどのように上達されたのでしょうか?

  • プログラミング(数学的) 初心者です

    今年、大学の情報科学科に入学した一年生です。 大学の授業で初めてプログラミング(C言語)を学んでいるところです。 その授業というのが、いくつもの課題が提示され実際にパソコンでプログラミングするというものなのです。 基本中の基本はなんとか理解でき書けるんですが、数学のような応用問題(素数がどうのや行列など)のC言語ではどういう思考回路を持てばよいのか分りません… 数学みたいに基本的な思考方法を覚えた方が良いのでしょうか? 見れば分るのですが自分ではなかなか思いつかないようなことばかりなので 例えばfor文自体の意味は分るのですが、一般的にどういう表現のときに用いるのかが分らないのです。 何か良い本などがあれば教えてください。 回答よろしくお願いします<m(__)m>

  • プログラミング言語に詳しい方お願いしますm()m

    いつもお世話になります。 プログラミング言語を全く知らない素人なのですが、 最近ロボットマウスというソフトを知り、パソコンの自動化に感動しました。 そこで、自分でプログラミング言語等を使って作れば、自分の作りたいものが作れることまで知ったのですが、調べていくうちに、プログラミング言語によって、得意、不得意があるということを知りました。 そこで、自分の作りたいと思っているツールが何の言語なら適しているのか、ご教授いただきたく質問させていただきました。 自分の作りたいツールなのですが、ウェブ上にあるURLや、記事の内容、価格等書かれているものをエクセルに引っ張ってデータ入力を自動でさせたいです。 プロセスとして、まず作ったツールのアプリを起動させたら、エクセルを自動で開いて、「○○のカテゴリを選んでください」等のメッセージを出して選ぶ。 その後自動でブラウザを開いて、そのサイトに自動で行き、○○のカテゴリの引っ張ってきたい記事の部分を選んだカテゴリ検索エクセルに引っ張ってデータ入力も自動でさせるには、どのプログラム言語が適しているのでしょうか? また、ロボットマウス等の自動化のツールが何の言語でできているかも合わせて教えて頂けると非常にうれしいです。 ど素人なのでうまく伝えきれていないかもしれませんが、よろしくお願いします。

  • プログラミングの勉強

    業務などで必要なソフトを作成できるようになりたいので プログラミングの勉強をしようと思うのですが、 たくさんの種類があってどれがいいのかわかりません フリー環境がそろい 習得のための参考書などが充実していて 広い範囲の用途に対応できるプログラミング言語は何でしょうか? 主に Windowsで動くGUIのソフトを作成したいと思っています。 Javaの関係でも Java Beans とEclipseとかあり、わからなくなりました。 よろしくお願いします

専門家に質問してみよう