- ベストアンサー
自分のプログラムのスキルのなさについて(長くなりますが申し訳ありません)
皆様のお知恵や経験を拝借したいと思い、質問させて頂きます。 今年の9月で入社3年目になる26歳のSE(プログラマ)です。 未経験から入社したので3年間あっという間でしたが、 3年経った今でも、自分の中でちっともスキルがついていないように思われます。 メイン作業はほぼプログラム開発でしたが、簡単なロジックの考え方や組み方などといったものに、 今でも手間取ってしまい(努力はしているつもりなのですが)、 また仕様の読解力も貧しく、なかなか仕様を理解できません。 発想や応用といったものが自分には根本的に欠落しているように思われます。 プログラムは場数と慣れだと会社の先輩方は言いますが、僕には一向に慣れません。 先輩方は丁寧に教えて下さっているのにも関わらず自分がこんなじゃ情けなくなってきます。 3年と言えば中堅に入るにも関わらず自分の能力を考えると非常に不安です。 今までは同じ会社の人間がいる所で一緒に作業していたので、わからない事や ピンチの時は何度も助けてもらいましたが(それがまたいけないのでしょうが)、 次のプロジェクトは自分一人で常駐しなければいけないという可能性が出てきまして、 何としてでもやり遂げなければと思っています。 しかし、その事を考えるとほんとうに不安でしょうがありません。 それと同時に自分にはプログラムのセンスがなくこの業界に向いてないのではないかと思ってしまいます。 仕事には得手不得手があると思いますが、自分にはこの仕事が不得手なのでしょうか? 長々と書いてしまいましたが、どなたか意見やアドバイス、叱咤激励など何でもいいので、 ご回答の程、宜しくお願い致します。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
自分の経験ですが。 私は入社してしばらくたったとき、飲み屋で同期の人に「頑張っているのか、おまえ?会社の評価低いし、努力しているように見えないぞ」なんて忠告されました。確かにコンピュータ関連の勉強を十分にやっていた覚えはなかったのですけど、「評価低いぞ」って言葉に「がーーん!」って感じでしたね。 で、それを境に、コンピュータ関連の書籍や言語マニュアルをイロイロと買い込んで、勉強しましたよ。 その勢いで、今は無き情報処理特殊まで取得しました。 他の回答にあるように、やはり質問者さんは、基礎ができていない、いわゆる座学的なものをやってないので仕事でも伸びないのではないでしょうか?例えば、数学の問題を解くのに、因数分解や微積の公式を全く知らないでは、全然解答を書けないでしょう。 残業も多い・休日出勤もあるとなれば、そうした勉強の時間は取りにくいと思えますが、「コンピュータの名著・古典100冊」で紹介されているような本を読んでいないと、公式を知らないで数学の問題が解けないように、ロジックを組みたてることができないと思います。 ちなみに私の会社でも、「この処理は、構造化プログラミングの本にあった、あのロジックでやれば簡単」と思った問題について、かなり経験あると思うプログラマでもフローが描けないって悩んでいるのを見て驚いたことがあります。 それから、戦争に例えると、 優秀な武器(言語知識、イディオム)、優れた格闘技や射撃術などの戦闘技術(技法・アルゴリズム)、優れた戦術(デザインパターン)、全体を見渡した戦略(アーキティクチャパターン)などが必要です。 これらが十分にそろわないとなかなか戦争での勝利(楽勝開発)は難しいでしょう。 (ただ、現実にはシステム開発で、戦術以上を活用している開発事例は、やや少ない?) 専門学校や書籍での自主学習をやっていないのは、戦術・戦略も、十分な支援部隊もなく拳銃とライフルの個人装備で(それも銃の分解掃除方法や、安全運用方法とか、照準方法も学ばず)戦うようなもんでしょう。 なお、プログラムの技術は、受験勉強的に本を読んだからマスターできるようなものでなく、大工の職人技のように、実作業を通じて学んだことが少しずつ身についていくように思えます。 それから、実力が十分なら、常駐先で「どれどれ、教えてやるぜ!」ってでかい顔ができるでしょうが、実力不足なのに虚勢を張って、嘘を言ったりすると一気にバカにされてしまいます。 とりあえずは、半年くらいは受験勉強的にがんばってイロイロ知識を増やすことをお勧めします。
その他の回答 (5)
- W_H
- ベストアンサー率47% (21/44)
ぼく自身はプロではない学生ですが、プログラマーとして食っていきたいな~っと思う者です。 あまり参考にはならないかもしれませんが、ぼくの持論を書いておきます。 ぼくは簡単と言われるPerlというプログラム言語で挫折した事があります。 元々、パソコン始めて半年も経ってない中学生が、CGIを作ろうなんて無茶な話だったんですが、ある十行にも満たないプログラムソースに出会って、目の中の鱗が取れました。そのおかげで、今では掲示板や日記などのCGIも楽々作れるようになりました。 まずプログラムって、流れですよね?運動会のプログラムみたいな感じの。 世の中は全てそういう流れ(プログラム)でできているとも言えます。 プログラマーとは、流れを記していく、あるいは理解して変えていくものだと思うんです。 その上での武器が、プログラム言語です。 プログラム言語は、言語と名が付くだけあって、言語の特徴上、コミュニケーションをとるという行為が可能です。まぁ、機械となんですけどね。 ただ、言語の特徴として挙げられる、毎日使わないと、勘が鈍って上手く使えなくなるという点では、プログラム言語も同じです。逆に、使えば使うほど、勘がよくなって、勘で多くの部分のプログラムを書けると思います。(会話時、人に時間を聞く時、それは勘的スピードで文章が出てくる。こういうこと。わざわざ文法的に考える人はいない。) ぼくは、そういう言語勘を身につけるのが必要だと思います。 言語勘はパターンの固まり。つまりは経験です。それも基礎的なものが必要かなと思います。英語の長文も、基礎的な文の流れや単語、熟語、イディオムが組み合わさって難しいわけですし。 かなり前置きが長くなりましたが、とにかく関数で遊んではどうでしょうか?基礎文法はこうだけど、こうしてみたらどうだろう?みたいな感じで、頭を使って言語と触れ合えば、より深く関数について理解し、恐らく言語勘を養う事ができるはずです。 後、他人のソースを見るというのも、自分と違う考え方を知る、関数を知るという点で非常に良いことだと思います。この教えて!gooには、いろいろなプログラムのソースもありますし、大いに活用できると思います。 後は、パソコンを好きになることでしょうか? プログラム言語は機械との対話に必要な言葉。その機械に少しでも愛着を持ってみたら、少し見方も変わってくるかもしれません。とにかくパソコンは間違いに頑固で、正しい事には素直な子ですから、自分の投げかけた言葉(プログラム)には、必ずきっちりと答えてくれます。時には、自分の想像を超える(裏をかく)答えを返してくれるときもあります。 そういう対話を楽しめたら、きっと何かが変わると思います。 まずは、強制終了してしまうときに「ごめんなさい」って謝るところから、やってみてはどうでしょうか。(苦笑:ぼくはそうしてます。) 最後に、プログラマーとして食べているあなたを、ぼくは尊敬します。 ぜひ、これからもがんばってください。
- tatsu99
- ベストアンサー率52% (391/751)
ほかの方と、観点が異なりますが、 プログラミングが好きかどうか、プログラムを組むことが、苦痛と感じるか楽しいと感じるかで、大きく分かれてくると思います。 もし、苦痛と感じているなら、本当に向いていないのかも知れません。楽しいと感じられる部分があるのなら(全てではないにしても)、まだ見込みはあると思います。
- seasoning
- ベストアンサー率25% (182/713)
>発想や応用といったものが自分には根本的に欠落している #1の方と同じ意見で、基礎が出来ていないのだと思います。 基礎が出来てないと、仕様も理解できないし、どうやって実現したら良いかも発想できません。 この業界、自分で勉強しないと、どんどん置いていかれますよ。 入社3年ぐらいが、できる奴とできない奴の分かれ道です。 できる奴は、どんどんと大きなプロジェクトに呼ばれる。 できない奴は、穴埋めの要員程度にしか使われない。 また、SEを目指すならプログラムだけではなく、もっと流行の技術や、デザインパターン等々、視野を広く。
- vaio09
- ベストアンサー率37% (756/2018)
適正を疑う前に以下の実践をなさってください。 ・専門のトレーニングを受けてみる ・論理的思考法の書籍を読む システム開発の講習は、受けていないのでしょうか? 会社でそのようなトレーニングはありませんか? ロジックについての基礎を学ぶ機会を失うと、そのままズルズルいってしまって、基礎の無いままで仕事することになって辛いです。 最初に基礎を身につけておけば、あとは日常業務をしながら応用が身についてきます。なので、早めにトレーニングを受けてみて下さい。早い方が効果があります。 会社に制度が無くても、自費で講習を受けてあとから公の機関から精算・キャッシュバックというものもありますよ。 また、「ロジカルシンキング」などのタイトルの書籍を読まれると、日常のあらゆることを論理的に解釈する脳みそを養うことができます。なので是非読んでみて下さい。 結構いろんなことが、ブロックダイヤグラムとかフローチャート化できますよ。 常駐して能力が試されるのは、問題解決能力です。何の問題もなく進行するプロジェクトなど稀です。 システムが旨く動かない場合、仕様に問題があるのか、アルゴリズムなのか、プログラムなのか、などといった切り分けのスキルが必要となります。これはいきなり身につくわけではないので、経験がモノを言います。その経験を補う意味でも、上述のトレーニングと読書が役に立ちます。
お礼
丁寧なご回答ありがとうございます。 自分の入社時は、未経験でもすぐ現場に放り込んで、 現場で覚えろといった感じでしたので、 会社でのトレーニングはありませんでした(そんなの全く言い訳になりませんけど。。) ポイントを絞って基礎及び論理的思考法を徹底的に勉強し直してみます! 幸い、常駐までもう少し時間があるので、その時間をフル活用して勉強できます。 vaio09さんがおっしゃられたように、これを実践してから適正を考えてみます。 ほんとうにありがとうございました!
>発想や応用といったものが自分には根本的に欠落している 違う。 恐らく基礎が弱い。 もしやっても良いというのなら自由な時間にとても簡単で良いので様々なソース(事例)に触れ、書き、試し、それを参考に自分で欲しかったツールを(簡単な実装で良いから)組んでみたらどうだろう。 自分が欲しい物を組むのが恐らく一番理解すると思う。 ツールではなくゲームでも良い。 与えられた物を 組んで終わり ではなく もっとどん欲に「こうした方が良さそうだ」「こうしたかった」「こういうのが作りたい」というものをやっていったらどうかな。 そうするうちに仕事でやってる技術のどこかで「これは作りたかった○○に少し応用できそうだ」となる筈。 プログラムは、如何に沢山のパターンと障害処理方法を知っているかにかかっている。 だから基礎っぽいものをもっともっともっともっともっともっとみっちりやったら良いのでは。
お礼
的確なご回答ありがとうございます。 確かに自分の姿勢として、受け身の姿勢があったと思います。 これはどうだ、あれはどうだろうという考えが足らなかったのも事実です。 とにかく土台をしっかりと作る事に重点を置きます。 とにもかくにも行動に移します! もっと貪欲もなります。 ありがとうございました!
お礼
的確なご回答ありがとうございます。 seasoningがおっしゃれたように僕はもう岐路に立たされているのかもしれません。 同期で入った人間が、自分なんかよりはるかに信頼され、仕事を任せられています。 はっきり言って悔しいの一言です。売れ残りのような気がして何ともみじめです。 そんな状況を打開して自分を変えて行きたいと思います。 頑張ります! ありがとうございました!