知識の上書き
世の中には数多くのテクノロジ、またそれを利用した製品が存在しています。最近ではクラウド関係が花盛りというか、話題に事欠かないのもあり、続々と目新しいものが増えてきています。
個人的には、最新技術ではありませんけどSync Frameworkという同期処理用フレームワークを調査していたのですが、レコードの変遷を記録するための仕組み(トリガ、ストアドプロシージャ、ログ記録用テーブル)を自動で作成してくれる点に、非常に驚きを覚えたものです。またデータベースだけでなく、フォルダ間の同期も非常に簡単に行えるようになっていました。フォルダ同期もDB同期も、あまりにも簡単にできてしまうので正直困惑した程です。
このように進歩した環境を見ると「今までに得た知識と経験」は、どんどんと置き換え(もしくは追加)していかなければいけないな、と危機感を感じます。今までは自分たちで行わなくてはならなかった事柄(設計や実装)が、フレームワーク等で対応してくれているのです。極端にいえば「知らなくともなんとかなる(≒知らなくてもよい)」のです。それ自体の是非はわたしにはわかりません。感情的には「技術者としてどうよ?」と不満に思うことはありますが仕事として捉えると、知らなくともそれほど問題にならない状況に世の中は確実に変化しています。
わたしがこの業界で働き始めたころ、クラスを利用したオブジェクト指向プログラミングというのは「インスタンス生成等でレスポンスが出ない」「ロジックが隠蔽され理解しづらい」等の意見が多数ありました。実際過去の時点では、クラスからインスタンスを生成するところでかなりのレスポンス悪化が見えたのですが、今の環境では全くと言っていいほどレスポンスが悪化することはありません(実際のレスポンス悪化原因は、ほぼ間違いなくPG設計でした)。
同じくロジックが隠蔽されて~という点に対しても、フレームワークを用いた開発論がまだまだ普及していなかったご時世ですので、なかなか受け入れられなかった「感覚的」意見のように思えています。これも現在ではフレームワークなど、隠蔽されているのが至極普通となっています。今の時代になり、「隠蔽されているから~」と言った理由でフレームワークを利用しないのは、かなり限定された領域ではないでしょうか。
限られた領域という表現に近いのですが、「適材適所」という言葉があるように何事も適した場面で利用することが重要です。
いろいろと話題が多いSQL関係においては、いくら最近のDBはハイブリッド型とはいえ、XMLを扱おうとすると、ご存じの方も多いでしょうがものすごく相性が悪いです。そのような場面ではSQLではなくXPathを利用することになるでしょう(まぁこの場合は非定形なXMLデータを定型的な2次元表で表そう、という設計思想に問題があるのだと思います)。
またKey/Valueストアなどを利用することになった場面では、RDBMSではなくなりますのでSQLによる取得、という方式自体が利用できなくなります。これらのケースでも、いろいろな方がすでに言われているとおり、SQLにこだわる必要はなく、ケースごとに適した方法を選択すれば良いのです。1つの技術に固執する必要は全くありません。
そしてもう1つ重要なのは「今回利用した方法が次回においても適しているとは限らない」点です。
技術の進歩により使えるようになるものというのは意外に多くあります。登場したての頃は、ハードウェアの性能不足のためにレスポンスが悪いものが、1年経過するとまったく気にならないくらいになることが多々あります。.Net Frameworkも出始めのころは起動時のレスポンスなどが一部で問題になりましたが、今ではほとんど気にすることが少なくなってきたと思います。
何も考えずに利用する分にはレスポンスに問題が発生するO/Rマッピング関係も、時代と共に解決される可能性はなきにしもあらずです。わたしとしては「大規模環境程O/Rマッピング」などという世界にそのうちなるのではないか、と妄想しています。
多種多様な技術が現時点では存在しますが、大きい観点で見れば適当な周期を持って似たようなものが繰り返されているのだと感じます。時代背景が異なるので別物に見えますが、基を構成している思想や方法等は意外にも通じるところが多かったりします。それを考えると、今使えないと思う技術が将来に渡り使えないのかどうかは誰にもわかりません。
そうなると「何を勉強すればいいのか?」という疑問にぶつかるでしょうが、これは「自分が気になった」「仕事で必要になった」などどのような理由でも構いませんが、やろうと思ったもの、で問題ないと思います。先程「適当な周期で繰り返す」と書いたように、思想的には似たものを別の味付けで仕立て上げた技術、というのはかなり多いのです。例え勉強し身に付けた技術を利用できる場面が訪れなかったとしても、覚えたことは必ずどこかで役立ちます。「知識や経験は活かし方が必ずある」のです。
今使える1つに固執するのは、技術者としてあまりにももったいなくはないでしょうか。仕事で使う技術とは別に技術者としてもう1つ、追いかけてみることは必ず自分の糧になるのだと思っています。追いかける技術というのは、何も実装や設計、果てはIT業界に今は関係がなくてもいいのです。そう考えると、世の中は数えきれない程の技術に満たされています。
身につけた技術をどう使うかは自分次第なのです。
コメント
「その技術」ではなくて「その技術が生まれるに至った経緯」とか「その技術が生まれるための基礎」とか「その技術に対する批判とその理由」とかまでに思いを馳せて習得できると、結構応用が利きやすいので、身につけた技術を生かせる事も多いのではないかと思うです。
sin
初めてコメントさせていただきます。
まさに、我が意を得た思いです。
がるさんのコメントと重なりますが、「なぜその技術を生み出したのか」という理解は大切ですね。
「アルファベットx文字の略称が何を略したものなのか、ちゃんと調べなさい」というところから後進に働きかける日々です。
Ahf
がるさん、sinさんコメントありがとうございます。
>結構応用が利きやすいので、身につけた技術を生かせる事も
>多いのではないかと思うです。
(がるさん)
>「アルファベットx文字の略称が何を略したものなのか、ちゃんと調べなさい」
>というところから後進に働きかける日々です。
(sinさん)
お二人の言われる通り、技術単体にフォーカスしてしまっていると応用が利かなくなりやすいですよね。逆にある時期にしっかりと調べ、習得していると後々になり別の名前の技術となったとしても応用できることが多いと思います。
世の中で先陣を切っているような方達は、このあたりも凄いですね。
一つにこだわらず多くの事を貪欲に学ぶ姿というのは尊敬できます。
しっぱ
こんにちは。しっぱと申します。
私もちょっと異端なSEとして生活していますが、Ahf様のおっしゃられている通り、適材適所。必要な時に勉強すればいいと思います。
様々なお客様先にお邪魔したりしておりましたが、生かせる知識もあれば生かせない知識もありました。
たとえそれが合っていようと間違っていようと、それを改善するための資金、マンパワーを考慮せざるを得ません。
色々なところで話題になっている「O/Rマッパー」についても、お客様の環境に合わせることの方が多く、さらにそこにクライアント独自の機能(セキュリティがらみが多いですが)を包含したラッパークラスを使うことが多かったと記憶しています。(今は社内SEなのでちょっと前の記憶ですが。。。)
そうなってくると「O/Rマッピング」とは何ぞや?
という部分を知っていれば仕事になります。
もっと言えば「O/Rマッピング」を知らなくてもラッパークラスのIF仕様さえ分かれば開発は可能です。
当然知っていた方が良いに決まっていますが、教育をどこでやるのか?というのも問題になってきます。
クライアント先常駐の場合、そうそう勉強会もできませんし、ネットも見られないという環境だって多々存在します。
そういった限定的な環境下でも開発をスムーズにするための「道具」がかならず用意されています。(そうじゃないと赤字になりかねません)
クライアントからすれば技術者スキルとして必要でも、ことビジネスとして考えれば「O/Rマッピングを1から教えます!」ですが、参画させてくださいとは言えません。。。。。
であれば取る手段は共通ツールを準備してプログラム言語(SQLも含め)の知識さえあれば即戦力という方が当然、プラスに働きます。
その中で、必要に応じて最小限の教育を施し、個々の成長を促す。
といった感じでしょうか?
ただし、O/Rマッパーから全部作れという仕事の場合、当然知識のあるものが勝者です。
気になった時が勉強し時。
興味を持った瞬間というのば一番集中して、効率よく知識が吸収できると思います。
誰かに無理やりやらせられた勉強は身にならないことが多いです。
「興味を持たせる教育」が管理者に求められるスキルになっていくのかもしれませんね。
ちなみに私は話とは関係ないですが、理系出身なのに物理が嫌いだったためか、今はなーんにも覚えてません。。。。。
数学は好きだったので覚えてるんですけどね。。。。
やっぱりモチベーションは大事です!
Ahf
しっぱさん遅くなりましたがコメントありがとうございます。
全く言われる通りだと思います。
私も一時期は出向していましたので、作業環境にてネットが不可という環境も承知してます。特に直前まではセールスエンジニア(!)でしたので、技術の細かい部分については殆どが活用できない、極端に言えば「どうでもいい」場所でした。
そこで大事だったのは自分が扱える技術云々よりも、それをどう利用するか、といった利用方法の面ででしたね。
>誰かに無理やりやらせられた勉強は身にならないことが多いです。
この一文が全てですね。やらされた勉強と、やろうと思った勉強とでは同じ時間を費やしたとしても身に付く量や質が全く異なります。
ちなみに私も理系出身でして、微分積分で数学の道をあきらめたクチですw
確率統計は好きな分野というのもあって、今でも覚えてます。
モチベーション、本当に大事ですよねぇ、と痛感しますね。