経理マンのプログラミングスクール体験記No.1・・TechAcademy

はじめに

私がTechAcademyを受講したきっかけは、会計システムのWebサービスを提供しようと考えたことでした。
Webサービスを提供した時の体験談は、こちらの記事に別にまとめましたので、ご興味があればご覧いただけますと幸いです。

私は別にプログラミング自体を学びたいと思っていた訳ではありませんでした。
プログラミングを学ぼうとした理由はWebサービスを立ち上げることだったため、スクールに参加してもWebサービスを立ち上げるレベルに到達できなければ、プログラミングスクールにお金を出して参加する理由はありませんでした。

当然、システムを外注するということも頭の中に入れていたのですが、何社かプログラミングスクールのサイトを調べてみると、TechAcademyだけがオリジナルのサービスを立ち上げるところまで面倒を見てくれるといった内容になっていました。

事前に講座の説明会も開かれており、本当に私が考えているWebサービスを自分で作ることができるようになるのか、エンジニアさんに見積りを取ってもらえるというのでお願いしてみました。
(この見積りというのが超適当なものだったということが、TechAcademyの受講期間が終わりに近づいてから気付いたというのは困りものでしたが・・)
しかし、用意された教科書に書かれていることを教えてもらうだけではなく、作りたいサービスを作れるまでサポートしてもらえることを前提に、プログラミングを学べそうだったのでTechAcademyに参加することにしました。

受講料は、当初は8週間のコースを受講していたのですが、4週間の延長をしたので224,640円でした。

カリキュラムを始めて読んだ時・・

TechAcademyのカリキュラムは、授業を受けるためのパソコンの設定から始まって、HTML/CSS、Bootstrap、Gitなどの基本的なものを学習し、三つのプログラミング課題の作成を終えてからオリジナルサービスを完成させて終わりというものになっておりました。

TechAcademyのカリキュラムの作りは、基本的にエンジニアチームの一員として会社で働くことができるようになることを前提として考えられていると思います。
各章には最後にテスト問題が記載されており、このテストを全てクリアすれば卒業といった話になります。

このテスト問題が解けなければ、確か15時~23時くらいまでは「チャットサポート」というものを使って質問をしたり、週2回ある「メンタリング」の時に質問しながらテスト問題を解いていきます。
しかし、いいか悪いかは判断が分かれると思いますが、TechAcademyのカリキュラムを初めから終わりまで読んでも、このテスト問題が解けないものも多々ありました。

義務教育で問題が解けない時に先生に質問すると、普通は教科書の該当部分を使って説明してくれると思います。
しかし、TechAcademyの「チャットサポート」などで説明すると、Qiitaなどの記事が送られてきて、ここを読んでくださいといったコメントが返ってくるのです。
つまり、カリキュラムをすべて読んでもできないテスト問題を、インターネットで調べながら解いてくださいといった内容になっている訳です。

これを「何考えているんだ!」とか「親切ではない」と思う人もいるかもしれません。
当然TechAcademyのカリキュラムも、今では受講者の意見を反映してより良くなっている可能性もあります。
しかし、RubyやPythonなど比較的新しい言語を使ってプログラミングをする場合、本などで勉強しようとしても情報が古くなっていて使えないといった場合も多いと思います。
そんな時にインターネットで調べながら解決方法を調べられないと、問題を解決できずに、そこで開発がストップしてしまう事態になると思います。

TechAcademyがどこまで考えているかは私の知るところではありません。
TechAcademyの受講者は結構いるようで、TechAcademyに関する体験談はネットにいろいろ転がっています。
それらを読んでいると、この適度な「不親切さ」を肯定的に捉えている元受講者も多いように感じます。

「メンタリング」はどんな感じだったか

TechAcademyでは「メンタリング」という画面共有をしながら、担当の講師の方にマンツーマンで相談することができる時間を持てます。
「メンタリング」をしてて感じたのは、メンタリングの時間に何を聞くか事前にきちんと決めておかないと、何だか気の抜けた時間になってしまうということです。

担当の講師の方は「何でも聞いてください」といった感じで話を聞いてくれるのですが、その時こちらから質問することが無いと微妙な雰囲気になってしまいます。
何も質問が無いということはあまりないのですが、この質問に対してこれくらい話してもらって、次にこの話でどれくらい・・という感じで、「メンタリング」の時間配分をこちらでコントロールする気持ちで臨まないと満足度が低い時間になってしまいます。

また、たとえこちらで事前に時間配分まで想定していても、講師の方がその通りに話していただけるとは限りません。
簡単に説明してもらうだけで後は自分でできそうなところでも、コードの修正までやっていただけた結果、全ての質問ができずに時間が終わってしまうということもありました。

私を担当していただいた講師の方は元営業マンということで、メンタリング時間中に解決できそうにないことは後でチャットで回答していただくなど、生徒側の事情を考えて対応していただいておりました。
そのため、満足度が低いメンタリングの時間はそれほどありませんでした。

しかし、Qiitaなどの記事をたくさん読んでいると分かるのですが、エンジニアの方の中には、相手が理解できるかどうか考えずに、自分の話したいこと、書きたいことを伝えて満足する傾向が見られます。
TechAcademyの講師の方も色々な方がいまして、この方が私の担当の講師になっていたらと思うとぞっとするといった方とチャットをしたことが何度かあります。

TechAcademyの講師の方達は、おそらく業務委託の形で仕事を請け負っている方達で、TechAcademyの社員の方ではないと思います。
社員であれば研修を行うなどして、ある程度サービスを均一化できると思うのですが、外部委託だとそこまで期待することはできないといったところだと思います。

「チャットサポート」はどんな感じだったか

「チャットサポート」はSlackというサービスを使って、質問を投げかけると答えが返ってくるサービスです。
TechAcademyを始める前は、チャットなので質問を投げた後に放置されるようなことがあるのではないかと思っておりましたが、回答に時間がかかる時はその旨すぐ伝えていただけるので、あまりこのことでストレスを受けることはありませんでした。

カリキュラムにある三つのプログラミング課題の作成についての質問であれば、誰に聞いてもすぐ回答がくると思います。
しかし、オリジナルサービスの作成の段階になってくると、大抵は満足できる回答をいただけるのですが、23時近辺まで何度か質問を繰り返しても結局きちんとした回答をもらえないこともありました。

カリキュラムの課題であれば、エンジニアの方も来る質問をある程度想定できるところもあると思いますが、各々の生徒が好きに作っているプログラミングについての質問を回答するのはエンジニアとしての力量が必要だと思います。
このカリキュラム外の質問まで受け付けてくれるのがTechAcademyのありがたいところなのですが、経験が少なそうな方に質問を投げてしまうと、期待した回答がなかなか得られずちょっと困ってしまったことがありました。

また、コミュニケーション能力が低いと思われるエンジニアの方が担当している時間に質問を投げかけると余計なストレスを受けることがままありました。
「チャットサポート」内の不文律で、質問について最後まで答えずに、ある程度考えさせる余地を残した返答でいいといった雰囲気がありました。
このことをいいことに、最後まで質問を読んでいるのかを疑ってしまうような返答をしてくる担当者もいました。
そっけない返答が返ってくると、こちらは何か返答に含みがあるのかと考えてしまうのですが、結局分からず再度質問すると「そういうことだったんですか」といった感じで、やっと私の知りたいことを教えてもらえるといったことがままありました。

オリジナルサービスは本当にできるのか

オリジナルのサービスを作る段階になって、メンタリングの時に、私の作りたいシステムがどういうものか説明したのですが、説明をすればするほど担当の講師の方の表情が険しくなっていきました。
後になってちょろっと聞いたことなのですが、大抵の生徒さんは「Twitterクローン」という三つのプログラミング課題の一つを適当に修正したものを作って、オリジナルサービスの完成とするそうです。

近頃あるプログラミングスクールが、誰でもスクールを卒業すればエンジニアとして転職できるようになるという誇大広告を打っていると主張するYouTube動画をよく見ます。
プログラミングスクールの卒業を転職の手段と捉える方もいるとは思いますが、そういう方はTechAcademyではなく他のプログラミングスクールを選んだ方がいいのでは、と思います。

私はガチでWebサービスを立ち上げようと思っていたので、Webサービスの立ち上げに必要な答えは全て答えてもらわないと困ると思っておりました。
結論から申し上げますと、TechAcademyで私のWebサービスの立ち上げに必要な答えを7割~8割は教えてもらったと思っています。

TechAcademyのWebアプリケーションコースを受講すれば、簡単なものであれば自分で作ったシステムをWebに公開して動かすことができるようになると思います。
しかし、これにも限度があるようで、私は12週間TechAcademyを受講した後、一年くらい期間をあけて、もう一度「チャットサポート」と「メンタリング」をお願いしました。
当然、この空いた一年の間に、私のプログラムも大きくなり、私のプログラミングの技術も進化していたと思います。

以前のように「チャットサポート」で質問をしたのですが、一年前に受講した時には見なかった回答が返ってくるのです。
それが「サポートの対象外」という言葉です。

私はTechAcademyの「チャットサポート」や「メンタリング」を受けていれば、Webサービスの立ち上げに必要な答えは全て教えてもらえると思っておりました。
しかし、「非同期処理」が必要になった時から、この「サポートの対象外」という返答が来るようになったのです。
おそらく、この「サポートの対象外」は質問が難しすぎて答えられないといった話だとは思うのですが、どこまでが「サポート内」で、どこを超えると「サポートの対象外」になるかは、どこにも記載がなかったと思います。

ここで、どんな質問が「サポートの対象外」になってしまったのか、具体的にお話しするために「非同期処理」について書いてみたいと思います。

「サポートの対象外」となった非同期処理とは

通常の処理だと以下のように処理が行われます。

パソコンのブラウザでURLを打ち込むと、Webサイトがあるサーバーを探して、サーバーにやってもらう指示がサーバーに送られます。
これが、住所や名前を登録するような簡単な処理であれば、サーバーでデータを登録し、登録したことをユーザーにお知らせするための画面をパソコンに表示するようなことをするには、それほど時間がかかりません。

しかし、私の作った会計システムでは、大量のデータをパソコンで取込んで、そのデータをサーバーに送ってデータを処理させるのに時間が結構かかります。
サーバーでパソコンに返すデータを作り終えないと、パソコンに何もデータを返すことができず、結果パソコンの画面が真っ白くなって、画面がフリーズした状態になります。
この画面が真っ白くなって、画面が固まってしまうのを防ぐために使うのが「非同期処理」です。

非同期処理では通常の処理とは違って、サーバーで処理が終わる前に、パソコンに表示させるとりあえずの画面のデータをパソコンに送ってしまい、画面が真っ白くなるのを防ぎます。
「ただ今データを処理しておりますので、少々お待ちください」みたいな画面をとりあえず表示させる訳です。

とりあえずの画面をパソコンに表示させておいて、その間にサーバーでは処理を継続させておきます。
この間、パソコンから見えないところで処理が終わっているかどうかチェックする指示をサーバーに定期的に送ります。
チェックした時に処理が終わってなければ何もせず、チェックして処理が終わっていれば、サーバーから処理が終わった時の画面のデータをパソコンに送り、パソコンにその画面のデータを表示させる訳です。

私としては、この「非同期処理」はそれほど珍しい技術でもなんでもないし、これができないと私のWebサービスを利用するユーザーの方は、データ処理をするたびにパソコンの画面が真っ白くなるといった現象を体験することになります。
この「非同期処理」はかなり完成させるのが難しかったのですが、「非同期処理」の質問を「サポートの対象外」という言葉で門前払いにされても困るなと思った次第です。

まとめ

いろいろTechAcademyに関する文句を並べてしまいましたが、正直な感想を書くとTechAcademyには感謝の言葉しか浮かびません。
TechAcademyのWebアプリケーションコースを受講していなければ、私の作ったWebサービスが日の目を見ることはおそらく無かったと思います。
また、Webサービスを作るには、企業で何年か丁稚奉公的にシステム開発を学ぶ以外には、完全独学という効率の悪い方法以外しか残らない状況だと思います。

しかし、文系ですけど何か問題でも・・経理マンのシステム開発体験談の記事でも書きましたが、結局プログラミングの習得には、こんなシステムをどうしても作りたいという具体的な欲がない限り、うまくいくものではないと思います。
このことはTechAcademyに限らずどのプログラミングスクールに参加しても同じで、転職の手段としてプログラミングスクールを受講しても大したシステムを作れるようになるとは思いません。

コメント