質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.63%

プログラミングの考え方について

受付中

回答 6

投稿

  • 評価
  • クリップ 4
  • VIEW 1,835
退会済みユーザー

退会済みユーザー

現在、駆け出しのプログラマーですが
フローチャートや記述の時に「固定的に考え過ぎている」「柔軟性をもって」とよく言われます。
プログラムの処理なども苦手意識があり、教えていただいて応用がきかないことが多く悩んでおります。
プログラミングに役立つ本や考え方、役立つ数学など何かヒントがほしいです。
よろしくお願いします!

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • yohhoy

    2019/01/31 21:57

    ご自身のスキルレベル(何を知っている・何を作れる等)をもう少し記載されると、より有意義な回答がつくのではと思いました。

    キャンセル

回答 6

+18

「固定的すぎる」も「柔軟に」も、どちらもまだあなたが「十分な選択肢や使える道具、知識を持ち合わせていないため、選べるものが少ない」ことが原因である可能性が高いです。そういう意味では、初心者への指摘としては「絶対当たっていて、無難な指摘」です(誰でもできる指摘。こう言っておけば大抵初心者を黙らせてへこませられる)。

まれに天才的な人がいて、いきなり想像を超えるやり方や手段を発明したりすることはあるかもしれませんが、まぁ、そういう人であればここで相談はしてませんよね?ってことは、地道にいろいろやってみて、成功、失敗含めて「場数を踏み、いろんなケースに対処する術の持ち合わせを増やす」が一番遠回りなようで近道だと思います。

「固定的すぎる」とか「柔軟じゃない」なんてのは誰でもできる指摘で、むしろ今のあなたに必要なのは「どうすればいいか」という方針やアドバイスかと。どういう状況でプログラムを組まれているかなどがわからないので、おそらくみんな無難なアドバイスしかできないと思いますが、少なくともいえるのは「悩んでる時間で手を動かして、やったこと無いことをやってみよう」です。

失敗することもありますし、やったことや費やした時間が無駄になってしまうように思うこともあるかと思います。ですが、失敗は「こうしたら失敗する」という経験になりますし、成功は「こういうやり方で成功した」という経験、どっちも経験です。そういうのをいっぱい繰り返してため込んでいけば、「こういうときは、こんなやり方とか、こんなやり方がある。ちなみにこういうことをやると失敗する」ということを言えるようになります。これが「固定的すぎず、柔軟」ということかと。

焦らずいろいろやってみましょう。

ただ、1つだけ。プログラミングや開発の世界は、何かを実現するための方法がものすごくたくさんあり、同じ事をやるにも多彩なコースがあります。1回の成功で、そのどれかに固執すると、「経験はあるのに、考えが堅い、柔軟じゃない」というエンジニアになってしまうので、なるべく「手札をたくさん増やして、どんな状況でも複数の選択肢を持って戦える」ようになることを目指しましょう。

ではでは。参考になれば幸いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+10

言葉というのは文脈を考えないと間違えます。字義だけではなく、状況によって意味が変わってくるからです。

例えば「お前はなんてバカなんだ」というのが、ある場面では暴言であり、ある場面では感謝の言葉になります。

ですからこの場合の「固定的に考え過ぎている」「柔軟性をもって」がどういう意味なのかを考えなければ対策は立てられないでしょう。

例えばこの質問ですが、私はそのような感想を持ちました。

javaで素数を出力するプログラムについて

確かに要件は満たしています。ちゃんと読んでいませんが、おそらく動くでしょう。

「プログラムは動けばいい」のであれば、問題ないはずです。

しかしこのプログラムは「1 から 10」を「1 から 100」に変えると破綻します。「動けばいい」という考えで作られているからです。

プログラミングで最も多いのは新規開発ではなく保守です。このプログラムを保守しようとすると、全面改修になってしまいます。

「もっと柔軟に」というのは、「与えられた条件が変わるとどうなるか」「出題者の意図を把握しているか」という、「もっと問題以外のことも考えなさい」という意図で言われたことなのではないかと推測します。

つまりあなたは「字義だけで考えるのではなく視野を広く持って状況を考えろ」と言われたのです。

「プログラミングに役立つ本や考え方、役立つ数学など」も大切ですが、この問題の解決に役に立つかどうかはわかりません。ただ、保守性を考えるのは全てのプログラムの基本ですから、大切にしてほしいと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+4

フローチャートや記述の時に「固定的に考え過ぎている」「柔軟性をもって」とよく言われます。

これ、設計をちゃんとしろって言われています。
データの持ち方やフローの設計が充分でないのでしょう。
「固定的に考え過ぎている」「柔軟性をもって」と指摘している人もあまり良い指摘ではないのですが、大抵のコードは「車輪の再発明」であり、独創性な設計となるケースは少ないです。

より多くの設計を見ることで、設計の常識が身につきます。
会社であれば、過去のドキュメントが揃っていると思うので、資料の読み込みから始めてみては?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/01 11:24 編集

    > プログラムの処理なども苦手意識があり、教えていただいて応用がきかないことが多く悩んでおります。

    とあるので設計ではないように思います。
    駆け出しプログラマーにそこまで設計やらせることってないように思います。
    「フローチャート」についても新卒プログラマーに頭で整理させたり
    処理の考え方を身につけさせるためにしばしば用いられるものですし。
    もちろん設計の考え方を身につけるのも有用なので間違いとは思いませんが、
    質問者さんの状態からは少し離れるかなって。

    キャンセル

  • 2019/02/01 11:37

    > プログラムの処理なども苦手意識があり、教えていただいて応用がきかないことが多く悩んでおります。

    網羅的な処理が見えてないだけだと思いますよ。コーディングとは別次元の話をコーディングの話しと捉えているのだと思います。
    本質は設計の話です。

    > 「フローチャート」についても新卒プログラマーに頭で整理させたり
    処理の考え方を身につけさせるためにしばしば用いられるものですし。

    これこそ、車輪の再発明に他ならないので、柔軟性や独創性の入り込む余地は無いです。

    柔軟性とはかけ離れた事象に対して、「柔軟に」という指摘が非常に的はずれなので回答しました。指摘者は「想像力を持って網羅的な処理を考えろ」との意味で使用しているのだと思いますが、本質は「処理の本質を理解してパターンを当てはめる」です。双方にとって非常に不幸なすれ違いです。。。

    キャンセル

  • 2019/02/01 11:41

    なるほど。了解です。
    この質問者へ指摘された方の意図はその人しかわからないので推測で答えるしかないのはこちらも厳しいところですね。
    捉え方が難しいというか。
    もしかしたら思ってるよりカテゴリーが下の話かもしれないし、もっと上かもしれないし。

    キャンセル

+2

既に回答してくれているbackyardさんの内容に重なる部分もありますが、私なりの回答もしてみます。

同じ結果を出すにも手法はひとつではない
というのが出発点です。
何がベストかはそのとき時や設計によっても違います。
そこが「ロジック」とも言えるところで、常日頃から様々な表現方法ができるというのを念頭においては如何でしょうか。

簡単な例題です。

「“Hello,World“と出力する」
これを導入で良くあるprint以外の手法でできるだけたくさん挙げる

幾つ手法が思い付きますか?
思い付く限り難しく回りくどいやり方を考えて試してみてください。

私も新人教育の一環でこういう課題を出すことがあります。

目的は「やり方は1つではないというのを知ってもらう」というのと「現在の引き出し(自分の実力)を把握する」のと「引きだしを増やしてもらう」ことです。

引きだしを増やすことは、柔軟性のある考え方や行動に繋がります。これはプログラミングに限らず、ですね。

ここでたくさん手法を挙げられなかったからって落ち込む必要は全くありません。駆け出しであれば言わば初心者に毛がはえたようなもの。引きだしと言えるものも無いようなものなので、出せなくて当然です。
逆に言えば数ヶ月数年経ったときに同じ課題をやってみて現在よりひとつでも多くの手法を挙げられたら、それは自身の成長を分かりやすく実感できる指標にもなるわけです。

がんばってください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/01 11:05

    >プログラミングに役立つ本や考え方、役立つ数学

    「数学」がなぜ入っているか質問内容だけでは全く不明ですが、私の回答はあくまで「選択肢を広げ、柔軟性を高めるための一種のトレーニング」として捉えてもらえたらと。

    キャンセル

  • 2019/02/03 10:20

    mts10806さん。
    なるほど。それはありそうですね。

    キャンセル

-2

ガンガン検索かければいろいろ出てくると思うけど...

ロジック1アルゴリズム1ロジック2ロジック3,ロジック4...

なんで探そうともしないのでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/01 13:21

    「苦手意識」というところが壁になってるかもしれませんね。
    「トマト嫌いの人」に幾らおいしい料理や食べ方をすすめても「トマトはトマト」ってなりますからね。俳優の勝村政信のしいたけの話はまさにそれかなと。
    「どうやったら苦手を克服できるか」になればいいですけど、自分のなかでの選択肢が少なくて一方向に考えるしかない駆け出しの状態だとなかなか頭が向かないですね…

    キャンセル

-10

あまり模範的な話ではないですが「動けば良い」というのが第一だと思います
最適がをゴリゴリ考えるよりも新しいプログラムをいっぱい作る方が勉強にはなると思います
「柔軟性」は頭の良し悪しの問題なので、頭の良い人は柔軟性なプログラムを書いて、頭の悪い人は固定的なプログラムを書いて、まあまあ頭が良いひとはまあまあ柔軟なプログラムを書くというだけの話です。
ただ、「動けば良い」とは言えども「動かなければ良くない」ので必ず動くものを作りましょう。
だんだん複数なものを作っていくうちに「柔軟性」の意味は体に身についてくるので「正しく動かす」ことだけ意識してれば問題無いと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/01 11:13

    設計ちゃんとしろって指摘されている人に「動けば良い」って回答はなしだと思いますよ。

    キャンセル

  • 2019/02/01 11:26

    > 「仕様通り」動けばよい
    その通りです。

    仕様通りに動かない柔軟性の高いプログラムなんて、なんの価値もないので。。。

    言葉が足りないのは、その通りですね。思ったより低評価が多いので、みなさん厳しいなぁと。

    キャンセル

  • 2019/02/01 11:41

    誰か仕様通りに動かない柔軟性の高いプログラムの話をしていますか?
    話に出てないと思いますよ、そんなものは。

    あとここで言う柔軟性というのは、プログラムの話ではなく思考法の話だと思います。

    「固定的に考え過ぎている」「柔軟性をもって」が並列に並べられているので、「思考を固定せずもっと柔軟に考えて」という意味で間違いないと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.63%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る