Tired of ads? Upgrade to paid account and never see ads again!

karino2


南よ! 海の見える方!


Previous Entry Share
プログラミングの楽しみいろいろ
karino2
プログラミングと一口に言っても、大分いろいろな形態がある。
当然楽しさもいろいろある。
今ちょっと考えてみたら、5つくらいある気がした。

まず一つ目。
問題を解くという楽しみ。
だいたい大学受験の数学と同じような楽しさ、と思ってもらって良い。
複数の解き方があって、ある解き方は良い解き方であり、ある解き方は冴えない解き方である。
問題が解けた時は楽しい物だし、うまく解けた時はもっと楽しい。
この楽しさは比較的どの規模の開発でもあるような気がする。
大規模の方が余計なオーバーヘッドがあるけれど、まぁそんなに朝から晩までひたすら問題集を解きたい、という訳でも無いので、場合によっては大規模チームでも十分だろう。

二つ目は、タスクを片付ける楽しさというのがあると思う。
スクリプトとかで自動化する時に味わいやすい。
手作業で出来る作業があって、それをどうにかしてコンピュータにやらせる事に成功する
これはなかなか楽しい。
この楽しさは、分からない人にあまりうまく説明出来ないが、確かに何かある。
この楽しさは、行っているプログラムの種類によっては全く存在しない。
極端な例では自分で使わないソフトウェアの場合はそういう楽しさは全く無いだろう。
また、そもそも手作業では出来ないタスクやゲームのような物でもこういう楽しさは無い

3つめは、物を作る楽しさ、というのがあると思う。
何もない所からだんだんと物が出来ていき、なんかちゃんと動いたり動かなかったりする
楽しい。
これは小さい規模の方が味わいやすい類の楽しさに思う。
日曜大工とかと似た楽しさ。
作っていく楽しさ、というのはプログラムの楽しさの一つだよなぁ。

4つ目は、暮らしをデザインする楽しさ、みたいなのがある。
暮らしといっても電子的な物の上での話な事が多いが、プログラマは画面の上で生活している時間が長い事が多いので、実際に生活をデザインしている、という場合が確かにある
例えばWhiteBoard Castとか。ベンチとかでおやつとか食べつつちょろっと動画を作り、youtubeにアップする。おぉ、俺クール!みたいな。
「一文戻って!」なんかも、ハンモックに揺られながらとかバスの長い移動とかで、手元のリモコンだけでひたすらスペイン語とか復習する。俺クール!みたいな。
自分の例はモバイルに寄りがちだが、別にPCでもいろいろあるだろうし、ブラウザ拡張やら簡単なサーバーサイドやら、もっとささやかな例も一杯あるだろう。
アニメの録画の予約でもなんでも「うーむ、俺クール!」とか思ってるプログラマはきっと多い。
これは部屋の模様替えとか、ホームセンターとか無印とかで変わった家具みたいなのを買ってきてそれをうまい事使うような楽しさに似ている。
自分なりのオリジナルな何かで自分の生活を彩る。毎日使う物が自分の作った物であり、それを使って自分しか実現できないワークフローを実現する。
楽しい。
3つめの作る楽しさと似ているように見えるが、この生活をデザインする場合、作るという事には関心が無い事がある、というのが違い。
理想としては誰かが自分の代わりに作ってくれる、というのが嬉しいのだが、作ってくれないので自分で作る、というだけ。別に自分で作らないで、ちょうど良いソフトが見つかったら喜んで使う。

5つめは、プログラムをするという営み自体の楽しさがあると思う。
なんか画面の前に座ってがーっとコード書きたい!という思い。
うまい事言えないが、しばらくコードを書いていないとコードを書きたい!と思う事がある。
ちょこっとちまちま実験する。よし、だいたい出来そうだな、後はぐあーっとコードを書くだけだ! 必要そうな資料を一通り集めて、準備完了!ハイソにスタバでも行ってバリバリコード書くぜ!みたいな時の、このバリバリコード書くぜ!的なのは、コードを書くという営み自体の楽しさがある。
デスクトップでしかコードを書かない人でも、この「よーし!バリバリコード書くぜ!」というのはどこかしらにはあると思う。
それはプログラムをするという行為自体の楽しさを含んでると思う。

以上の楽しさは、全てが全てのシチュエーションである訳では無い。
例えば昔は、怠惰さはプログラマの美徳と言われていた事がある。
そういう時には、暗に二番目とか四番目を仮定していると思う。
でも例えば問題を解きたい時に怠惰が美徳と言われても困ってしまう。例えばプログラミングコンテストの類を楽しくやってる人は、怠惰さが美徳とか言われても「知るか!」って感じだろう。
コードを書く事自体が目的の事がある。一つ目と5つめの楽しさはそうだ。

4つめの自分の暮らしをデザインする、という時に、明確にゴールがある場合がある。
そういう時はコードを書きたく無い事は結構ある。
欲しい物があるけど作りたいという訳では無い。
作るのはめんどくさいなぁ、誰か俺の代わりに書いてくれないかなぁ、とか思う。
こういう時には、一つ目と5つめは全く無い事が多い。二つ目と3つめはやり始めるとある物だけれど。
コードを書きたいのでは無く、結果のソフトウェアに関心がある。コードを書きたい訳では無い。

二つ目と4つめは、コードでは無く結果に興味がある。
1, 3, 5はコード自体やコーディングという事に関心がある。
結果に関心がある場合とコードに関心がある場合では大きく立場が異なる事がある。
例えば結果に関心がある場合、コーディングが嫌いな事もある。

プログラマはコーディングが好きな方が良い、とは限らない。
やらなくても良い事をやってしまうのは、プログラミングの世界では凄く良くある。
潰すべきプロジェクトを、まぁ俺のせいじゃないからいいか、とやってしまうのはあまり良い事では無い。
コーディングが嫌いだと面倒な事を乗り越えてちゃんと潰すよう頑張る側に決断を倒せる場合がある。

一方でやらなきゃいけない事を後回しにしてしまう、という問題もある。
面倒くさくても、結局はやらなきゃいけない、という事もある。
場合によってはそういう事ばかりというシチュエーションもある。
そういう時にコーディングが嫌いだと、ただ不幸なだけ、という事もある。

また、自分の創造性とかを発揮するのがあまり好きでは無い人、というのも居る。
別に欲しい物なんて既にあるし。
作りたい物なんて別に無いよ、みたいな人も居る。
でもそういう人でもプログラムの仕事は出来るし、プログラムを楽しむ事も出来る。
コーディング自体への関心が高ければ品質の高いコードを書くようになるかもしれないし、それは大規模なソフトウェア開発では、むしろ良い性質かもしれない。

それぞれ個性がある人たちが集まる方が、たぶん良いチームになると思う。
一つの理想的なプログラマの性質、というのは無い、と信じている。

ただ、あまり一つのあるべきプログラマ像とかには縛られずに、状況に応じて違った楽しさを楽しめるような腰の軽さがある方が、プログラマライフはエンジョイしやすいかなぁ、とは思う。

You are viewing karino2