- 締切済み
アマグラマーについて
質問です。 世の中には、業務でプログラミングをしている人たちと 趣味でプログラミングをしている人たちがいるとおもいます。 ここでいう趣味とは、業務では一切、プログラミングに関わらない人たちが趣味で プログラミングを行うという意味でとらえてください。 この場合、プロとアマに明確なスキルの壁ってあるのでしょうか? プログラミングなんで、勉強するかしないかできまるとは思うのですが、 やはり、業務で日々プログラミングに浸かってる人との、差があるのでしょうか? 多様な意見を御聞かせください。 よろしく御願いします。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- korokokokoro
- ベストアンサー率19% (20/102)
細かいノウハウには違いがあるだろうね。 >勉強するかしないかできまるとは思うのですが、 個人で勉強していてはセキュリティーレベルの知識とか 集団開発に必要なスキルとか(集団で開発したこと無いとコーディング規約とかすら知らなそうだし) は身につかない。 とくに独学で学んでいる場合は、構築されていたノウハウは身につかない。 ほら、よくここのDB関係のセキュリティー関係の回答みてみなよ。 多くの独学なのか実務レベルを知らない人たちのアマグラマレベルの回答の多くが SQLインジェクション対策と言ったらしっかりとエスケープ処理をしろって回答ばかりだから。 プレースホルダの事書いている人なんてかなり少ないから。
- bajutsu
- ベストアンサー率20% (139/693)
職業プログラマは、基本的に集団でプログラムを作ることが多いので 如何に他人に読みやすいソースを書けるか?ということが要求されますし そのための指標として、職場ごとにコーディング基準が定められていたりします。 また、コーディング基準は、見易さのためだけでなく バグの作りこみ難さを考慮して決められていることもあります。 例えば、C/C++言語の入門書は、ほとんど if(hoge == 1){ ~ のような書き方ですが、うちのコーディング基準では if(1 == hoge){ ~ と書きます。 よく目にする参考書とかとは、左辺・右辺が逆なので うちの職場に初めて来た人は、みんな違和感を感じるみたいですが こういうルールにした主旨を説明すると、みんな納得します。 C/C++言語以外の言語を知っている人にありがちなミスですが うっかり「==」を「=」と書き間違えてしまう場合があります。 C/C++言語は、ifの中に代入文を書いてもコンパイルエラーにならないので 間違えてもコンパイルは通ってしまいますし、プログラムも動いてしまいます。 右辺と左辺を逆にすることによって、定数に代入はできませんから こういうコーディング基準にしておくと うっかり「==」を「=」と書き間違えても、コンパイル時にエラーになるので ミスに気づきやすくなるのです。 また、職場によっては、過去の不具合の事象や、原因、対策を ノウハウ集として蓄積していたりします。 これらを参照することで、ハマりやすいバグの作りこみを回避したり お決まりのパターンを流用できたりします。 また、設計書等のドキュメント等も、個人が趣味でやってる分には 書かない人の方が多いんじゃないかな?と思います。 純粋にコーディングを楽しむ人が多いような気がします。 しかし、ドキュメント作成も職業プログラマにとっては必要なスキルです。 趣味でプログラムしてる人って、テストちゃんとやってるのかな?とも思いますし。 殆どの人が疎通テストレベルでお腹いっぱいになるんじゃないかな~?と思ったり。 単体テスト→結合テスト→システムテストとか趣味プログラマでもやるんですかね。 チェックリスト作れるのかしら?テストケースに漏れはないかしら? 他人が作ったソースを目にすることは、とても勉強になります。 趣味でやっている人は、他人のソースを目にする機会が少ないと思います。 逆に、自分が書いたソースを、ほかの人に見てもらうことも勉強になります。 職業プログラマは、コーディングレビューとかで、先輩や有識者に ソースを見てもらったりしますが 趣味プログラマには、自分のソースを見てくれる人がいますでしょうか? 総じて、趣味プログラマは、自己満足で完結するようなソースしか 書けない人が多いんじゃないかな?と思います。 とはいっても、コーディング基準について書かれた書籍も ノウハウ集的な書籍も、設計書について書かれた書籍も テストについて書かれた書籍もあるにはあるので とことんこだわる人はそこまでやってそうですし 結局は「人による」だとも思いますけどね。 ただ、職業プログラマは、身近に同僚や先輩等、教えてくれる人が居るので 趣味プログラマが独学でやるよりも、何かと近道できるような気がしますよ。
- wormhole
- ベストアンサー率28% (1626/5665)
他の方もおっしゃっていますがプロとアマの違いは、 それで収入を得て生活しているのか、そうではないかなので プログラミングスキルとは全く何の関係もないです。 プロの場合はいつまでたっても何にもできないとかなら首は切られるでしょうけど。 プログラミングスキルに関してはプロアマに関係なく各個人の姿勢によると思いますよ。
- yambejp
- ベストアンサー率51% (3827/7415)
職業プログラマーに特化したスキルというのがいくつか考えられます。 ・ツール使用スキル プロ用ツールをある程度使いこなせる、というか使えないと仕事にならない アマはそれなりの予算と環境しかないので使いたくても使えないので そのスキルが備わらない。むしろこれはスキルというより機会の問題ですね。 ・集団作業スキル 職業プログラマーは集団で行うスキルが必須です。 アマは自分がわかれば何とかなります。ドキュメントもたいして残さないでしょう 職業でやるには、仕様書を元に他人に競合しないでプログラムを組むスキルが必要です ・割り切るスキル 職業プログラマーには納期があります。 納期からの逆算で仕様をカットしていくのが運命です。 (もしくはこのくらいでいっか・・・と見切りをする) アマはなかなか割り切れず、だらだらと作る傾向があります (まぁ仕様カットするのはプログラマーというよりプロジェクトマネージャーですが) ・いやでもやり続けるスキル 上記とは逆に納期周辺では社畜よろしく死ぬ気で働く必要があります。 アマには想像できない修羅場があります。 アマはいやになったらほうりだしてしまえばいいだけ。 (プロがほうりだす時は辞表をだすか入院するかのどちらか) ・他人のせいにするスキル 仕事でやっている人はたいていミスをみとめません。なにかトラブルが発生すると 人に責任を押し付けます。 仕様がわるい、デザイナーがわるい、クライアントの要求がわるい、 そんな話はきいてない、最悪こんな仕事とってくる営業がわるい・・・ アマは自己責任ですから他人のせいにするスキルは身につきません。
- zwi
- ベストアンサー率56% (730/1282)
アマでも有名オープンソースの重要な部分の開発に参加している人たちのスキルは高いでしょう。プロでも簡単な業務アプリに従事して満足している人のスキルは低いでしょう。 意識と能力の問題ですので比べるのは意味がないと思います。
- gogawaku
- ベストアンサー率26% (124/464)
アマとプロの差? そんなのは、その業務でメシ食って自分を養っているのがプロ 1円にもならないのがアマ 持った能力の差は関係ないんですよ。 アマでもとんでもないほどの高知識があっても、対人のコミュニケーションが取れないとか 粗暴だとか、時間を守れないとか、プロというのは、そこらへん全部ひっくるめて 「仕事」として業務の出来る人 業務としてスケジューリング、納期を決めて納品してメンテナンス それをお金を貰ってできるように昇華してるのが プロ なーなーで、気が向いたとき、気が乗ったとき、自分都合の時間が空いたときにしか出来ないのが アマ
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
ほぼないと思います。 プログラミングという作業が昔より一般化してきていることもあり、 仕事じゃなくても行う方が多くなったと思います。 (デザインなども含めて) 生業としている人でも、いくつかの部類に分かれます。 つまり、動けばいいだったり、仕事だからと考えており、プログラムの ベストプラクティスを行うつもりがないスタンスの人および、そのまま PLやPMなど、プログラマより上位工程に地位を置くことになっている人も います。 その為、趣味でやっている人の方が圧倒的に優れている場合もあります。 しいて言えば、仕事でやっている以上、やらなければならない場面 というのも存在する為、それで学ぶ人が多いでしょうね。 その分、似非も増えるわけですが。 セキュリティ面に酷く敏感にならなければならないようなプログラム だと、そういうのを専門にしている業者の方が詳しいとかもあるで しょうけど。 学ぼうとする姿勢、取り組む姿勢の問題で、プログラムに対しては プロもアマも関係ないでしょう。
- Wr5
- ベストアンサー率53% (2173/4061)
>この場合、プロとアマに明確なスキルの壁ってあるのでしょうか? >プログラミングなんで、勉強するかしないかできまるとは思うのですが、 >やはり、業務で日々プログラミングに浸かってる人との、差があるのでしょうか? 特に大きな差が出るってこともなさそうですけど…。 # 個々の状況によるのでなんとも言いがたい。 業務で決められたパターンしかやらない。 という場合ならば、決められたコト以外はほとんど出来ないでしょう。 新規開拓で新しい分野に手を出すことになったり、法人向けにしか公開されない資料や高価な書籍などに触れられる。 ということになれば、プロ(というか業務)の方が有利でしょう。 詳細設計まで他の人がやっていてコード書くだけ…って人もいるでしょうし。 # 業務なら…そんなに新規開拓とかはなさそうですけどねぇ。 # ルーチンワークばっかりで独創性がイマイチになるかも知れませんし。 趣味でやっている。 という方は制約が緩いでしょうしモチベーションも高いでしょうから学習等の吸収率も高い場合があるでしょう。 # ただし、業務でやっているほど切迫感はないでしょうからユルユルになっていつまで経っても習得できない。なんて可能性も否定できません。 趣味でいろいろ手を出してスキルが上がったけど、「趣味を仕事にしたくない」という場合もあるでしょう。 # その場合、アマの方がプロよりも技術力が上…ってことに。 ちなみに私は趣味を仕事にしたパターン…でしょうかねぇ。 それほど切迫感ないので「プログラム(趣味)がイヤになった」ってことはないですね。 仕事でPCいぢっているのに家に帰ってからも触りたくはない。なんてこともないですし。 # 言うほどプログラミング漬けでもないですしね。 # 新規で何か作る時に「ちょっとメンドクサイなぁ」と思うことはありますけど…そりゃ性格でしょうし。 エロゲ会社でゲーム作っていた時も…特別ツラいと思ったことはないですかね。会社に泊まりとかあっても。 # プログラミングとかに関しては…ですが。 # 人間関係や破綻しているスケジュールとかには嫌気がさしましたけど…。 エロゲ会社辞めて派遣で行った炎上プロジェクトはちょっとキツかったくらいでしょうか。 # まぁ、おかげで経験は積めましたが。 # あそこ行っていないとシェルスクリプト勉強しようって気になったのはもっと遅かったかも知れない。 # 何より通勤に時間掛かった方が痛い(往復だけで4時間半…)