どうもです。
ギリギリです。
最近寒いです。
朝寒くて起きちゃう。
ブリスベンに戻りたくなる笑
さて、今日はいつもと違ってQ&Aの投稿です。
少し前に、このブログのを読んだ人からQUTに関する質問をされました。
かなりいい質問だと思ったので、今日はその質問を答えとともに公開します。
Index
ブログ読者からの質問
受け取った質問はこちら。
はじめまして。
来年からQUTのMaster of IT(コースワークのComputer Science)への留学を考え色々調べていたところ、ギリギリさんのブログに行き当たり、記事を拝見しました。とても為になる情報ばかりで、いくつか疑問も解決できて、よかったです!私は将来的にはソフトウェアやアプリ開発のスキルも身につけ、調査や研究で使えるアプリを作りたいと思っています。ウェブサイト制作を趣味でおこなっておりHTMLやCSSの知識はあるのですが、JavaScriptやPHPなどはコードを見てなんとなくここはこういう意味かな?とコピペで動かせる程度です。
A) ギリギリさんは留学前からIT系で働かれていたということですが、そんなギリギリさんから見て、
- QUTの履修科目は、充実したものでしたか?逆に、物足りない部分はありましたか?
- スマホアプリについての授業はありますか?
- 座学と実践(課題作成)の割合はどれくらいですか?
- 現地のIT企業で働いてる人で、学部がIT系ではなかったりキャリアチェンジした人はいますか?
B) また、一般的な事柄として、
- 履修人数はどれくらいいますか(定員がないようなのですが、寿司詰め状態とかではないですよね・・・)?
- 留学生がほとんどのようですが、地元の人があまりいないのはなぜでしょうか?
- TAFEでDiploma取得は検討されませんでしたか?永住権のポイントを考えなければ、お金と時間の節約にもなるし、地元のひとはTAFEに通って就職という話も聞きますが・・・。学費があまりに違うのでTAFEと大学で少し迷っています。
長々と申し訳ないのですが、もし気が向いて、お時間があれば返信頂けると嬉しいです。
具体的な質問ですね。
今日は質問A1とA2に答えます。
日本での経歴
質問に答える前に、オーストラリアに来る前のオレの経歴に少し触れておきます。
- 日本の4年制大学を卒業
- 学科は数学、機械工学がメイン。大学はかなりレベル低い
- 卒業後IT企業に就職。システムエンジニアとして働き始める。約7年ほど日本で仕事
- 主にWeb系システム開発のプロジェクトに参加。Java, C#, PHP, JavaScript, VBScript, HTML, CSSやRDBMS(PostgreSQL, MySQL), SQLなどの経験あり
ソフトウェア開発はおろか、プログラミングすら授業で学んだことはありませんでした。
そのため、これらを自力で学びながら何とか仕事をこなしていました。
しかし、時間の都合などもあって十分に学ぶことができず、勘や経験のみを頼りにしたコーディングがしばしばありました。
なぜオーストラリアの大学に入学したのか
オレがオーストラリアの大学(QUT)に入学した理由の1つは、ソフトウェア開発に必要な理論や方法論などをきちんと理解し、それを実際の開発に活かしたい、自分の技術や経験の裏付けのようなものがほしかったからです。
また、勘や経験のみで今後通用するほどオーストラリアでの就職、ましてや移住は甘くないと思ったし、そもそも一人の技術者としてそのような状態では失格だと思ったのも理由です。
QUTでは、自分の学びたいことをそれなりに学べたと思います。
では質問に答えます。
A-1. QUTの履修科目は、充実したものでしたか?逆に、物足りない部分はありましたか?
ITの知識を持っていない人だと、その講義内容が正確なものか役に立つものか、各分野を満遍なくカバーできているか、難易度はどうか、現地で就職できるほどの基礎技術が得られるのか、なかなか判断しづらいこともあるので。コア以外の選択科目もどれくらい取れるものでしょうか。
充実していた授業もあったし、取らなければよかった授業もありました。
充実した授業や学習方法
良かった授業は、自分にとって新しいことや、現実によく使われることを学べた授業でした。例えばアジャイル方法論を学ぶ授業、ロジックの計算量を求める授業、データ構造とアルゴリズムを学ぶ授業などです。
講義で理論や方法論などを学び、その後実習やワークショップ、アサインメントを通じて講義で学んだ内容を理解を深めました。
講義で学んだことを実習で使って学ぶのは、とても効率のいい学習方法だったと思います。
特にアジャイルを学ぶ授業はその典型でした。講義でアジャイルの理念やルールを学び、その後のワークショップで毎週グループのみんなで学んだ内容について議論しながら課題に取り組みました。その経験はいまの仕事にそのまま生かされています。
すでに知っていることを学ぶ授業もいくつか受けました。いざやってみると意外と苦戦したり、感覚ではわかるけど説明ができなかったりすることがけっこうありました。
こうした授業を通じて、今までは感覚でコードを書いていた部分を、理屈を理解した上で「こうだからこのコードでいい」というように言えるようになった部分が結構ありました。これはけっこう自分の中で大きかったです。
あと、グループで行うワークショップやアサインメントも実践に活かせる学習方法でした。
グループアサインメントで得る経験は、まじめにやっていれば働き始めても結構活かせるので有用です。
でも、オレも含め、グループアサインメントはみんな嫌いですけどね笑(自分のペースでできない、自分の担当部分をやってこないやつがいるなど)
無駄だった授業、残念だったこと
一方で取らなければよかった授業は、すでに知っていて簡単過ぎる内容を教える授業やソフトウェア開発に無関係な授業(情報メディアについての授業など)ですね。
でもこういう授業は、他に選択したい授業がなくて仕方なく取ったものがほとんどなので、授業が悪いというよりはまともな選択肢を提供しない学校を恨むという感じでした。しょうがないのでGPAを上げやすそうな授業をとってました。
全体を通じてコードを書く授業はけっこうありましたが、技術そのものを講義や実習で学ぶことは少なかったと記憶しています。開発に直接的に関する事も講義や実習でガンガン学べると思っていたので、若干期待はずれでした。
当たり前といえば当たり前ですが、実習はあくまで講義の内容を“体で覚える”方法であって、目的はあくまで講義の内容の理解でした。
MasterだとBachelorよりも座学重視のようです。
それと、ソフトウェア工学について学ぶ授業がなかったのは残念でした。
アプリケーションのレイヤー構造を考えたり、どういったアプローチがより効率的 and/or 柔軟性の高いアプリを作れるかなどを学べることを期待していましたが、そういった授業はなかったです。QUTにかかわらずほとんどの大学ではソフトウェア工学は教えてないと思います。
オレのマスターの2年目には、Projectという授業があったんですが、この授業の評価基準はものすごく不満でした。
この授業は特別で、自分の興味のあることを研究している教授を探し、その人の下について、その教授の研究に関連した何かをします。オレはこの授業でWebアプリの既存機能の改造と新規機能の追加をしました。
この授業では1万ワードのレポートが課されるんですが、成績はレポートのみで評価され、作ったアプリや開発工程、進捗など開発に関することは何一つ成績に考慮されませんでした。これはものすごくむかつきましたね。しかもこの授業必修で、マスター2年目のうちに2回取らないといけないし。
でも授業自体はいいので、評価基準さえ変わればかなりいい授業になるはずです。
大学の授業をこなすだけでは就職は厳しいと思ったほうがいい
講義内容が正確なものかどうかは、まあ信じるしかないでしょう。学校の授業内容の信憑性を疑い始めたら何も学習できないので笑
授業が就活や仕事に役に立つかどうですが、多くのものは役に立つと思います。ただ、それだけでは職歴が全くない人が仕事を得たりこなすことは難しいと思ったほうがいいです。
理由は2つ。
- 開発時には非技術的スキルも必要で、これは授業では習得しづらいから
- 大学で教える技術はごく基礎的な部分のみで、実際に”使える”レベルの技術者になるには自分で技術を学ぶ必要があるから
非技術的なスキルとは例えば、作業の優先度付け、時間管理、自分の意見を言ったり提案をしたり、チーム内でどう振る舞うか、顧客が求めるものをきちんと理解し、それをソフトウェアに反映するなどです(就職後に付くであろうジュニアポジションではそれほど高い要求はされないですが、それでもある程度は必要)。
これらのスキルは、授業内だけで身につけるのはなかなか難しいです。だから企業は雇用の際に経験者を好むのです。
こういったスキルは、インターンやボランティア活動に参加すると得やすいです。
今はオンラインでいろんなプロジェクトに参加できたりするので、それらに参加してもある程度経験が積めると思います。さらに目に見える結果が出せれば一石二鳥です。
技術面について言うと、授業で十分かどうかにかかわらず大学では学べないことを自主的に勉強すべきです。
何故かと言うと、オーストラリアで学ぶ学生は(特にマスターコース在籍)は本気で学びに来ている人が結構いて、誰に言われなくとも勝手に自習してどんどん覚えていくからです。
こういう人たちは好きでやっているのですごい勢いで覚えていくし、コミュニティやミートアップに参加したりなど、何事にも積極的。
こういう人たちと、授業内だけで勉強している人のどっちが就活時に強いか。答えはわかりますね。
さらに就活時は、学校を卒業したばかりの人たちだけでなく、すでに開発者として経験を積んでいる人たちとも戦わなければなりません。
これらの人たちと競り合って職を得るのは一筋縄ではいきません。
未経験の人が仕事をとるのは、オーストラリアでは大変なことです。
経験が就職できるかどうかの大きな鍵になるこの国で、学習やスキルアップを学校の授業だけに頼ると、将来厳しい就職活動をすることになると思います。
授業の難易度、選択授業について
QUTの授業はそこまでレベルが高いわけではないです。
QUTはそれほどレベルの高い大学ではないので笑
単に卒業するだけだったらそこまでひどく苦しむことは無いはずです。でもいい成績がほしいならそれなりの勉強は必要です。
最後に、コア授業以外の選択肢について。
確かオレの在学中は4つ選択授業、3~4つ選択必修、残りが必修だったはずです。
でも今はオレの頃からコース内容が結構変わったようなので正確にはわかりません。
多分1セメスターで4教科(48クレジット)とるのは今も変わってないと思うんですが、どのセメスターで何の授業がとれるか、自分で調べてみてください。
A-2. スマホアプリについての授業はありますか?
これは私がアプリを作りたいということもありますが、iOSやAndroidの開発に携わるのは今や必須だと思うので、スマホやウェアラブル端末のソフト開発も実際に行えるのか、就活の際も最新の技術を持って臨めるかどうかということです。
概要だけよりは、実際に作る課題があればいいのですが・・・。スマホ向けでなくとも実際にソフト作ることがあるのか気になります。
QUTのサイトを見たところ、学部ではそうしたコースがありますが、
https://www.qut.edu.au/study/unit?unit=IAB330&year=2019
修士ではこれが唯一モバイル関係の科目のような・・・
https://www.qut.edu.au/news?news-id=31841
過去にはそういうこともしていたようなのですが。
https://www.qut.edu.au/news?news-id=31841
こういうのはオンラインスクールのほうが充実してるでしょうか?
このリンク先の授業はマスターですか?見た感じバチェラーの授業な気がするんですが。
スマホアプリ開発をする授業=スマホ開発のいろはを教える、ではない
スマホアプリ開発をする授業を、当時1つだけ取ったことがあります。
確かあれはアジャイルを学ぶもう一つの授業で、スクラム開発のプロセスを使いながらプロジェクトを進め、実際に何かを開発しよう=認知症の人向けのスマートウォッチアプリ開発でした。でも実際はスマホで動くアプリ開発でした。
当時は確かあと1つか2つ他にマスターコース内でスマホアプリ開発をする授業がありました。
ただ、これはあくまで理論や方法論を、何かを実際に開発することで学ぼう=たまたまスマホアプリ開発だっただけで、スマホアプリ開発のいろはを教えるような授業ではなかったです。
事実、オレの受けた授業では開発の工程管理、開発ツール、実装方法などには一切触れず、グループ内の生徒のみで決めました。
友達の一人が受けていたEコマースに関する授業でも、課題でEコマースサイトをJavaを使って作っていましたが、その授業の講義内容を活かしたサイト作りができているかに焦点が当たっていました。
ただし、授業によってはアサインメントで書いたプログラムをきちんと評価するので、そういう授業を取ればプログラミングもある程度は学べるはずです。
例えば、アルゴリズムを学ぶ授業では講義で学んだアルゴリズムを実装するアサインメントが出されたんですが、その評価基準はコーディングに関するものばかりでした(コードが読みやすいこと、アルゴリズムが正しく実装されていること、適切なテストがされていることなど)。
開発の具体的な流れ
スマホアプリを作った際の開発のスケジュールを知りたいという、追加の質問があったのでここで軽く触れようと思います。
オレが取ったスマホアプリ開発をした授業では、1つのアプリを7人ほどのグループで作りました。
講義とワークショップが週に1回ずつあり、ワークショップではその週に誰が何をやるかなどをグループで話し合い、各メンバーがそのタスクを期限までにやってくるという流れでした。
授業外で週1~2度ミーティングを開き、各メンバーの進捗を確認、問題があればその対策を考えたり、作業量を調整したりしていました。アジャイルでの開発の進め方ですね。
上で触れた通りこの授業はスクラム開発手法を学ぶ授業だったので、チームとして如何にうまく機能するかが重要な点でした。当初予定した機能はすべて実装できなかったんですが、チームとしてよく機能していたので成績はよかったです。
この授業に限った話ではないですが、基本的にグループで進める授業は、教授が細かいことをいいません。グループ内でいつミーティングするか、どう進めるかなどはグループ内で決めます。
自分で考え、自分で行動するのが基本。これはグループ活動以外でもそうです。
学生が教えてくれる
話はそれますが、実習やワークショップでは必ずチューターか教授自身がその教室内にいるので、技術的なことを質問できます。
ただし、たまに(実際は50%くらいの確率か?笑)クソみたいなチューターがいて、全く役にたちません。そんな時はQUTの公式グループ(名前忘れた)に行くといいです。
このグループはボランティアで集まった学生たちで運営されていて、講義や実習で出た問題、アサインメントに苦しむ人たちに、各分野に長けた人たちが教えてくれます。
特定の技術に長けている方が就職しやすい
オーストラリア国内(に限った話ではないですが)では、iOSやAndroidの開発は必須ではないです。
確かに以前と比べたらスマホアプリ開発案件はかなり増えましたが、Webアプリの開発などはまだすごいいっぱいあるし、スマホアプリの開発は求人全体からみたらそれほど多くないんじゃないでしょうか。
ところで、日本と違ってこちらの求人の募集要項では特定の技術や経験を指定するものがほとんどです。例えばJava developerとして何年の経験があるとか、Microservicesで大規模開発の経験があるとか。
iOSアプリでも何でもいいですが、経験が少ないうちは特に、特定の技術(言語、フレームワーク、DBなど)に絞ってその経験をできるだけ多く積んだほうが、就職に有利になると思います。
ただし、アジャイルは必ず学んでください。オーストラリアではアジャイルでの開発が基本です。
授業で使う技術
授業では自然と今流行りとか定番の技術を使うことが多いです。
たいていの場合アサインメントの要件で言語やコンパイラの指定はありますが、ツールなどは生徒の好きなものとか、グループで決めたりがほとんどでした。
当然生徒は新しい技術を使いたがるので、結果的に仕事で使うようなテクノロジーと同じまたはよく似たものを、学校生活で自然と使うことになるはずです。
ただ、最新の技術を学んだからといって、就職に必ず役に立つわけではありません。
大事なのは、求人のポジションで求められる能力を持っていること。
また、特定の言語やテクノロジーを使ったことがなくても仕事を得ることはできます。
オレはいま仕事でAngularとTypescript、Microservicesといった技術や手法を使っていますが、今の仕事につくまでは一切使ったことがありませんでした。
おそらく過去に使ったことのある言語やフレームワークなどが似ていたことから、新しい技術もすぐに学べると判断されたんでしょう。
最後に
最後に、これまでの回答をまとめてみます。
QUTでは、講義の内容は悪くないし実習もしっかりやるので、どちらも真剣に取り組めば力が付きます。
仕事で使われることもそれなりに学べるし、学生の勉強をサポートする体制もあるし、学内は勉強しやすい環境が整っています。
学生にとっては勉強しやすいいい環境ではないでしょうか。
ただ、授業は座学を学ぶことがメインであり、実習はソフトウェアの開発などを通じて講義内容を理解する機会。なので、ソフトウェア開発自体が授業の中心になることはそれほど多くありません。
この点については、大学で教えるかどうかにかかわらず自習したほうがいいでしょう。
オーストラリアでの就職を狙うのなら、大学の授業以外で自分の学びたい事に関する経験を積むことを強く勧めます。
現地企業はすぐに結果が出せる人=経験者を欲しがるからです。
もちろん職歴がない人でも就職はできます。
そこは安心してください。怖がらずに就活してください。
ただ、職歴がない人は、人事を説得させられるだけの材料が必要です。
インターンやボランティア、オンラインのコミュニティに参加したり、自分でアプリを作るなどして材料(結局のところ職歴と似たようなものだが)を作ることで、就活成功に近づけるはずです。
残りの質問の答えは次回に続きます。
では!
3件のコメント