まとめ
「スプラトゥーンでS+とるぞ」って感覚で「paizaでSランクとるぞ」でpaizaやってたらすぐとれたって話。paizaのスキルチェックとはってなったけど、それって業務的なプログラムと関係なくねって思ったっていう話。
※paizaの批判記事ではありません。スキルチェックを楽しくやらせていただきました。ありがとうございました!!
paizaとは
paizaとはググると以下のような感じ。
paizaはウェブサービスで、できることは以下の通り(たぶん)
- プログラムの勉強ができる
- 転職活動ができる
- スキルチェックができる←今回は話す内容はコレ
スキルチェックはお題が出されてプログラムを書く感じ。
プログラムの採点はプログラム完成までの時間と、テストケースを何個通ったかで採点される。(100点満点)
お題には難易度があって、難しい問題を解いたりとかするとランクが上がる。ランクはDからSまで。
以下で練習問題ができるので、気になった人はどうぞ。
paizaプログラミングスキルチェック(練習問題)
Sランクまでの感想
一応以下のような感じ、Sランクまでいけた。スーパープログラマとか書かれてるけど、言い過ぎだと思う。
おそらくpaizaの年収は年齢とかも関係していると思われる。(不明)(多く問題を解くと上がるという噂を聞いた)(そもそも参考値)
やった問題は以下の通り。下の問題が初めにやった問題で、上の問題が後にやった問題。
全部の問題で実際にプログラムを書いている時間は合計2時間ぐらい。Sの問題は1つに30分以上かかっている。
凡例 (ランク)(問題番号):(問題タイトル)
- S010:ひとりすごろく
- S015:ABC文字列
- C055:ログのフィルター
- A009:ビームの反射
- D029:サイコロの裏面
- D055:ワインのキャッチコピー
- B012:チェックディジット
- C016:Leet文字列
- C010:安息の地を求めて
- D007:N倍の文字列
それぞれのランク帯の話
以下が公式の見解
以下が個人的な見解
ランク | 個人的な感想 | 目安のコード量(Python) | 目安の完成までの時間 | スキルレベル |
---|---|---|---|---|
D | if文とか知ってれば解ける。 | 2~5行 | 1~5分 | プログラミング習い始め |
C | if文とか算術演算の仕方を知っていれば解ける。 | 10~20行 | 5~10分 | プログラミング初心者 |
B | ドットインストールの入門レベルを知っていれば解ける。 | 20~40行 | 10~40分 | プログラミング初心者 |
A | ちょいめんどい。配列をいい感じに使えると楽に解けたりする。 | 40~80行 | 30分~60分 | プログラミング初心者に毛が生えた程度 |
S | めんどい。めんどい。 | 60~120行 | 30分~90分 | プログラミング初心者に毛が生えた程度 |
Sランクの問題はまぁめんどい。
でも、ある程度問題自体を理解できればわりと解ける。
Sランクの上位2%っていうのはなんともコメントできない。おそらく面倒くてみんな途中でやめてると推測できる。
競プロとかやったことないけど、たぶんpaizaは競プロの簡単版みたいな話だと思う。
優秀なプログラマって?
ここからが本題。 paizaではSランクの人は「非常に高いスキル持っている」ことになっている。それってどうよ
そもそもpaizaのスキルチェックの問題が解けたからといって業務で役に立つかといわれると、NOだと思う。
スキルチェックでの問題が業務で行うことはほぼまずないと考えられる。(アルゴリズム屋以外)
そんなことよりも、できてたほうがいいことってたくさんあるはず。でもそれってなに
スキルチェックの問題が解けるレベルがあれば他のスキルレベルもある程度高いという意見は少しだけわかる←結論?
優秀なプログラマの条件ってなんだろう
- 読みやすいコードを書く
- バグをうまないコードが書ける
- コーディングがはやい
- ベストプラクティスをよく知っている
- コードだけじゃなくてチーム開発とかも得意
- コードだけじゃなく開発手法とかにも精通している
- デザインパターンとか詳しい
- OSSに貢献している
- GitHubが大草原
- なんか質問したらいい答えが返ってくる
- 常に新しいなにかを探している
- 言語仕様を把握している
- 勉強会とかに行っている
- 有名
- お金を持っている
- コーディングだけじゃなく運営もできる
- 経営もできる
- 人格者
- 全知
- 創設者なのにチョットデキルとか言っている
- 優しい終身の独裁者
いろいろ挙げてみたけどあんまり納得いかない。煩雑すぎる。
優秀なプログラマってどうやって測るの
バグになりそうなコードを見つける機械学習を用いたシステムがあるらしい。
内部の実装的にはGitHub上にあるプロジェクトを教師として、変わっていきやすいコードを見つけるらしい。
そのシステムの応用として、コードに点数をつけることができたら面白そう。
以上の話はコードの測り方だが、プログラマのスキルの測り方ではない。
様々な要素が相まってその人(プログラマ)になるので、正しく人を見極めるスキルとは常人には到達できないのでは。
最後に
いい感じにマサカリが飛んできそうな記事が書けました。
人事関係を行っている方、プログラマの方、教師の方、その他誰でも、ぜひコメントを下さい。よろしくお願いいたします。