弊プロ研は退部者が絶えない
この記事は、Kosen13s Advent Calendar 2018 12日目の記事です。
はじめに
なぜ弊部は毎年のように退部者を出しているのか。他の部活と比べてみても、入る部員数が多いのにもかかわらずやめている人数の方が多い状況である。入る部員が初めは多いということは、それだけプログラミングをしたいと思う新入生が多いからだと思う。にもかかわらずなぜ退部者が後を絶たないのか。それを今から考察していく。
※これは個人的な考察であって所属する団体の意見とは別とする
理想のプログラミングとの格差
新入生をもう何年間も見てきた経験から、やめていく人々が口々に言う単語。それはむずかしいである。
なぜプログラミングが難しいと思われているのか。何が難しいのか
下級生が一番はじめに直面する問題は何処なのだろう。
環境構築の難易度
プログラミングを始めるにあたって必ず通る場所といっても過言ではない環境構築。ただ単にコンソールを動かすようなプログラムを書くのであればインストーラで一発!みたいに行けるが、AndroidやiOSの環境構築ははっきりいって超泥沼。正直1年が太刀打ち出来るものじゃない。パッケージの依存関係の解消、バージョンの違いでコンパイルさせてくれない等。でもこれは英語のエラー出力をコピペ貼り付けするスキルを身につけるだけで解決できたりする。
ここで苦手意識がついちゃってやめていく人が1割くらい。
混在する各種エディタ
次に多いのはエディタの量の多さである。プログラミングの効率とエディタが相関関係にあることは上級生はわかっているとは思うが、一年生は正直わからんと思う(過去にメモ帳で開発してたT田くんのように)。だからこのあたりは1つわかりやすいエディタを部内で決めておく必要がある気がする。
静的な言語のプログラミングの工程としてコーディング、コンパイル、実行があると思うがこれらを全て一つの画面でできることが好ましいと思われる。SublimeやAtomは拡張性が非常に高いが、初学者には向いてないのでコンソールやシンタックスハイライトをインストール後にすぐ使えるVSCodeをわりと推していきたい(最近俺も乗り換えた)。
パソコンを初めて触るって子もいたりして、これでも1割くらいやめる。
なにがわからないのかが分からない
これが一番深刻な問題。正直ここを解決できずに部員が去っていく例が一番多いと思われる。プログラミングを始めるにあたって明確なルートを決めてやらない限り、おそらくこの壁を超えられない人間が少なからず出てくると思う。
しかし、最近は文系大学生でもエンジニアになれる時代でそこらへんに資料はゴマンとおいてある。なのでその資料を活用する他ないと自分は考えている。例をあげるならば
- Progate
- ドットインストール
などなど、楽しく学べる学習環境は多くある。
新入生にはC++を勉強させるといった悪習が弊部にはある。プログラミングなんて、正直一番はじめが一番重要で、一番楽しい時期なのに意味もわからんC++とかいうビジュアライズも何もない(あるけど)わりかし低レイヤーな言語触らされているのが一番悪いと考えている。
最初からC++やっても楽しくないって声をたくさん後輩から聞いていて、これでやめていく人が本当に4割くらいいる。
授業でやるからわからないと今後困るみたいなことを言う人もいるが、実際プログラミング言語なんていくつか習得していれば根本は変わらないと思っているし、そこまで国はならないはず。HaskellとかDとかそういう特殊な言語をやっていくのは違うけど、javascriptだったりPythonだったりJavaだったり、言語は腐るほどある。
新入生には簡単にビジュアライズができるjavascriptとか、Javaとか、そういったものを教えつつ、JOIやPCKに参加したいって部員に対してC++を教えていく方針がいいと私は思う。
なぜこんな状態になっているのか
じゃあC++とかやらないでもっと楽しい言語とかフレームワークとか触らせればいいやん!って思いますよね。無理なんです。Ex.に書いたので読んで...
あと実は弊部には新入生を教育するためのマニュアル的なものが一切ない。私が入部した当初は先輩が2人, 同級生1人といった部員数だった。さらに先輩はほぼ部活には来ていなかったので、ちゃんと部活動をしていたのは1年だった自分ともう一人だけだった。なので私達は先輩に教えられたことは一度もなく、独学で技術を磨いてきた。その後、競技部門で準優勝、特別賞、優勝などをするうちに、部員数がいつのまにか20弱になっていた。
私たちの一番の失敗は後輩のための学習マニュアルを一切作っていなかったことだと思う。だから絶対部内で学習到達目標とか、どんな風に開発していくのがベストとかちゃんと保存しといたほうがいい、本当に。
まとめ
色々自分の思うところを書きなぐりましたが、結局は
- 開発環境の整備
- エラーの解決方法
- やってて楽しいか、目に見えるか
- モチベーションを保てるか
が一番問題になると思います。ここを解決できれば途中でさっていく悲しい後輩を少しでも減らせるはず。あとは後輩のためにマニュアルを作っていないのであれば、暇があるときに作ってあげること。どんなに強豪校になったとしてもメインの人が卒業したらそのまま弱くなっていくなんて辛いだけ....絶対に知見は共有しよう。
悲しい新入生を出さないためにも、上級生やつらい思いをした今の下級生がいい環境を作っていきましょう。
Ex. 学習内容を強要してくる環境
プログラミングは手段であって、他人に強要されるものではない。この言語やれ、これ実装しろと命令されるのはそれこそ企業に入ってからで十分である。
好きだったはずの、やりたかったはずの、楽しかったはずのプログラミングを「あれやれ、これやれ」と強要された時点でその人のモチベーションは地に落ちる。それが筋が通った、ちゃんと技術選定をしたり実例を出して納得をさせてからなら違うかもしれない。だが、部内で権力を持っている人間が「この言語はダメ」、「これはいいように思えないからこっちをやれ」と強要をすると、そこから部活動は崩壊していく。