電脳土方とエンジニアのボーダーラインを決めるもの

読みまして。

「Railsはプログラミングなんかじゃないよ。Railsだけ勉強していても、本当の意味での開発はできるようにならない」ってことです。

http://sorehito.xyz/rails_is_not_programming/

んで反論的なのも読みまして。えふしんさんのだけど。

それこそRailsみたいなのがなかったらWebサーバ構築 1000万円!などと人件費がかかっちゃって、それだけで息が切れる。そして到達点が下がる。職人さんが得意なのはシステム構築であって、素敵なサービスを作るところではないから。「誰でもできそう」なところを積み上げていくことで、それこそ高度な専門職じゃなくても、もう少し違うスキルを持った人を巻き込むことができる。

もうちょっとビジネス的な視点で言うと、それらを実現するためのコストを下げることが超重要。

Railsを使うことはプログラミングではないのか?という記事について思ったこと | F's Garage

でな。

原理わかんないけどなんか出来ちゃうというものが存在する理由ってのは色々あるんだよね。

  • 仕掛けは出来合いでいい。重要なのは提供するものだ
  • 大勢を動員しないと到底できない。動員できる人間の質は保証できない
  • とにかく早く。プロトタイプ的なものでも良いから

とかね。この視点ってのはほぼほぼビジネス的な視点だよね。

んで。

エンジニアとしてはさ、Railsを使うってことはもう完全に「実装困難な課題を克服しながら新しいテクノロジーを用いたシステムを作る」という仕事ではないって話なのはわかってて、じゃあなんで使うかってそりゃそこに目的があるからだよねって話にしかならない。僕らは職業エンジニアだから、スキルは大前提で目指すは高収益なわけ。Rails使えば問題が解決するんであれば使うし解決しないんであれば使わない。Railsだろうがなんだろうがそれはツールでしかないし、ツールというのは目的に合ったものを選択して使えばいいわけ。
じゃあRailsを選択するのはなんでってのは前に出したとおり。場合によってはフレームワークの設計の一つを学ぶという部分もあるっちゃああるんだろうけど、WebのイロハがわからないとかO/Rマッパーとはなんぞやって人がRailsから何かを学べる前提に立てているかというとそうでもない。教育目的がないのであればこういうお約束でこういう風にコードかけばこういう風に動いてくれるから後よろしくって作業者に振るのが目的だったり、わかっている少数精鋭が単に色んな事を省略したくて別に自分たち自身でサーバーサイドの新しい仕掛けを考えることは今回の仕事はないよねって時に使ったりするわけです。

なので、本当の意味でウェブが出来るエンジニアを目指す人(特に初学者)が学習目的でRailsを使うってのはそもそもRailsの目指すところとは全く噛み合ってないし、かと言ってRails使ったらエンジニアとしての成長がないねなんてことは全然なくてちょっと勘のいい人だったらRailsでものを作りながら仕掛けがなんとかく見えてきて多少の補足に近い勉強をすることでああウェブってこうやって動いているんだな、Railsって何のために使うんだな。もし1から作ったらこういうのがいるんだろうな、ということがわかってくる程度には良く出来ているんじゃないかなって思うんですよ業務で使ったことはないけど。

最初に上げたエントリで「物づくり感がない」と言われているけど、じゃあ物づくりって何よってのが結構重要な問題で、ITって結局作ってるのってサービス(を実現するためのシステム)か(システムを実現するための)仕掛けかのどちらかでしかないんだよね。Railsを使って物づくりしている感がない人は手段と目的が転倒していることがままあるんではなかろうか。ぶっちゃけWebシステムを作る仕事の9割(は言いすぎかもしれないけどサーバーサイド側は特に)は3件となりでも作ってそうなありきたりの仕組みを再生産して「顧客のサービスを実現する」ことをやっているにすぎないよ。そしてそういう状況はいい意味でも悪い意味でもこの世界が電脳土方の世界にまで到達していることを示しているわけ。

じゃあエンジニアとは何かって話になると結局のところ、Railsに限らず、「この部分だけこうやって作ればなんとかなります」じゃなくて、そもそもの全体的な仕組み仕掛けの部分をきちんと把握して、サイジングとかパフォーマンスとかの非機能周りも含めたシステム全体としてどうあるべきかを考えて適正コスト適正スケジュールを考えることが出来る人なんじゃないかと思ったりはしますね。それがRails使っているからできないなんてことは全然なくて、むしろRailsだろうがスクラッチのServletだろうがわからん人(特に勉強しない人)は一生到達しないかもしれない地点だし、そんなん知らなくていいよ俺は顧客と業務要件を切った貼ったすることで生きていくよって人もいれば面倒くさいから一生電脳土方でいいですって人もいれば気がついたらなんとかエバンジェリストって肩書が付いているって人もいるわけで、いずれにしても共通しているのは「現場で何を使っているかなんてことから学べることだけでエンジニアとして成長できると思ったら大間違い」という話です。

みんな勉強しようぜ。