PythonとRuby:ワークシェイプの徹底比較!

Workshape.ioを作った大きな成果の1つとして、私たちは珍しいデータセットにアクセスできるようになりました。このデータは、他のやり方では得難い情報を示してくれます。ユーザに、自分の求める仕事を”作業に配分する時間”で表してもらうことで、私たちは一次データを集めて区分できるだけでなく、それを今までになかったようなやり方で提示することもできるのです。

alt
私たちの第2の検証では(最初の検証については「肩書きに関する問題」をご覧ください)、オープンソース界の原動力となっている主要なプログラミング言語のいくつかに注目すると面白いのではないかと考えました。具体的に言えば、2つの言語をどんな形で直接比較できるか確かめたかったのです。Python、Ruby、PHPなどの技術的・哲学的な違いについては誰もが知っていますが、そうした違いはその言語のユーザにどんな影響を与えるのでしょうか? どのプログラミング言語を選ぶかによって、時間の使い方は変わってくるのでしょうか?

PythonとRubyの比較:データセット

alt
今回の分析では、”希望する技術”の入力項目としてPythonかRubyを選んだユーザのワークシェイプについて調べました。上掲のベン図を見ると、私たちのプラットフォームでは、Pythonの方が開発者の挙げたスキルとして多かったことが分かります。両方を挙げた人ももちろんいましたが、各グループの大多数の人は、仕事に使いたい技術としてどちらか一方を挙げていました。

この2グループを、申告された職務レベルの分布、二次的なスキルの分布、そしてもちろん、ソフトウェアエンジニアリングの一般的な側面に対する時間分布について比較したところ、以下のようなことが分かりました。

PythonとRubyの比較:職務レベルに関する分布

alt
注釈
Most common level:最も多かったレベル
Distribution:分布
Junior:ジュニア
Mid-weight:ミドル
Senior:シニア
Lead:リーダー

Workshape.ioでは、自分が次に就きたい職務のレベルについて、ユーザから情報を集めています。私たちは、上図に示した4つの職務レベルを定義しています。

私たちの定義では、”ミドル”レベルのエンジニアとは、チームメンバーとして適任と考えられ、広範なサポートがなくても良い仕事をしてくれると期待されているエンジニアです。これは、私たちのプラットフォームでPython支持者が申告した、次に就きたい職務レベルの中央値でした。

“シニア”レベルのエンジニアとは、システムのパフォーマンスに影響を及ぼす決定に関して信頼できる熟練者であり、”ジュニア”レベルのスタッフを指導する責任を負うエンジニアです。”シニア”は、中央値のRuby支持者が次に就きたい役職に必要であると考えるレベルです。

この分布から確固たる結論は導き出せません。ただ、私たちのプラットフォームではユーザの望む未来(この場合の職務レベルとは次の役職として望むレベル)について尋ねているということだけは強調しておきます。そのため、おそらく、Ruby支持者の方が、Python支持者に比べ、キャリアポジショニング、チーム内での相対的な地位、次に就く役職ではさらに強い自主性が求められるかどうかということについて考える傾向が若干顕著であると推測できます。

PythonとRubyの比較:最もよく利用されている二次的スキル

alt
今回の検証においてエンジニアが挙げたPythonとRuby以外の二次的スキルを分析したところ、Java Scriptが普及していることが確認できました。Python支持者とRuby支持者のどちらもが二次的技術として圧倒的に多く挙げているのがJavaScriptです。ある言語よりも他の言語を選択する場合は多いかもしれませんが、両者で多数のスキルが共通しているので、使える補助的スキルは、ある程度同じであるということが分かります。

PythonとRubyの比較:二次的スキルに関する分布

alt
私たちは、若干異なるサンプルサイズに対応するように2つのデータセットを標準化してから、どの二次的スキルがよく利用されているかを比較しました。そのようにすることで、より多くの傾向をデータから突き止められるのではないかと考えたからです。上記のインフォグラフィックから分かるように、データは極めて明白な特徴を示しています。

Python支持者はバックエンドの技術や下流工程の技術に親しんでおり、一方、Ruby支持者はWebやモバイルに馴染みがあるようです。また、Python支持者の方が機械学習やデータサイエンスに関心を示す傾向が強く、Ruby支持者の方がJavaScriptフレームワークを取り扱うことが多いようです。

図には示されていませんが、Ruby支持者が最もよく利用するプロビジョニングツールはChefであるのに対し、Python支持者がよく利用するのはAnsibleです。

PythonとRubyの比較:平均的なワークシェイプ

alt
注釈
Analysis:分析
Architecture:アーキテクチャ
Operation:オペレーション
Back-end:バックエンド
Front-end:フロントエンド
UI/UX
Testing:テスト
Code review:コードレビュー
Documentaion:ドキュメンテーション
Data science:データサイエンス

alt
注釈
Analysis:分析
Architecture:アーキテクチャ
Operation:オペレーション
Back-end:バックエンド
Front-end:フロントエンド
UI/UX
Testing:テスト
Code review:コードレビュー
Documentaion:ドキュメンテーション
Data science:データサイエンス

最後に、それぞれのグループの開発者の平均的なワークシェイプを見てみましょう。上記のインフォグラフィックから、2つの言語は技術的な違いがあるにもかかわらず全体的な時間分布はほぼ同じであるということがわかります。どちらの統計結果も、ほぼ突出した部分がないワークシェイプとなっており、エンジニアリング作業が技術スタック全体にわたるものであることを示しています。これは、それぞれの言語の利用者比率と利用範囲を考慮すると、それほど意外なことではありません。

両者の相違は、スキル分布セクションにおける私たちの調査結果を強調するものでした。

  • どちらのセットでも、平均的な開発者が多くの時間を割きたいと望む仕事は、バックエンドエンジニアリングです。
  • アーキテクチャ、オペレーション、コードレビューおよびドキュメンテーションについては、両者はとても似ています。
  • 約7%の差で、Python支持者の方がデータサイエンスに傾倒しています。
  • Python支持者は、分析にやや多く時間を費やしたいと考えているようです。
  • Ruby支持者は、フロントエンドをやや重視し、TDDとBDDをもっと重視していると思われます。

結論

この検証では、PythonとRubyの開発者について興味深い見識が見いだされ、さらに強調されました。

今回のデータセットではPythonが主流言語であり、Rubyの開発者はPythonの約2/3のサンプルサイズです。2つのスキルは明確に分極化しており、Python支持者のうち、Rubyを補助的スキルとする人は、わずか15%(Ruby支持者の20%)です。

Python開発者の職務レベルの中央値はミドルであるのに対し、Ruby開発者ではシニアです。このデータを主観的・非定量的な尺度で考えてみれば、この共通の分類結果に多くの理由付けができるかもしれません。皆さんなりの結論を出してみてください。

スキルと時間割り当てのどちらのセクションを見ても、PythonはRubyよりもデータサイエンスへの結びつきが強いことが強く示唆されています。Rubyの方がWeb技術寄りであり、フロントエンド技術とiOSに強い親和性をもっています。

この記事をお楽しみいただけたでしょうか。楽しい編集作業でした。今後の調査対象についてご提案のある方は、この下のコメント欄や、直接Eメールで、またはTwitterで、ご遠慮なくお知らせください。

ご自分のワークシェイプをご覧になりたい方は、ぜひ私たちのホームページでサインアップをお願いします。ご訪問をお待ちしております。

お読みいただき、ありがとうございました。