新卒でプログラマーになったんですが、同期と比べても正直全然出来ないほうの部類に入る者です。
出来るプログラマーの定義は難しいんですが、とにかく仕事が速くて正確で飲み込みが速いです...。
具体的に自分が出来ないと感じるところは、例えばタスクを割り当てられたときに、同期の出来るやつは自分の2-3倍くらいこなしてしまいます。さらにその人からのコードレビューではするどい指摘をよく受けます。もちろん同じことは言われないようにしています。
この繰り返しで日々、足を引っ張ってしまっていると感じて辛いです。
使っている言語はPHPです。本は、初心者向けのアルゴリズムの本やweb+db等読んでいます。
出来るプログラマーになるにはどうすればいいでしょうか。才能...とか言われると辛いので何か具体的なヒントを頂ければ嬉しいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答9件
0
才能のある無いはしょうがないです。特にコーディングに関しては努力で埋められない差が出ることがあります。
また、出来る人の2〜3倍程度の差であれば足を引っ張るどころか普通に貢献出来ていると思います。
その程度の差はよくあることであるし、出来る人だけでやるには仕事は多すぎるのです。
さらに、仕事上で必要とされる能力はコーディングの能力ばかりでは無いです。コーディングにかけられる時間は多くても全体の3・4割り程度です。
コーディングで負けたくないのか、単純に同時にスタートして差をつけられて悔しいのかを見極める必要があります。
その上で、コーディングで負けたくないのであれば、Java・Ruby・Lispなど色々な言語を習得し、リーダブルコードなどコーディングに関する技術を身につけましょう。複雑なシステムはわかりやすいコードをかける人が大事になってくるし、才能より知識が大事になる分野でもあります。(手に馴染んだ知識なので、いわゆる頭でっかちなものと違いますが)
コーディング以外で差を着けられれば良いのであれば、ヒアリング・仕様書・説明・テスト・進捗管理・チームメイク・DB・その他ミドルウェアなど色々な能力を必要とされる分野があります。”コードをきちんと読めて”、他のことで圧倒できるなら、コーディングが得意な人も「あいつには敵わない」とつぶやくでしょう。
他の10倍の仕事をこなすのはすごく難しいですが、自分含め10人を協力させることは努力でなんとかなるものです。出来るプログラマーは非効率が嫌いです。自分の才能のある場所を伸ばすとよいと思います。
投稿2016/09/25 22:38
総合スコア2883
0
やはり何事も練習と経験が必要です。
才能の問題などほとんど問題にならないと思います。
何事にも言えることですが、好きなことであれば探究心
も高まり、理解が早くなり上達するのです。
投稿者のfugaaaさんは少し自信を失われているように
見受けられます。まずは限定された範囲で良いので
得意な分野を作っていけばその内容に関しては他の人
からの要求に対してレスポンスが早くなると思います。
何事も努力と継続が必要です。
一見、要領良く振舞っているような人でも人の知らない
ところでもの凄く努力をしている人は多いです。
現在の周囲の人もそうなのかもしれませんよ。
例えば100メートルを9秒台で走るとか世界レベルの話で
あれば少しは才能は関係があるかもしれません。
が、今回は誰でもがやっているエンジニアとしての
ワークです。できないのを才能のせいにするのはやめた
方がよいです。「必ずできる、誰でもできる」と信じて
頑張って見てください。
fugaaaさんは何かまずは自分の興味がある分野で良い
のでそれを誰にも負けないくらいに究めていかれると
自信ができるかと思います。
書籍に関しては興味のあるものからどんどんと読んで
いかれれば良いと思います。
投稿2016/09/26 00:04
総合スコア1628
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
同期と比べても
入社前からプログラミング歴が長い人とは、
かんたんに何年も差が付いていますから。
直接プログラミングしてなくても、理系教科が得意とか。
ですから、他人と比較せず、過去の自分と比較して、
そこから進歩できたかどうかを見てください。
足を引っ張ってしまっている
図太く開き直って、勉強の時期と前向きに考えてください。
じつはもし、たとえば周囲に優秀な人がいなければ、
現在は安穏と過ごせても、将来的にはまずいかもしれません。
ピンチはチャンスで、引っ張られて成長するチャンスです。
出来るプログラマーになるには
プログラミングの話でしたら、
問題をパターン化して、分割統治するのが王道です。
それにはまず、パターンのイメージ力を養いましょう。
制御文(if文、for文)とフローチャート
(理想的にはOOPとUML)のイメージが直結すると、
コーディングもリーディングも早くなると思います。
英語で言うと、五文型など構文が把握できている感覚です。
構文で大意が取れてれば、読み書きも早くなります。
それから、コンプレックスを消すためには、
全体的にT字型でスキルを伸ばしましょう。
上司から怒られない程度に短所は底上げしつつ、
小さなことでもいいので長所を伸ばしていきます。
この「小さな得意」を武器に、壁に風穴を開けると、
希望の風が吹いてきて、心の風通しも良くなるでしょう。
投稿2016/09/25 23:28
総合スコア5592
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
まあ、仕事が速いに越したことはないのですが、速くてもバグだらけなら使い物になりません。多少遅くても確実なソフトのほうが良いのです。ただ遅くてバグだらけならどうしようもありませんから、まずは確実にタスクをこなすことが重要です。
物事の飲み込みが速い人は確かにいます。回転が速い人ですね。ただ気をつけないといけないのは、回転が速すぎて間違った方向に行ってしまうこともあるので、そこは注意しないといけません。
どうやったら回転が速くなるかということですが、一概には言えませんが、そういう人は複数のフレームワークやパターンを持っているということです。問題や課題を自分の持っているあるいは知っているフレームワークへの当て嵌めがうまいので、回転が速いように見える。一種のパターン認識なのですがそれが得意なのでしょう。今それが出来てなくても、訓練すればできるようになります。
人と比べて自分は劣っているとか負けてるとか、そう思う人は多いですが、人はみんな同じではありません。同期といっても単に同じ時期に入社したからというだけ。入社以前の生活環境や考え方、どんなことを学んできたかなど自分とは全く違うはずです。だから、比較することに意味はありませんし却って自分を惨めな立場に追い込むだけで良いことは何もありません。
そういう回転が速くてできる人を利用する手もあります。「ここはどうやったら良いんだろうか?」とか「ここはこう考えてるんだけど間違ってないよね?」とか、積極的に聞いて教えてもらうんです。恥ずかしいとか自分のプライドがなんて考えはクソみたいなものなんで捨てないとだめですよ。聞かれた方は、特にできるやつは大体は教えることが好きなはず。教えることで自分の優越感に満足しているのですがそんなものは知ったことではないので知らんぷりしておきましょう。(ただ、いやみったらしく言ってくる場合はやめた方がいいですが)
そうやって、知識を持ってる人から教えてもらう、それが一番早い。自分で調べることも大事ですが、わかっている人から教わるのもためになります。
まあ、とにかく頑張ってみることです。同僚とは競争するのではなく協働するんです。
投稿2016/09/25 23:29
総合スコア3579
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
(仕様書がバグっていても)仕様書通りに作れる人がプログラマだと思います。
質問者さんが目指そうと思っているプログラマは
・コーディングやバグ取りのスピードが速いプログラマ?
・(次に修正する人が)修正しやすいコードを作るプログラマ?
・仕様書のバグも見抜ける気のきくプログラマ?
上記以外でも構わないので何か目標を持ったらいかがでしょう?
負けたくないとか迷惑かけないようにするのも結構ですが、
ご自身の目指すプログラマになれるようにお仕事をなされてはどうでしょうか?
投稿2016/09/26 02:42
総合スコア254
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
僕も最初はそうでした。
初心者の時代に読めと言われた本はほぼ役に立ちませんでした。
たとえば、いきなりデザインパターンの本を読まされてもそのままコードに活かせるわけもなくレビューで指摘をうける毎日でした。
業界でたまに聞く話ではありますが、他の人が書いたソースコードを10万行読めばその言語がわかってくると言われています。
この10万行読むという経験がコードの使い回し(著作権に注意)、デザインパターンの理解、など色々なことにつながっていき効率がだんだんと良くなっていきます。
また、僕はストーリーを理解してプログラムを書くことを心掛けています。
自分が組んでいるモジュールは大きなプログラムのどの部分なのか、誰がなにをそのプログラムに望んでいるのかを考えます。
その裏をとったうえでその部分も実装していくようにしています。(必要かどうか確認せずに勝手に実装すると逆に非効率だったりするので。)
さらに、机に座った瞬間、プログラムを書き始めることができるように、今日はどんな作業をするのか、どのように実装するのか、ということは机に座ってから考えるのではなくて通勤中や寝る前などに考えておきます。
僕がそうだったように、どこまでプログラムに時間を捧げるかは自分次第ですが、自分が非力と思うのであればやってみるべきだと思います。
投稿2016/09/26 02:15
総合スコア2021
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
よく言われることですが、何か一つ誰にも負けない得意分野を持つといいと思います。
OSでもDBでもプログラミングでもインフラでもなんでもいいと思います。
そうすると、それに関連して困ったことがあると周りから頼られるようになるし、
それを軸に他のことを学ぶのも早くなると思います。
何を選ぶかは、自分が好きなもの・興味があるものでいいと思います。
自分の場合は、最初はOSでしたね。
自宅のPCはLinuxにして、カーネルをコンパイルしてみたり、いろんなディストリビューションをインストールしたり、どのように起動するかを調べたりして、遊んでました。だいたいうまくいかないことが多くて、試行錯誤しているうちに力がついてきます。関連する書籍を読んだり、若いうちは資格を取るのも悪いことではないと思います。
DBなら、仕事で使うものを自宅にも入れて、集計SQLを書いてみたり、設計について勉強したりすればいいでしょう。プログラミングなら、オープンソースのアプリなどやフレームワークをインストールして、コードを読んだり、改造してみると勉強になると思います。
あとは、どの程度コツコツと継続的に、新しいことを学び続けられるかだと思います
※それもある種の才能なのかもしれませんが
投稿2016/09/25 23:04
総合スコア6586
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
プログラミングに特化した質問ですよね?
設計とかテストとかそういうのは含んでいないですよね?
という前提で。
プログラミングのセンスがある人は、初めての局面でもロジックが浮かび、スラスラと書けますね。
そうではない人、これは経験しかありません。
この処理はあの処理と一緒、こっちの処理はあの処理を流用すれば作れる、などたいていの場合は過去に経験したものの流用・組み合わせでなんとかなります。
ということで質問者様の場合、仕事以外でも日常的にプログラミングをする、また他の人が作ったコードを読みまくる、これしかありません。
本を読むのなんかどうでもいいです。
とにかくコードを書きまくってください。
そうこうしているうちに才能が開花して、初めての局面でもロジックが浮かぶようになってくるかもしれません。
投稿2016/09/26 01:30
総合スコア16996
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
正直なところ、小中学生からプログラミングに触れている層がある程度いますから、そういう人らに特に感性の部分で追いつくのは厳しいでしょうね。
ゴルフでもファーストティプログラムなど、体系・系統だって組織的・システマチックに育成されたジュニア出身者がプロゴルファーのほとんどを占めているのと同じようなものです
大学からとかではさすがにいろんな意味で遅いと思います
投稿2016/09/26 00:02
編集2016/09/26 00:05総合スコア19
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。