趣味と職業の違い

「職業としてのプログラミング」となんだかすごいタイトルをつけてしまいましたが、私自信まだまだプログラマあるいはソフトウェア技術者としての経験はまだまだです。
なので、そんなにえらそうなことを言える立場でもないですが、今からプログラマを目指そう、あるいは、自分の技術をステップアップしていこうという方にとって、なにかしら役に立つことが書けたらなと思います。

最初に、私が考える、「趣味としてのプログラミング」と「職業としてのプログラミング」の違いについて書きたいと思います。

■趣味としてのプログラミング
私も昔は趣味でプログラミングをしていた時期があります。主に作っていたのは、簡単なゲームなんかです。別にゲームをしたいってわけではなくて、プログラムを書くということが楽しくてやっていました。インターネットもそれほど普及する前で、作ったものをオープンソースで公開するとかいうこともなかったんですが、自分なりに綺麗なコードを書くこと目指してせこせこがんばってました。

このような趣味のプログラミングの特徴を書くとすれば、次のような感じでしょうか。
  • 最も重要な目的は、自分自信が満足すること
  • 自分のやりたいようにできる
  • 作ったものに対する責任はなし
  • 締め切りはなし!
例外もあるでしょうが、だいたいこんな感じではないでしょうか。
趣味なんだから、とにかく自分が楽しいことが重要ですよね。

■職業としてのプログラミング
職業としてのプログラミングは、当たり前ですが就職してからがメインです。就職前も、WebページのCGI等はちょっとだけやってました。ちなみに現在の仕事はいわゆるSEではなく、組み込み機器のソフト屋さんです。

職業としてのプログラミングになると、趣味のころには無かったような、いろんな制約が発生します。具体的には次のようになります。
  • お客さんの満足が第一義
  • 複数人での開発になることが多い
  • 開発を行う上でのルールがある
    (コーディング規約、言語、プロセス管理)
  • 作ったものに対する責任があり、品質確保が必須
  • コスト(時間、お金)に制限がある
職業としてプログラミングをする場合は、このような制約が必ず発生します。
個々について、もう少し詳しく説明しておきます。

○お客さんの満足が第一義
なんといっても、この点が最も違う点でしょう。仕事でやっている以上、お客さんが最も重要なのは言うまでもありません。
そんなの当たり前と思っていても、本人が良かれと思っていることが、案外技術的な自己満足で終わってしまっているというのもよくある話。
与えられた要求仕様を確実にこなすことは勿論ですが、潜在的な要求を見出していくのも、職業プログラマには必要な技術が必要になってきます。

また、時には嫌な(面白くない)仕事だってやらないといけません。

○複数人での開発
大規模なプロジェクトになると、大抵複数人での開発になります。複数人での開発では、進捗管理、リソース配分等が必要になります。勿論的確な意思疎通を行うコミュニケーション能力も必要です。

○開発上のルール
開発のルールといってもいろいろありますが、使える言語が指定されているというところから、コーディングルール、ドキュメント作成など、趣味の時とは違って、自由にならないことがたくさんあります。

○仕事に対する責任
仕事で作成したソフトウェアの多くは、なんらかの対価と引き換えにお客さんの手にわたります。早い話、お金を頂くわけですから、その成果物に対しては、作成者としての責任が発生します。
重大なバグ等は、お客さんへのご迷惑をおかけするだけでなく、製品の回収、あるいはアップデート費用等で会社にも被害を与えます。高品質ソフトウェア開発は非常に重要なテーマです。

○コスト
企業は利益をあげないといけません。社会への貢献も何もかも、つぶれてしまっては何もできないのです。開発作業では、決められたお金、時間の中で開発を進めますが、それぞれの開発者がコスト意識をもって開発にあたらなければ、良いものはできません。プログラミングそのものの技術だけでなく、プロジェクト管理等の技術も必要とされています。

とりあえず、思いつくままだらだらと書いてしまいましたが、おいおい掘り下げた内容を書いていきたいと思います。

コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます
非公開コメント

本のおすすめ

4873115655

4274065979

4822236862

4274068579

4822255131

B00SIM19YS


プロフィール

  • Author:proger
  • 組み込み関係で仕事してます

ブログ内検索