• 締切済み

プログラミングを行う上での注意点は?

こんにちは。私は昨年4月からSEとして採用された22歳(♀)です。 現在は下積みとして、ひたすらプログラミングをする毎日です。 プログラミング自体は嫌いではなく、 自分の作ったものが思い通りに動いたときは"、やっててよかった"、と達成感で満たされます。 ただ、まだまだ経験が浅いこともあり、 設計書をもらっても何から手をつけてよいかわからず、 (1)とりあえず書いてみる (2)バグだらけ (3)先輩の手を煩わせてしまう という悪循環に陥りかけています。 "もっと全体像を見ないとダメ""書けても動かないと意味がない"と 先輩からご指導いただいているのですが、 いったん作業に入ると、目先のことにとらわれうまくいきません。 そもそもアルゴリズムが苦手で、 効率のよいプログラムが組めない、という問題もあるのですが…。 そこで、皆さんがプログラミングを行う前、 あるいは最中に必ずされていること、心がけていることはなんでしょうか? 4月からは2年目に突入しますし、 7月から後輩が入ってくることも確定しています。 正直、先輩に頼れるのも今のうち、と焦っています。 現役プログラマーのかた、 あるは趣味でプログラミングをされているかた、どなたでもかまいません。 どうかご教授ください。

  • a3e
  • お礼率66% (16/24)

みんなの回答

  • drg75
  • ベストアンサー率34% (98/288)
回答No.8

以下を気をつけていれば大丈夫だと思います。 1.提出前にソース見直し 2.作りながら仕様書と合っているか確認 3.可読性を損なわない程度にコメントを多めに記述 土木建築と同じで安全確認を怠らないようにしましょう。

noname#123613
noname#123613
回答No.7

おはようございます。 私が試用期間の頃よく言われたことです。 ただ動いて終わりでは駄目です。 私もループの中をどう書いていこうとか、if文をどう書こうかと 目先のことにとらわれがちでしたが処理全体の流れが頭に入ってないと駄目です。 また、変数も何に使う変数なのか頭に入ってないと駄目です。 あいまいな所にバグの可能性があります。

  • hisappy
  • ベストアンサー率46% (184/392)
回答No.6

他の方の意見を否定するつもりではありませんが 逆向きな方向での回答をしてみたいと思います。 現状のやり方をもとにしての注意点と考えてもらえればと思います。 結局のところ、「バグだらけ」なのは 「とりあえず書いてみる」したものが不十分だったから。 ということになってしまいます。 では今の「とりあえず書いてみる」をどう変えていくかが鍵となります。 これを「とりあえず"全部"書いてみる」としてみてはどうでしょう。 ・与えられた書類から読み取れる事は何か。 ・書類で分からない点は何か。 ・プログラミングの段階ならまず通常の処理は期待通り実行されるか。 ・ループや条件分岐の判定は何が発生するか。→エラー処理対応へと展開できる。 ・他の部分と連携や影響を与えたりするような部分はないか。 などなど。 言葉変えてみましょう。 ・どう動くべきなのか。(正常パターン) ・そこでどんな条件がかかわってくるか。(判定系統) ・そこに怪しい条件やデータがついてきたらどうするか。(エラー系統) ・それらの仕様に関して、自分はどこまで理解できているか、  不明点は何か、おかしいと感じた点は何か。 をとことん書き出すようにすれば 次の「どう整理されたらやりやすくなるか」ができ……るといいんですが。 なかなか書き出しみたらきりがなくなってきて 余計に手に負えない状況になる危険性もあります。 でも何か基盤となる点を押さえておかないと 次の改善点にはつながりません。 例えばプログラミングでも、 「正常ケースが動くものをつくってしまって その後に粗探しをしてエラーケース対応の処理をいれる。」 というのも一つの手ですが、その場合でも 「どこのデータがどう関わって、どの条件とどんな時に・・・」 というのが自分なりにでも整理されてないと 『そもそもこれが正常ケースで動けているのか?』 ということになりますので、 まずは自分がその仕様書をどれだけ分かっているのかを確認してみてはどうでしょう?

  • swallow10
  • ベストアンサー率16% (9/54)
回答No.5

設計書の粒度にもよりますが、その設計書がプログラミング仕様書などと呼ばれる、プログラムを日本語化したような設計書ではない限り、まず書いてみるはしない・できない、と思います。 まずは、設計書をみっちり読む。 類似の処理が他の機能にあり、そこのソースが完成してれば、それを見せてもらう。 全体の流れを把握し、共通化できる箇所があれば切り出し、インターフェースを固める。迷ったら、類似の機能と統一を図る。 最初のうちは、「書く」というより「コピペする」といった感じでコーディングすると、勉強にもなりますし、強いモジュールができると思いますよ。

  • arain
  • ベストアンサー率27% (292/1049)
回答No.4

No.2です。 少し追記します。 >こんにちは。私は昨年4月からSEとして採用された22歳(♀)です。 とあり、 >設計書をもらっても何から手をつけてよいかわからず、 さて、SEなら知っておくべき(知っていて当然の)ことですが、質問での「設計書」とは a.概要設計書 b.基本設計書 c.機能設計書 d.詳細設計書 e.単体試験設計書 f.結合試験設計書 g.総合試験設計書 h.その他設計書 のいずれでしょうか? 「設計書」が「仕様書」であったり、a/b、b/c、c/d、f/gについては、 それぞれ企業によりニュアンスが同じであったり違ったるする場合もありますが、 少なくとも、 大雑把な概要(こんなものを作りたい)という設計  ↓ 作るために必要な機能や使用するデータ等の洗い出し  ↓ 機能を実現するための詳細な検討 という流れは同じです。 渡された設計書によっては、その下の仕様書について設計する必要もあります。 この時点で問題があれば、さらに上の設計書について再検討する必要があります。 この「設計/検討」を行わずに >(1)とりあえず書いてみる だと、 >(2)バグだらけ また、「プログラムのための設計書」には、「デバッグのための設計書」が対になって存在します。 ××と設計した  ↓  だから、○○と△△について試験しないといけない となります。 例えばC言語で、引数一つと戻り値がある関数を設計したと仮定します。 その場合、 ・引数の妥当性(関数で利用できる範囲内か、不正値だったらどうするか) ・戻り値の正当性(正常、異常などで適切な値を返しているか) といった試験が必要になります。 「機能」を実現するには「複数の関数を組み合わせて」実現する場合がおおくあります。 ここで、「関数の試験」をすっ飛ばして「機能の試験」を行った場合、どれだけ厄介なことになるかについては、説明するまでもないと思います。

  • singlecat
  • ベストアンサー率33% (139/418)
回答No.3

みなさん仰ってますが、「とりあえず書いてみる」はダメです。 仕様書は処理のポイントが書いてあるだけですから、 それを具体化する仕事がプログラミングです。 変な例ですが、建物に例えると 1Fに玄関と応接間、2Fにキッチンとリビング、3Fに子供部屋.... という要望書があった場合に、敷地の図面も見ずいきなり子供部屋の設計をするのか...という事です。 まず、資料全てに目を通して、頭の中でイメージを興し、必要な部分はフローチャートやユースケース図などで具体化してから作業に取りかかってください。

  • arain
  • ベストアンサー率27% (292/1049)
回答No.2

>(1)とりあえず書いてみる は絶対にしない。 >設計書をもらっても何から手をつけてよいかわからず、 設計書を「熟読」する。 この際に、 ・分からないことはそのままにしない。恥と思わず質問する ・自分の「理解」が正しいか、他の人に確認してもらう ・「頭の中だけ」で考えない。必ず必要やしょりや手順(手書きでも何でもいいので)を書き出してみる。 >(2)バグだらけ は内容を理解していないから発生する最たるもの。 プログラムとしては ・条件分岐がある場合、「条件と一致しない場合」について問題ないか ・ループ処理のループ条件は本当に大丈夫か ・「なんの処理を行っている(行っているつもり)」なのかコメントはしっかりとつける

  • number44
  • ベストアンサー率27% (20/72)
回答No.1

「とりあえず書く」から始めてはダメです. まずは簡単なフローチャートのようなものを書いてみた方がいいと思います. 一度どのような流れで全体が動くのかということを明確にしてから,詳細をつめていき,それが終わってから書き始めます. プログラミングに慣れてしまえば特にフローチャートを意識しなくても書けるようになりますが,多くの経験が必要です. また,チェックポイントを作りながらプログラミングした方がいいですよ.プログラムを処理ごとに分割して,処理結果が正しく出ているかをそのつどprintなどで確認するクセをつけておけば無駄なバグは減ります.

関連するQ&A

  • プログラミングのセンス・技術とは.

    こんにちは.はじめて書き込みするtoroimoです. 私は,理工学系の大学院の修士課程に在学しています. 来春から社会人です. プログラミング暦は,研究に取り組んでから2年半たちます. 使用言語はCです. 最近,自分のプログラミングのセンスというか技術について 考えてしまいます. ある権威者の人は,プログラムは慣れであり,プログラミングは芸術といいます. 芸術であるがいえに万人が優れた美しいコードはかけないと… それを聞いてはじめは落胆しました. けれど,その後は少しでも優れたコードを書けるようにと 書籍・サイトを探り読んでいます. 私は,Cに関する初級本 改訂 新C言語入門 シニア編 など4冊,アルゴリズムに関しては,1冊. また,日経ソフトウエアやC_MAGAZINEなどをよんで知識の習得に 勤める努力はしています(実力として初級はクリアしてると思うのですが.). しかし,実際研究でコードを書くとなると アルゴリズムに悩む時間ばかり費やし手が止まってしまう状態です. こんな私に社会で働いている人(SEやプログラマ)や 学生の方から御叱咤・御忠告を賜りたいです. どうかよろしくおねがいいたします.

  • 初心者ですが、プログラミングを勉強したいです

    専門的な知識がなく、全くの初心者なので 色々と認識違いもあると思いますがよろしくお願いします。 私は20歳の子持ち既婚女性です。 現在1歳の子供がおり、来年2月には2人目が生まれる予定の妊婦です。 前置きをグダグダと書きますが結論を先に申し上げますと プログラミングができるようになりたいのです。 主人はインターネット関係(詳しくわかりませんが)の会社で働いています。 主人自身は、パソコンには詳しいのですが システムを開発する、要するにプログラミング?的な事はできません。 同じ会社内のプログラマーが開発したシステムを使って仕事をしているようです。 そんな主人からよくプログラマーのお話を聞くので興味があります。 とはいっても、話の内容が難しくなってくると基礎知識もないので 全然理解できてはいないんですが・・・^^; 私がプログラミングを覚えたい理由は以下です。 ・高卒で学歴もなく、社会経験もなく、就職に役立つような資格やスキルがない  ⇒できるだけ若いうちに何らかのスキルを身に付けたい ・主人の会社では常にプログラマー不足  ⇒いずれ子供が幼稚園に通い始めた時、不利な条件でも雇ってくれる ・主人のできないプログラミングをこなし、認められたい しかし私はインターネットでサイト閲覧、ゲームなどしかしたことがなく パソコンそのものの基礎知識がありません。 以前、PHPを勉強しようと参考書を見ながら プログラミングの打ち込みをしてみましたが 結局根本的なところで理解できていないので途中で断念。 やはり一から勉強したい、と思うようになりました。 ですが正直なところ、どこから手をつけていいのかわからず困っています。 調べていると、システム開発などの会社に勤めている方は 基本情報技術者・応用情報技術者という資格を持っているという情報を目にしました。 まずはこういう資格の取得から目指せば良いでしょうか? それともプログラミングを勉強する前にパソコンの基礎知識を 勉強していったほうがいいでしょうか? プログラマーになられた方はどういった順序で学んでいったのかを 知りたいので是非ともよろしくお願いします。

  • どなたが真実なのん・・・?

    20代、30代、40代のSEorプログラマーで、バグジャッジメントが違います。これって、プログラミングを習った世代で違うのでしょうか? それとも、実務経験量の違い?性格の違い? 40代:仕様で流します・・・バグと認めようよと思う。 30代:細かく吟味しすぎで、仕様とバグの決定が遅い。色にもこだわります。色位、お前の好きにして良いよ・・・と思う。 20代:バグにしてくれるけど、裏付けが遅い。こっちが仕様で良いじゃんと思う。 いっその事もう、エンジニアの性格に合わせて、起票止めようかな・・・と思うのですが。 バグの迷い子に合い(愛)の手を、お願いしたいのですが・・・

  • 明日からの「プログラミング」の仕事への向き合い方

    http://okwave.jp/qa/q6671875.html 上記の質問をさせていただいた者です。 会計に興味があるからと会計ソフト会社に入社したものの、会計とは関係ないソフトのプログラマとなり、現在2年目です。 明日からまたプログラミングの仕事が始まりますが、やはり憂鬱です。 元から完成されたプログラムを、バージョンアップのため手を加えるわけですが、 まずはここからここまで、読んでくれ、ということを言われます。 それがどうしてもできないのです。 教えてもらおうとしてもぶっきらぼうな返事しか返ってこないので質問しようにもできません。 本当に何もしないまま時間が過ぎてしまいます。 課長も他のメンバーも、最近、私が話かけるまでは放置している気がします。 はっきりいって、中国語が読めないのに中国語の膨大な文献を解読してくれと言われてるようなものなのです。 上記のリンク先の質問でも書きましたが、私はメインとして現在中小企業診断士を目指しています。 自分の会社も中小企業を応援するツールとして会計ソフトをメインに開発し、それを店頭なり、士業の人に営業しています。 私としては、これまでの会計知識、今勉強している自社の会計ソフトに関する知識(検定にも合格するつもり)を活かして、店頭販売でお客様に会計ソフトの使い方を実演したりすることを下積みとしたいです。 そして将来的には中小企業診断士などを取得して、士業の人達と対等に話せるのが夢なのです。 今のフロアはプログラミング中心なので、それができないということは何もできないと言ってるようなもので、周りの人からは絶対にあいつは何も仕事をしようとしない給料泥棒だと思われています。 私としては、会社というのはやりたいことをやらせてもらえる場所ではないことは分かっているので、目の前の業務には全力でやりつつ、会社の中でもできるだけ自分の興味を活かして発言、提案できるところはしていき、会社外のプライベートの時間で本当に好きなことを勉強していく、という形にしたいと思っています。 やりたくない、自分の専門外の部署に配属されたからやる気をなくした、というわけでは決してないのです。 しかしながら、言葉そのもの(プログラミング言語)が通じないのでは、手の打ちようがありません。 プログラミングを必要としない、テストなどはしっかりやれているのですが、肝心のプログラミングができないので、 「○○なら彼にもできそうか?」「彼にもできそうな仕事はええっと・・・」 などの会話が普通に私の目の前で展開されています。 やはり、時期を見て会社の誰かに、プログラミングを必要としない、店頭販売などへ異動させてくれと頼むべきでしょうか? 日本語で仕事がしたいです。 これについては、年に1回、去年は9月に面談があったので、そこで言おうかなと思っています。 どのように言うべきか、慎重に検討したいのでまたここででも相談させてください。 そして、まずは明日から、どのように仕事に向き合っていけばよいのでしょうか? プログラムが読めないとあきらめて、好きな英語ニュースのサイトを見たり、ドキュメントスキャナで電子化した勉強本などを読んだりするのは簡単ですが、そんなことをしていても虚しくなるのは当たり前です。 アドバイスおまちしています。

  • カレンダーの出力

    こんにちわ いつも拝見させてもらっています。 最近、プログラミングを始めたのですが、どうしてもできない問題が;; 西暦と月を入力して、その月のカレンダーを出力させたいのですが いまいち、うまくいきません。全体像はぼんやりとあるのですが・・・ どうしたら出力できるのでしょうか?先輩達の意見をお願いします><;

  • ソフトイーサ開発者(登大遊 氏)のプログラミング速度って?

    こんにちは。 いちおう、プログラマをしている者です。 私は、ブラインドタッチができ、月に6000行くらい書いています。 そこで、ソフトイーサの開発者は、天才プログラマだ、という話を聞いたので調べてみたのですが、 「彼は日本で最も速く高品質にプログラミングを行える技術者のひとりで、一般的なプログラマーの8~10倍の速度でプログラムが行えるそうで、しかも高品質で安定しているとのこと。「頭よりも指先が先に動いている感じ」と関係者は言います。」 ttp://www.satsuei.net/a-blog/kaz.php?date=2007-01-11 また、エンジニアtype 07.09号での特集では、 「多くの専門家が絶賛するのは、登のプログラミングの正確さとスピードだ。一般のプログラマは一ヶ月あたりで約3000行書くのが精一杯と言われているのに対して、登は最高で一日一万行をこなしたこともあると話す。しかもバグが発生する確率はタイピングミスによるものが中心で、『ミスがあっても一万行に一回くらい』という。」 と書かれています。 常人3000行/30日 と 登氏10000行/1日。。ということは、、 常人300行/1日 と 登氏10000行/1日。。 つまり約33倍の効率。しかもバグが『一万行に一回』なので、テストも軽くパスするでしょうから、実際にはもっと生産性に差がつくと思います。 いくらタイピングが早いとはいえ、これは不可能なんじゃないでしょうか? 創造的思考をしながら知的生産物を作成していくのにあたって、これだけの速度・精度で書ける、というのは信じられません。ちなみに、主に開発に使用している言語はC言語だそうです。 やはり世の中には凡人プログラマの及びもつかない天才がいるということなのでしょうか? それとも、いちいち細かく改行したり、無意味に処理を複雑化させたり、コメントや空行も行数に数えたりして増やしているのでしょうか? 個人的には同じ挙動をするプログラムなら行数が少ない方を書いた人の方が優秀だと思います。もちろん程度によりますが。。 ことの真偽をご存知の方、おりましたらご回答ください。

  • VBプログラマー経験者の方に質問したいのですが・・・。

    はじめて質問します。 僕は今年で33歳になります。31歳で前職(営業)を辞め、将来の為に手に職を就けたいと考えプログラマーを目指すことにし、半年間かけてVBプログラミング能力認定試験2級を取得し、転職活動をして、やっとのことで業務管理系アプリケーション開発を主とするソフトウェア会社に拾われました。ただ、当然業務未経験なので入社してすぐ使い物になるわけがないので5か月間もの間アルバイト生として、座学(主にアルゴリズム)と課題としていくつかの業務管理システムのコーディングなどを勉強してきましたが、会社側が求めるレベル(実際に業務に就かせられるレベル)に達することができず、会社側からもうバイト代を支払うことができないので、自宅で勉強してほしいと打診されました。僕自身も会社に対して何の生産性もない自分が賃金を頂くのは間違っていると思ったので、その打診を受け現在自宅で勉強しております。ですが、未だに普通のプログラマーが一日で作れるというシステムを2週間もかけないと作れないほどの実力しかありません。 どうしたら効率よくコーディングできるでしょうか?(たどえば、わかりやすくアルゴリズムやコーディングの手法を理解する方法や書籍やサイトなど) また、もうこの歳でプログラマーはあきらめた方がいいのでしょうか? プログラマー経験者の方々のご意見をお聞かせいただけないでしょうか。

  • 自作する上での注意点

    自作キットを購入し、初めてパソコン自作をします。注意点として、 ・軍手着用 ・静電気を水道で2、3分手を洗って落とす などありましたが、みなさん実践していますか?あるいは私自身思うのは、時間がないので今日できるところまでやって残りは明日、という風に作るのに時間を置いて、機器にトラブルが発生するかどうかです。作るならいっぺんに作ってしまったほうがいいのでしょうか?

  • 取引する上での注意点

    いつも質問させて頂いています。 この度、仕事で私が製作しているハンドメイド雑貨をガチャガチャの中身として販売する 事になりました。 (個人事業ではなく、事務として法人企業に勤め会社で出る端材を利用してヘアゴム等の ハンドメイド雑貨を製作しています。事務業務の一環です。) 入れる商品はまだ決めていませんが、ヘアゴムかヘアピンになるかと思われます。 今までは知り合いの雑貨店での販売位しかしたことがなかったので、取引を行う上で 予め決めておく必要がある事項に悩んでいます。 現在、私が考えている決めなければならない項目は (1)クレームが来た際の窓口 (2)ガチャガチャ内にある製造元として当社社名を載せるべきか (3)危険性は少ない商品ではあいますが、怪我をした場合の保険的なものが必要か その外、この業界だからこそ何か決めておくべき、相談しておくべき 項目はあると思いますか?ガチャガチャ業界の事が全く分からず、悩んでいます。 (製作→納品→入金 等の通常の流れは問題ありません) どなたかご教授下さい。

  • 「利用していく上で注意すべき点」

    質問や回答を見ていて、いくつか疑問に思った事があるのですが・・・ 1.こちらのサイトでは、顔文字(^-^)や記号(☆など)を使用する事はあまり好ましく思われていないのでしょうか?使っている方がとても少ないように感じました。 2.私は携帯から見ているのですが、携帯で投稿したものをPCから見た場合、改行などがおかしく表示されてしまうのでしょうか? 3.「利用規約には記載されていないけれど、質問・回答をする際に注意したほうが良い点」は何かありますか? ご指導よろしくお願い致します。

専門家に質問してみよう