アプリ版:「スタンプのみでお礼する」機能のリリースについて

プログラムが好きな方、仕事が楽しいという方。。どうか喝を入れてもらえませんか。。。


仕事でプログラムを組んだりし始めて、もうすぐトータルで4年くらいです。
しかし、プログラムを組んでお金をもらっているのにお恥ずかしい話プログラムが苦手で、趣味や学校等でプログラムしている方よりも知識としては劣っていると思います。そんな自分をなんとかしたいと思っています(;_;)

言語としては色々かじっているのですがどれも中途半端…。どれも良く分からないけどなんとか先人の方のコピペで乗り切っている形です。
また、職場も転々としており、落ち着きません。
以前数か月だけお世話になった現場では「使えない奴」という扱いになり、日々陰口を聞こえるように言われ、数か月でプロジェクトから外れることになり、自分でもものすごく情けなかったです。それ以外の現場は周りの方に助けてもらいながらなんとかしてもらっています。。
(だからといってコミュニケーションができるわけではありません。。できるだけ人と会話したくないくらいで、特にお客さんと話す時は汗がだらだら出て頭が真っ白になります。。)


物を作るのは好きなのですが、難しいことになると投げ出したくなります。
プログラム然り、お客さんの業務関連の知識然り。。

今年はじめ。仕事としてプログラマーを続けるならもっとちゃんとしなきゃと決意し、
何か一つの言語を勉強しながら自分が楽しいものを作るのが良いかと考えました。
それでAndroidのスマホアプリを作り始めてみましたが、エラーばかりで何度かへこたれそうになりました。。
今もよくわからなくて、投げ出しそうになってます。でもこのままじゃずっと私はできそこないで、仕事が嫌いで、いつも仕事をやめたくて、逃げているばかりの人生になりそうです。なんとか頑張りたいけど、どう頑張ったらいいか分かりません。


長文になってしまって申し訳ないのですが、こんな私がプログラムを好きになるにはどうしたらいいのでしょうか。他の仕事は今のところ考えていません。
ここから勉強したらいい、こんなことしたらよかった、そういう性格ならこうしたら?とか、「そんなことしててどうする!」等、なんでも良いのでアドバイスや喝をお願いします。。

A 回答 (5件)

No.3です。


詳細設計書(←会社や業界により呼称は幾つかありますが)を渡されてコーディング以降を行っているのだとしても、その設計書には1関数、1メソッドの機能はあってもしれらの処理手順までは具体的に示されていないのが一般的ではないでしょうか?
だとしたら、そこを設計するのはコーダーのお仕事です。
その場合、自分が決めた順序で処理する理由を人に説明出来ますか? 違う言い方をすると、そうする必然性を考えて処理手順を決めていますか?
「何が」「何して」「どうなった」をしっかり考えることが重要です。そして思考が論理的であること、構造的であること。これが重要です。
論理的であることに関しては「論理的思考」とか「ロジカルシンキング」とか言った言葉を使った書籍も多くあります。
構造的であるとは、一番簡単なのは階層的に物事を考えることです。有る意味部品化とも言えます。例えばある外部関数(メソッド)が引数でデータを受け取り処理結果を引数で受け取った領域にセットして返す場合、入力から出力までの処理をフラットに考えるのではなく、処理の意味を考えて内部関数を設けるといったことです。最上位のモジュールを見ると「○○をする」「××をする」といった内部関数を順に呼び出し、それらを呼び出すごとにエラーチェックをしているだけになっている、、、みたいな。こうするとソースコードとしての可読性もあがりますし、機能改良などの際の影響部分を一定の範囲に留めさせたり、影響部分を明確化しやすくなったりします。もちろんコンパイルや試験の際の作業効率にも影響します。

そういうことを地道に考えて仕事をすると自然と考える力や開発力が身につくように思います。
ソフトウェア開発の書籍、設計技法の書籍、試験技法の書籍を読んでみるのもよいでしょう。大きめの本屋さんや技術関連専門の本屋さんへ行って、コンピュータ関連のコーナーでそういった本を探し、パラパラ見てみるだけでも知らない世界があることがわかり、レベルアップを図るきっかけになるのではないでしょうか?
    • good
    • 2
この回答へのお礼

色々と丁寧に教えてくださって、ありがとうございます。
論理的&構造的に処理を考え、説明できるように、地道にやっていきます。
書籍も見てみます。
何度もありがとうございました。

お礼日時:2015/09/23 22:35

残念ながら、プログラミングに向いていない人というのは存在します。


いろんな特徴がありますが、例えば。

> エラーばかりで何度かへこたれそうになりました

プログラミングのできる人は、むしろエラーを歓びます。
自分の間違いをコンピュータが指摘してくれるのですから、こんなにいいことはありません。
原因を調べるにも、修正するにも、とても重要なヒントになります。
(もちろん、ムカっとは来ます。ですが、間違いの原因は十中八九自分にあるので、その怒りは結局自分に戻ってくるということもわかっています)

4年もやっているのなら、「エラーは無いけど期待通りに動かない」という間違いがいかに多いか、それを修正するのがどれだけ大変か、そもそも間違いであると認識するだけでもどれだけ大変なことか、体験しているかと思います。


これを始め、他の方の回答にあるような考え方を改められたら、チャンスがあるかもしれません。
しかし、どうやってもできないようなら、プログラマとしての適性がありません。
思い切って他の道へ進むのがよいでしょう。
    • good
    • 0
この回答へのお礼

そういえばAndroidアプリを作り始めてからエラーやアプリが落ちる意味が分からず行き詰ることが多い気がします。。他言語の時はなんだかんだありがたかった気がするのですが…(いや、そうは言っても他言語は他言語で苦しんでるかも。。。==;
Androidのことをまだ全然わかっていないからかもしれません。
期待通りに動かないことの大変さ。確かにそうですね。言っていただいて、エラーが出るだけありがたいことだと改めて思い出しました。

そうですね。もしかしたら私にはプログラマの適性がないのかもしれません。
でも今の状態で諦めて別の仕事についたとしても、絶対にプログラマに戻ってみたいと思ってしまうと思うので、今はできる限り努力してそれでも無理なら別の道を考えようと思います。
ありがとうございました。

お礼日時:2015/09/23 18:18

言語仕様を覚えるより考え方を学ぶ方がよいように感じます。


プログラムは画面インタフェースのものにしろコマンドインタフェースのもにしろ、あるいはプログラムの中の一つのモジュールにしろ、ある入力に対して決まった出力をするものです。この時、入力データをいどういう手順で処理して求める出力を得るかという処理手順を考えることが出来ないとお話になりません。それはプログラム言語能力とは別のソフトウェア開発者としてもっとずっと基本的なスキルことです。
例えばある実行プログラムを作る際にモジュール設計とか、クラス設計とか、関数設計とか、メソッド設計とか自力でサクッと出来ますか?
もし、そこで「??」となることがあるのでしたら設計スキルが不足しています。ソフトウェアの設計の仕方を勉強するのがよいです。そういうの、入社時の研修とかでありませんでしたか?

極端な話し。プログラムの設計時にはどういったことに気をつけ、どのように内部構造を作って行ったらよいのかという基本を身につけていたら、日本語で処理手順を書いてそれをプログラム言語に翻訳するだけです。
翻訳した文章(プログラムソース)に文法誤りがあればコンパイラが具体的箇所を教えてくれます。高級言語になればなるほど前後の整合性みたいなことも含めて指摘してくれます。
翻訳が出来たら実際に動かしてみて本当に意思が通じるか、つまり入力に対して意図した出力をするかを確認する試験をするだけです。
ちなみにプログラム作成で重要なのは『プログラムは思ったとおり(設計したとおり)に動くのではなく、作ったとおりに動く』ということです。
作ったとおりに動いている物を、思ったとおりに動くようにするのが試験です。
視野を広く持って様々なことに留意して設計するほど、早い段階から思ったとおりに動くものになります。
経験的にはそんな感じです。

ちなみにプロとしては「当たり前品質」の部分は初期段階からちゃんと動いて当然。イレギュラーな事態に対し、如何に不正動作をせずに動き切る設計が出来るか否かが経験、スキルの見せ所と思います。後の改良のしやすさなどもですね。
    • good
    • 2
この回答へのお礼

設計…!読ませていただいて、私は一番できていないのはそれかもと思いました。
設計を自力でサクッと、できないです;;
そういえば入社時の研修では、システム開発の全体の流れとプログラムを組むことをメインで勉強して、すぐ業務に入ったので、設計のことはほとんどしませんでした。
今も自分で設計するとなるとすごくしんどいです。簡単なロジックを一度設計したとしても、後で「これじゃだめだ…」ってなってやり直したり。それで手戻りになって余計に時間がかかったりします。お話にならないレベル
ですね…。
(あ、書いてて思ったのですが、それは頭の悪さが原因?;そうだとしたら、脳トレするしかないでしょうか…)

『プログラムは思ったとおり(設計したとおり)に動くのではなく、作ったとおりに動く』。すごく納得できる言葉でした。
設計のことを一から、少しずつ頑張ってみます。
ありがとうございました。

お礼日時:2015/09/23 18:07

40年前の私が学生時代は、ソフトウエア(今で言うアプリ)がなく、フォートランやコボルを最初からプログラムを組んでやってる状況でした。


 それが今では、WordにしろExcelにしろAccessにしろPowerPointにしろ、ひな形ができあがっており、ほぼ完成に近い状況だと思います。
 スマホやタブレットは所詮モバイル通信機であって、パソコンではないことを認識すべきだと思います。スマホ等のアプリは、所詮おもちゃだと思っています。いずれ飽きられてしまいます。営業には使えてもビジネスには使えません。プライベートの域を超えることが難しいと思います(スペックから見ても)。おそらくこれから先、「スマホやタブレットは使えますが、パソコンは使えません」という若者が増えてくると思います。つまり、Wordはともかく、ExcelやAccsesなどの新しい数式構成やマクロの開発ができる人は限られてくると思います。
 結果を言えば、マイクロソフトなどのの高度の資格を取得するのが一番の強みになるのではないでしょうか?。言葉足らずですが、情報機器をはじめとする電子機器のの大衆化が、現代社会の大きな間違いの元だと思います。
    • good
    • 0
この回答へのお礼

最初からプログラムを、ですか!ライブラリやフレームワーク等がない状態から、自分で一から作るということでしょうか?
今はほんと、先人の方々が便利にしてくれたおかげで、色んなものが恵まれていますよね。。

マイクロソフト等の資格は考えたことがなかったです。確かに強みにはなりそうですね。プログラミングをもっと上達することを目指しつつ、そちらも考えてみます。
ありがとうございます。

お礼日時:2015/09/23 17:55

プログラムの仕事を経験できているだけで


凄いと思います。自分はプログラム覚えたくて
本屋さんで、プログラミングの本を立ち読みして
あまりの意味の不明さに、すぐ諦めてしまいました。少なくとも自分よりもあたなの方が優秀です!
もっと自信を持ってください。
焦らず少しずつ覚えて行きましょう。
誰でも簡単的な本を、読んだだけで無理だと思う
人もここにいるんですよ!
    • good
    • 1
この回答へのお礼

回答していただいたことを見て、涙が出ました。
「もっと自信をもって」という言葉、すごく心に響きました。
自信がいつもなくて自己嫌悪の塊みたいな私ですが、少しずつ簡単なことから、前を向いて頑張っていきたいと思います。
勇気を、本当にありがとうございました。

お礼日時:2015/09/23 18:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!