なんかずっとこれに違和感があったんだけど、なんとなくわかった。ネットの話を見てるとどうも「コードを書くこと」を「技術」と呼んでいて、ゆえに「コードがかけないと技術がわからない」となっているんだと思った。
つまり「A→B」なんだけど、「A=B」なので、結局循環論法「A→A」となっているっぽい。
繰り返しになるけど、包含関係だけ考えれば、webひとつをとってみてもコードを書くこと以外の技術の方が多い気がしてならない。
結果的にほとんどの人はコードがかけるので、必須条件のように思えてるけど、実際そうでもないと思う。
もちろん、漢字の書き取りと一緒で、実際やってみるのが一番覚えられるし、やってみないとわからんことも多いわけだけど、別に音声認識の詳細な実装を知ってアプリを書いてる人がいるのか疑問だし、画像処理にしてもopenCVの関数使ってるだけで実装知らない人たくさんいるんじゃないかな?
もっと身近な話でも、画像の拡大縮小くらいwebでもやりますよね。あれ具体的にどんな処理してるか意識して書いてる人います?
mysqlだって、RDBMSがやっている動作を正確に把握して一から構築する根性を持った人がどのくらいいるでしょうか?webの世界では、ランダムアクセスファイルすら自分で実装できる人どのくらいいるのか個人的には疑問です。
コード書かなくてもいいというわけではないですが、個人的にはコードがかけることと技術がわかるという話は別物なんだと思いますよ。
重要なのはmysqlでインデックス張れば早くなるとか、なんだったかのライブラリを使えば画像の拡大縮小が簡単にできるとか、結果だけでもわかってればそれで十分じゃないでしょうか?
ようは注意深くニュースを見て、どんなことができていて、そこからどのくらい未来が妄想できるのかということのほうが重要であるきがします。
※詳細に知ってれば知ってるほど、よりたくさんの知識があるほど未来は予想しやすい気はします。けど、それはphpがかけるかどうかとは関係ないよね・・・・
※表現がわかりにくかったですね。わかりやすい部分でまとめると「mysqlを一からコードで書かなかったとしても、その技術を知ることはできるし、使えるよね」という話
なんか意地でもITを泥化したい人たちがいるらしい。これは悪意すら感じるようになってきた今日この頃です。
まず書く前に自分の立ち居地について書いておく必要があるかな。
ちょっと書きたいことをバラバラ書くので読みにくかったり、語弊があったりしたらすみません。あまりエンジニアの未来サミット関係ないかもしれません。
また、多分に個人的主観が強いであろうことも付け加えておきます。突っ込みは歓迎。むしろ中々実情について調べられないでいる(と、いうかあまり自分には関係ないので調べるつもりもないんですが)ので、事実を教えてもらえるのはうれしいです。
自ら泥化する学生たち
あまり一般性はないかもしれないですが、これを最近思いました。これを思ったのはちょっと前に知り合いがwebのデザインを始めたといったときのせりふ
すごい高額な料金を取ってデザインしているのに、それにお客さんが満足していない。同じものならもっと安くできる
価格競争を自ら誘発しているわけです。で、開発やデザインの差はあれども、実際安くやることによって仕事を得てる人たちがいます。
しかし、それは本当に安くやるべき仕事だったのかどうかについてはよく考えたほうがいいんではないでしょうか?
たとえば、私も結局安い値段でやってはいたわけですが、railsやCMSなどを組み合わせ、さらに仕事を絞ることで基本的なコストを削減することを第一に考えてやっていました。
少なくともそういった工夫は必要です。
第二に一般論ではありますが、コストベースで仕事をするのは価格競争に陥りやすく、あまりお勧めではありません。
ほとんどの商売上手な人は相手によって少しずつ提案する内容を変え、利益に対する値段を考えたりしています。
請求書上項目がどうなってるのかは人によると思いますが。
特に、結果としてアウトプットに差がでにくいwebの開発やデザインなどにおいては、そうなりがちであることは想像に堅くありません。
多くの人は「信用を得るために仕事をこなすことが重要」というのを言います。これはある程度認めましょう。しかし、最終的にはサービス面での差別化をはからなければ、その会社は泥化を促進するだけのものでしかないんではないでしょうか?
安くやるというのにはそれなりの戦略性が要るのかと思います。
泥な人たちはどのくらいいるというのでしょうか?
これが私にはよくわかりません。
なんどとなく書いていますが、定時にかえってるSI屋さんというのもいます。なぞですね。
あと、なにをもって泥といっているのでしょうか?これもよくわかりません。
就業時間でしょうか?外資コンサルの人たちの初任給と労働時間について考えたことはありますか?
私も労働市場全体のことはよく知りませんが、ITに限らず残業が問題になっているのはご存知のとおりかと思います。
給与面でしょうか?
これは単純に数字をよく知りません。
しかし、IT「業界」が泥だといいたいなら、個別の事例を取り上げてうだうだ言ってもしょうがないはずです。
これに関する定量的な話をついぞ聞いたことがありません。
さらにIT業界って何でしょうか?
大手電機メーカーの研究所でエンジニアをしていると大体年収平均700万くらいで安定するそうです。
大金持ちってわけでもなさそうですが、安定度には定評があります。
これも部分的なはなしなので、一般に当てはめるには困難がありますが・・・
なんでもいいんですが、泥じゃないサンプルをいくらでも知っています。だれか定量的な説明をしてないんでしょうか?定量的じゃなくてもいいですが、事実について正確に把握してる人がどの程度いるのかが疑問です。
人月商売・多重下請構造は破綻するのか?
破綻ってなんだろう?という気がしますが、0になるという意味なら、それはありえないでしょう。なんにしても最終的に手を動かす人が必要です。
価格競争に耐えられなかった自律泥化企業は消えていくだろうなというのはありそうなシナリオな気はします。
自分の人生は自分で決めろという論理は正しい
PDSCサイクルではないですが、自分で計画して、実行して、失敗して、修正するしかないことはたくさんあります。
特に有象無象な業界ほどそれは当てはまる気がします。
教育制度のしっかりしている大手企業以外で教えてもらうことを期待することは非常に難しいです。
ほとんどの学生にとっては就職が人生を考え始める第一歩であるような気がします。
私事で恐縮ですが、実際いろいろやってみて「明日くう金がないかもしれない」というリアルな状況におかれるまで、なんか昼夜を問わず電話をかけてくる理不尽な人と出会うまで、いろんな心温かい大人たちに色々と指摘されるまで、自分の人生についてなんか考えたことはありませんでした。
もちろん将来○○系でやっていきたいという漠然な考えはあるでしょうけれども。
たたかれるにしてももちあげられるにしても、基本的には私の行動に対して世間はリアクションを取るわけで、悩んでいるだけではまさに自分の存在は世間から見たとき「空気」です。
泥の話にひっかけるなら、主体的にビジネスをできないほど泥に足を突っ込むことになるでしょう。
泥の論理自体は至極単純です。リソースに見合わない作業を強いられているだけです。
積極的なリソースの確保と作業の調整がそこには必要なわけです。自分が社会の歯車にはまっていないのであれば、なおさら努力しないとそこにはまり込むことはできません。
ほとんどの人は、そういった意味で泥にはまり込まないように、できるだけ主体的に判断しなくてもいいように、学歴とかネームバリューにこだわるんだと思いますが、その権利を得られる人は社会全体から見れば小数です。
しかしそういった学歴とかがある人でも、大成功を目指すような野心家は、やはり最終的に主体的判断が必要になるでしょう。いずれにしても社会全体に存在しているリソースは有限であり、大量の成功者を抱えるには足りません。
技術とは何なのか?
実務として何をしてるのかはよく知りませんが、文系SEというのは結構いるものです。
しかし個人的な思いとしては、プログラムかけます程度を技術と呼びたくはない気はします。もちろんプログラミングはたくさんある技術のひとつではありますが、その「プログラミング」というひとつの技術を持つ人を指してエンジニアとは言いたくありません。
一言で言えば、それだけだとほとんどの世の中にある工学的・エンジニアリング的問題が解決できないからです。
はたしてプログラム書けるだけの人がサイトに集客をしたいというニーズを解決できるんでしょうか?その問題をテクニカルに解決するのがエンジニアの価値です。
最近めっきり公的にはなくなりましたが、プログラムでスパムサイトを量産するというのはひとつの立派なソリューションです。(勧めてるわけではありません)
経営者の価値が適切な組織運営の方法を提供することであるならば、エンジニアの価値は適切な技術の選択と適応ができることが価値です。
単一の技術をもつだけではほとんどエンジニアとしての価値はないといっていいでしょう。
今まで私は「文系」と「理系」という区別には意味がないという主張をしてきましたが、それは主にシステムの開発に関する教育を行う機会が平均的には存在しないため、差がないという意味で使ってきました。
しかし技術者・エンジニアという文脈で考えた場合、より多くの技術ポートフォリオ・技術的思考になれている人間のほうが相対的に有利であと思います。
ここに関して「文系」と「理系」を区別することには意味があると思います。(正確には受けてきた教育に関してわける合理的理由はあるかと思うという感じです。)
文系エンジニアが成立するのはかなり局所的な話であり、すでにweb開発がコモディティ化している現代においては、すでに文系エンジニア論理は終わりを告げつつあるように思います。それこそ泥なのは文系エンジニアの世界ではないですか?(これは提案。実際はよくわかんない)
重要なのは敬意
以前紹介した記事(twitterに書いただけだったかも・・?)にもありましたが。
4. Failure to Show Respect
When in Rome, do as the Romans do. If you’re a tourist overseas, you shouldn’t assume that everyone speaks English. That’s just plain rude. Natives of your host country will appreciate any attempt to speak their language, however feeble it might be; it’s a sign of respect and will go a long way to making sure the waiters don’t spit in your food. Likewise, even if business execs don’t understand the “language” of their technical counterparts, they need to do their homework and try to gain a basic awareness of the job at hand. It shows respect and breeds confidence. Business execs also often fail to appreciate what inspires and motivates technical and product folks, who sometimes are creative types more interested in building cool, innovative and useful stuff than making a busload of cash.(要約)
郷に入れば郷に従え。エンジニアたちの言葉を理解することは、彼らに対する敬意をしめすことなのである。もし理解できないのであれば、自分で勉強してちょっとでも仕事についてわかるようにしておくべきである。
また何が製品担当や技術担当のモチベーションをあげるのかをうまく理解できないことがよくある。
経営者の話を聞いていると「ずいぶん勝手なことを言うな」と思うことがしばしばある。これは本当に簡単なことであるのに気づかない人が多い。
エンジニアだから、プログラマだからといってどんなものを作ってても楽しいということはないわけです。よく「プログラムかいてれば楽しいんでしょ?」という人がいますが、大きな勘違い。もちろんそういう人もいるにはいますが・・・・
ひるがえってこう聞けばいいかもしれません。「温暖化を解消する会社を経営してよ?経営してればなんでも楽しいんでしょ?」
どんな会社でも経営できれば楽しいという人は、プログラマと同様にいるんだとは思いますが、自分の興味のない会社を経営することを考えたら、ほとんどの人はモチベーションあがらないんじゃないでしょうか?
それが将来もよくわからないような会社だったらなおさらどうでしょう?なんで自分がそんなことをしないといけないとか思いませんか?
俺も仕事じゃなきゃこんなこと考えませんが(モチベーションはやはり品質に跳ね返る。身内ならなおさら。)、すごく当たり前のこととして考えてほしいと思うことが多いです。エンジニアを少しひとくくりにしすぎじゃないでしょうか?
経営者は自分の仕事に関してよく考えてほしい
かえって俺は経営者の仕事というのがよくわかりません。いや、大体わからなくもないのですが、コードを書けるべきとかそういうのとは本来的に別次元であると思うんですよね。
やっぱりインターネット。作る側の悲鳴ばかり聞こえてきて「私はそれにメスを入れる!」みたいな人たくさんいるわけですが、果たして経営者が本来的にするべきことについてネット上で語られてきているでしょうか?
ここには相当バイアスがかかっていることに注意しなくてはいけないと思います。
たいていの場合経営者は組織の制度上の明確な権力を持っています。形式上エンジニアを首にすることは簡単なわけであり、コストに見合わなければ首をすげかえることができるわけです。
それに対して技術者は実力で対抗しなくてはいけないわけです。「私の代わりはいませんよ?」
経営者は組織上明確な権力を持っている以上は、本当に見合った仕事をしているのかについては慎重に考える必要があります。
究極毎日ゴルフしてたって誰もあなたを首にはできません(人はついてこないでしょうが)
そういった立場であることを第一に考えるべきではないでしょうか?
果たして技術なんかにうつつを抜かしている場合なんでしょうか?もっと経営者がすべきことがあるんではないですか?
これは技術がわかるべきかどうかというのとは別次元の問題であり、かつ、本来的にもっと議論されるべきところなんだと思います。
思い出したのでついでに言うと「エンジニアにとってすごしやすい会社/企業」というのはなんかおかしいのです。前項にあげた「敬意/それぞれの趣味趣向」を認めるなら、それが物理的に実現不可能であり、たとえ実現したとしてもエンジニアリングとして優れた人は来ないであろうことが想像できます。
むしろ会社として「求める人材像」があり、その人たちにすごしやすい環境を整えるべきなんではないでしょうか?
泥の原因
個人的には泥の原因はこれじゃないかというのがあります。だいたいこの中のどれかか、これの組み合わせじゃないでしょうか?
すくなくとも、「エンジニアの未来サミット」というタイトルで、なぜかプログラミングっぽい話だけをする感覚自体になにかしろの破綻が見られるように思えます。
(もちろんgihyo.jpが主催な時点である程度察しろという話はありますが)
希望というか提案
そしてもうひとつ。これ個人的には重要なんですが。
理系で全うに工学してる人は、学部であっても、webとかよりはだいぶ別次元のことしています。
追記:なんかアレゲなので今後泥の話には触れません。
なんやかんやありましたが、うかりました。
来年から情報理工学系研究科の創造情報にいきますm(_ _)m
後日追記:
ついでなのでどんな勉強したのかかいておこうと思います。勉強以外についても。
ただし、多分に予想が入っているのでなんともいえません。
また、かいてあることは必ずしも合格しようという意図でやったわけでもないことが多いのでその点注意。
(もともとアルゴリズムの勉強もしようとしていたので、実はそれほど試験勉強っぽいことはしていない)
あたりまえですが、行こうと思ってるんだから、説明会は聞きにいきましょう。自分の場合趣味が合わないと瞬間的に行かなくなることが経験上わかっているので、特に重要です。
説明会に行くと、紙に名前とか書いたので、影響度は低いにしてもなにかしろの意味はあると思うのが自然であるような気がします。
次。これは結構いろいろなやんだりしましたが、研究室の教授に話を聞きにいきましょう。俺は友達と一緒に行きました。
これまた人柄の問題なんですが、やっぱしあわない人とはあわないので、個人的には重要なファクターです。
実は教授とそりが合わずに卒業できなかった人を少なからず知っているので、要注意です。
とりあえず過去問をざっと眺める。
じぶんは全部印刷して床に並べて眺めたりするんですが、なんとなくの傾向をつかみます。
創造情報だと1アルゴリズム、2コンピュータシステム、3ロボット、4語句問題というのが割とすぐにわかります。
まぁ正直これわかっても領域広すぎてアレゲでしたが。
とりあえず過去問は解く。
すくなくとも創造情報の問題は本とかwebみればだいたいわかる問題ばっかりです。
めんどくさがらずに解きましょう。
けど、なんだかんだいって、似たような問題全くでないので、無駄といえば無駄な気がしないでもないです。
試験に向けての準備。
これが個人的には一番力はいってました。まずemacsの改造。コマンドの引数とかをすぐ調べられるように、friを導入し、anything-rcodetools.elを導入します。
これ便利。
rcodetoolsとは、rubyをかくのに便利なコマンド群です。とくに xmpfilterは便利。これを入れるとrubyのコードをかいているすぐ横に演算結果を出してくれるので、デバッグが楽になります。
そして、こっからが重要。結局使わなかったですが、プログラムの動作確認をするためのツールや、マニュアル類をネットから大量に落としておく。
たとえば、結構グラフの問題が多い傾向があったので、簡単にグラフを可視化できるツールのgraphvizを入れておきました。
これをつかって、自分のかいたプログラムが本当に正しいかどうかを芽で簡単に確認できるようになります。
あとマニュアルを大量に落としておく。graphvizのチュートリアルやアルゴリズムのまとめサイトからwget -rで大量にローカルにダウンロードしておきます。
すると試験中困ったとしても確認することができますね。
一応試験の縛りとしてはネットにさえつながなければいいので、ひょっとするとwikipediaをlocalに入れておくとか、やっといてもいいかもしれないですね。
まぁ使わない気もしますが・・・・
プログラミングの面接は、慌てず騒がず、自分の方針の正しさを全力主張しましょう。自分は最後まで書き終わらなかったですが、方針とそれが有効な時間内に計算が終わるということを言ったらだいたいOKだったみたいです。
なにげに筆記はちょっといまいちなできだったのであれですが、総合的にはOKだったみたいです。
と、まぁそんな感じで、来年受ける人がいればご参考に。
プログラミングができるようになるためにはというのが最近よく話題になってるっぽい。twtter:tamuken,プログラミング未経験者がJavaScriptでプログラミングをするために必要なこと
そういえば自分はどうだったのかなー?と思っていろいろ考えてみた。
たぶん自分の場合何段階かあったような気がする。
気づいたころには、なんで書けてるのかよくわかんない感じになってたので、どうやったらできるようになるのかという質問が一番難しいのですが。
ただ、自分は目的があってそこで初めて言語を覚えるタイプなので、実はプログラミング的にきれいに書くとか、プログラミング自体にはそれほど詳しくありません(デザインパターン?副作用?関数?だからなに?的な)
よくいろんな人が言っていますが、プログラミングは自己表現の一環であって、もちろん言語に関して詳細な知識を持っているほうが流暢な言葉がしゃべれるんでしょうが、別にそうでなくてもいいわけです。
まぁなんやかんや言ったところであれですが、ようは俺が小学生のころに書けたんだから、書けないことはないでしょう。
howto系は他の人に任せるとして、体験談から。プログラミングかけるようになるコツとか書いてないかも?
親になんとなく勧められたベーシック
小学校2年の頃だったかな。pc9801の青白液晶のPCがたぶん人生初のPCとの出会いでした。青白って何?って感じでしょうが、昔はなんだか知らないけど液晶は青白だったんですよ。コントラストが悪かったんでしょうか?
そのときにN88Basicなんてものがあったんですが、親になんとなく本を渡され色々教えてもらいました。もはや中身は思えてないですが。
たぶん人生初のプログラミングはautoexec.batです。はい、これまた何なの?って感じでしょうがunixのshみたいなものです。今でもwindowsだと.batのファイルとかありますよね。
昔はフロッピーをいれて電源を入れると、フロッピーに入ってるプログラムが動くということがありました。いわゆる起動フロッピーというやつです。
そこにDOSのシステムとconfig.sysとautoexec.batというのを書くと、環境を設定してくれてautoexec.batに書かれているプログラムを起動してくれるわけです。
中身はたとえばこんな感じです。
omoshiroi_game.exe
こんだけ。もうちょい中身はありますが、要はゲーム起動するだけ。当時何も仕組みわかりませんでしたが、どうやらこうするとゲームができるというのは覚えたので、こんな感じでやってました。当時インターネットなんかなく情報源といえばパソコン通信と父親。やっぱし父親が詳しかったのは大きいかもしれないです。
で、当然自然な成り行きとして、今度はゲームを作りたくなるわけです。だってタダですからね。アイスクリーム買うのにも躊躇するのに、タダでゲームができるわけです。やらないわけがない。
詳細な話は省きますが、N88Basicというと今みたいにビジュアルなゲームを作るのには色々ねたっぽい事をしないとだめです。たとえばキャラクターひとつ書くにもピクセルごとに色を指定して全部配列みたいにして書いたりします。
関数なんてない(あったかも知れんけど使わんかった・・・)ので、全部GOTOとかで書いたりとか。結果的にこういうところでコンピュータの仕組みが帰ってわかった気がします。
関数がなんだかんだとやるより、Goto 100とかやると100行目に飛ぶとかいうほうが100倍わかりやすいですよね。ある意味最近のプログラミングは複雑になりすぎたのかもしれないです。
まぁさしてプログラミングなんか興味なかった(いまもそれほど興味ないんだけど)わけですが、ゲームをしたいって衝動とありあまる時間でプログラミングしてました。
インターネットとの出会い
これも小学校の頃ですね。まぁ最初はホワイトハウスのwebを見たりしてきゃいきゃいさわいでただけですが。(当時のインターネット入門本はyahooとホワイトハウスが鉄板でした)
中学校の頃webページを公開したくなり、HTMLとjavascriptとperlとjavaを覚えました。なに作ってたかってブラクラとか某ゲーム機から履歴をぶっこ抜くとかそういうプログラミングをしてました。中学生というと、なんというか、サブカルチャーにあこがれますよねw(当時から厨房という言葉はあり、「ほんとに中学生ですがなにか?」というのはよく使ってましたね・・・・)
こんなページ(まだあったよこれ・・・・)

中学から高校の頃まで管理してました。なんつーか、恥ずかしいことたくさんあってなえた・・・・
内容は趣味で作ったプログラム公開とかそんなんですね。あとは友達との交流とか。ライトノベルなんかもよく読んでたので、そういうのも書いてあります。
プログラミング自体の話になると左上のカラスっぽい絵。とうじホワイトボードみたいなソフトウェアで全うにwebで動くのがなかったため自分で作ろうと思ったんですね。ないもんはしょうがない。
で、フラッシュとかもあったんだかなかったんだかという時代なのでjava appletで入力インターフェースをつくり、サーバへの保存をperlで書いています。
で、これまた残念なことにCPANとかがあったのかなかったのか当時よく知らなかったので、GIFの圧縮処理も自力で書いてます。
LZWの仕様書とか読んでましたね。ここで、ついでに英語も読めるようになりました。
なんかいろんな都合でHTTPとかFTPやSMTPのRFCとかを読んだりしていろんなプロトコルとかも実装しました。チャットソフトとかもjavaで作りましたね。最近1000speakersでflashで作ってた人いましたが、ほとんど同じ実装だったので懐かしい感じでした。
しばらくさわらなかった
高校受験をはさんで、たいしてプログラミングしなくなりました。何ででしょうね。謎です。一説によるともてたかったんじゃないかという噂がありますが、大してもてたわけでもないので謎です。
けどなんだかんだで高校のwebつくったり、VJなんかもしました。CPU500MHzとかで動画編集するのは地獄でしたねー。composite stationをはじめて触ったときには感動ありました。だって当時のスペックであんだけさくさく動画動くんですよ?びびりましたね。
高校の紹介ビデオをフルデジタル編集して、2年間くらいは学校の公式行事で使われたりしました。プログラミングらしいプログラミングはほとんどしてません。
ベンチャーへの興味
はなしは大学まで飛びます。プログラミングの商業的側面について考えるようになったのはこの頃です。
ITベンチャー!シリコンバレー!大金持ち!ぐへへへへ。何気に幼少の頃からNHKとかでやってるシリコンバレーの話を延々と聞かされていたせいか強くベンチャーに興味がありました。
で、インターン紹介のなんとかって会社経由でチームラボという会社にバイトをしに行きました。2004年の2月くらいかな?
初日からいきなり「PHPとかSQLとか知ってる?書いて(ハート」という展開。ぜんぜん知らなかったわけですが、他人のプログラム直したりテストしたりしてるうちに、なんとなーく書けるようになりました。知らないもんを何で直せるんだって話はあるんですが、割とそこにプログラムがあるとわかるものです。というか、直したというよりは直るまでいじくりまわしてたという感じですが。
結構個人的にはここがターニングポイントで、やっぱし自分より詳しい人がいるという環境は結構重要でした。linuxとかサーバとかテストとかデバッグとかIDEとか。知らないこと盛りだくさん。これは感動的。
もともとあんま大学行ってなかったですが、延々と何回も高校の頃もやったような微分積分とか、いまさらな美術論とかやられるよりは、新しい情報があるほうが楽しい!まぁ大学もっと無視するようになりましたね。(あとで、研究室とかに行くのもありだったなと思うようになりましたが)
で、ほんとにこの辺からプログラミングで独立しようと考え始め、ドリームゲートなど起業系のイベントにも行き始め、プログラミングもどちらかというとコストカットについて考えるようになりました。
フレームワークとかライブラリとか。オブジェクト指向とかも基本的に生産性の問題で覚えました。
で、色々あって一人で仕事もらうところまでやりました。はじめて請求書に自分の名前書いて出したときは結構感動ありましたね。
ここもひとつポイントですね。生産性。利便性。あと、お客さんのことでしょうか。ぶっちゃけた話、プログラムのきれいさとか美しさなんてのはどうでもよくて、そのシステムを使う人、サービスを受ける人の利便性を考えることが重要だということ。
最終的には、その利便性を担保しつつ、コストを抑えるための仕事の選び方やフレームワーク選定、ライブラリ、バージョン管理などなど。
商業的な側面としてプログラミングを捉えるようになったのはこのころなきがしました。
コンピュータへの興味
なんというか、今まで手段としてのプログラミングをよく考えてきてたわけなんですが、ここにきてコンピュータそのものにも興味が出てきました。
O倉君との出会いが少しプログラミングへの考え方を変えました。ひいては大学院行ってもいいかなと思うきっかけになったのですが。
ある日プログラミングで関連検索のようなものを実装する必要が出たわけですが、どうも自分がやるとうまくできそうにない。と、いうわけで、その部分だけ頼んだわけです。すると、あっという間に作り上げてしまいました。これはすごい。
最近保守の関係で久しぶりに見たのですが、今見てみれば単にTF/IDFによる特徴語抽出と、そこからの関係だけをみてるだけなんですが、当時はまったくそんなことわかりませんでした。
しかもお客さんはこれにたいそうな名前をつけて売ろうとかするわけです。これはすごいなー。
この辺からアルゴリズムやコンピュータそのものに対する興味が出てきました。単純にサイト構築でも一日あたり数十~百万件のデータ処理をするものとかを作るようになり素朴に実装すると動かなくなり始めたというのもあります。もはやGOTO100とかやってたころのテンションじゃ無理です。自分が提案している内容もデータの分析とかそっちのほうに自然とシフトして行ったのですね。
しかし困った。知恵がねぇ。もはや自頭で考え続けるのには限界な感じがしてきてました。残念ながら天才ではないのでみんなが必死に勉強してるようなもんを普通に思いつくほどには頭よくないわけです。
というところで、今はコンピュータアーキテクチャそのものやアルゴリズムにすごく興味が出てきて勉強しています。
もちろん動機は「お金になるから」とか「笑えるから」とかそういうゴミな発想なのですが。だけど、一番大きいのはそこには越えられない壁があるなと感じたのが大きいです。
なので超える努力をしようというのが最近です。
プログラミングできるようになるためには?
個人的には、書こうと思ってかけるもんじゃないと思うんですよね。自分を客観的に考えてプログラミングの才能がある気がしません。
単にいろんな理由で、商業的にとか、趣味的にとかで色々研究してるので、なんとなくその延長でかけてるだけといえばそうです。
実例として、起業した友達とかはECサービスをやりたい一心で結局自分でもある程度PHPやflashをかけるようになりました。あの根性はすごい。
それで経営もやってますからね。
動機が必要というとありきたりですが、もしプログラミングせずにあなたの目標が達成できるなら別にしなくていいんだと思います。
趣味ではじめたいなら、本でも買って読めばいいわけです。最近iPhone出ましたね。じゃぁobjective-cとか。iPhone用のhtmlなんか書いてみてもいいかもしれないですね。これも本はあります。
プログラミングのためのプログラミングは好きな人のみができる話だと思います。haskellとか興味ありますし、ちょっと触りましたがあれを今おぼえる気にはなりません。
私個人の話をするなら、やっぱり「これがしたい!」という動機でしょうか。いまメディアサイトの立ち上げなどを計画してサーバ借りたりCMS選定したりしてますが、全部一から調べています。それなりに時間とお金かかってますが、まぁ要はやりたいかやりたくないかです。
CMSなんかぜんぜん知らないですが、本を買ったりネットで調べたりするわけです。一から作ってもいいわけですがスケールの問題と管理コストの問題などを総合的に評価してCMSを今回は「使ってみる」という判断をしたわけです。
別にサイト作るだけなら何でもいいと思います。
はっきりいえば、自分はお金大好きです。はい。あと手を動かすのも嫌いです。働いたら負けですね。そう思ったときにシステム作れたほうがいいと思っただけです。
だから第一義的なコンピュータそのものに対する興味はいまだに疑問です。が、すべては関係していてそれが最終的にコンピュータそのものへの興味へとつながっているわけです。コンピュータについて、プログラミングについて、たくさんのことを知っていれば最終的に手間をかけずに色々実現できますよね?
根本的に言えば、数学が好きです。これは趣味ですね。論理学とかああいうはっきりしていて議論しやすいものは好きです。だからコンピュータとかの発想もなじむといえばそうなのかもしれません。
なんだか、ばらばらかいてますが。だいたい、プログラミングするときになに考えてるかとか、プログラミングなんでできるようになったかとかをまとめるとこんな感じ。
移動しっぱなしですね。
さくらに移動したんですが、mysqlのバージョンの問題などで、slicehostという海外のvpsサービスに変えました。
今のところ快調。