From daa509bd43a888e577c3adc13d0bf3f578c48b58 Mon Sep 17 00:00:00 2001 From: BlazingRockStorm Date: Tue, 11 Jun 2024 15:10:59 +0900 Subject: [PATCH 01/12] add post --- ...-11-0064-ChoosingRubyToTeachProgramming.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md diff --git a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md new file mode 100644 index 000000000..17de8410e --- /dev/null +++ b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md @@ -0,0 +1,19 @@ +--- +layout: post +title: 自分の経験からRubyでプログラミングを教えた +short_title: My Experience on Teaching Programming with Ruby +tags: 0064 +post_author: ホアンクアン +created_on: 2024 年 6 月 11 日 +--- + +{% include base.html %} + +## はじめに + +IT業界全般、特にプログラミングは、新しい人材をトレーニングすることは大事なことです。 + +## 自己紹介 +初めまして、 + +ベトナムのハノイから出身のホアン・クアンです。4年間日本に働いています。今リードエンジニアとして東京にITスタートアップに働いています。 \ No newline at end of file From fce8120c74cc9dd888495ae94acda505079bc1d4 Mon Sep 17 00:00:00 2001 From: BlazingRockStorm Date: Tue, 11 Jun 2024 18:47:55 +0900 Subject: [PATCH 02/12] rewrite the Opening, the Self Introduction part and draft the Situation Part --- ...024-06-11-0064-ChoosingRubyToTeachProgramming.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md index 17de8410e..a78bded2a 100644 --- a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md +++ b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md @@ -11,9 +11,18 @@ created_on: 2024 年 6 月 11 日 ## はじめに -IT業界全般、特にプログラミングは、新しい人材をトレーニングすることは大事なことです。 +IT業界全般、特にプログラミングは、人材育成は大事なことです。ですが、新しいメンバーをトレーニングするとき、メンターとしてエンジニアさんは、様々なチャレンジに会います。この投稿は、私の経験やなぜ、Rubyを選んでプログラミングを教える理由です。よろしくお願いします。 ## 自己紹介 + 初めまして、 -ベトナムのハノイから出身のホアン・クアンです。4年間日本に働いています。今リードエンジニアとして東京にITスタートアップに働いています。 \ No newline at end of file +ベトナムのハノイから出身のホアン・クアンです。4年間日本に働いています。今リードエンジニアとして東京にITスタートアップに働いています。好きな技術スタックはAgile/Scrum、AWSとRubyです。 + +最初の1年間半、Rubyプログラマーでした。その後、システムエンジニアとして仕事していますから、仕事の内容はあまりRubyを使ってないんですが、自分でRubyを勉強して続きます。 + +よろしくお願いします。 + +## 状況 + +At the beginning of the company, the CEO want to hire some of his acquaintances as the company interns and part-time, so as the lead engineer, I am also tasked with training them. \ No newline at end of file From 15965c37861d3c327bd11a71fae0f30c21a45650 Mon Sep 17 00:00:00 2001 From: BlazingRockStorm Date: Fri, 14 Jun 2024 15:52:04 +0900 Subject: [PATCH 03/12] add part of choosing Ruby --- ...-11-0064-ChoosingRubyToTeachProgramming.md | 78 ++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) diff --git a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md index a78bded2a..1539e349f 100644 --- a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md +++ b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md @@ -25,4 +25,80 @@ IT業界全般、特にプログラミングは、人材育成は大事なこと ## 状況 -At the beginning of the company, the CEO want to hire some of his acquaintances as the company interns and part-time, so as the lead engineer, I am also tasked with training them. \ No newline at end of file +会社設立当初、CEOが知り合いをインターンやバイトとして雇いたいということで、リードエンジニアである私には彼らの育成も任されています。CEOの知り合いは、6人の若いベトナム留学生でした。彼たちは、卒業後、IT関連の仕事をやりたかったですから、私はスキルと経験を伝えたかったです。しかし、... + +### チャレンジ#1 + +私のケースは、これらの問題に合いました: +1. 留学生たちは日本語学校やIT専門学校に勉強していましたから、ITやプログラミングをあまり勉強しませんでした。 +1. IT関連の仕事をやりたいですが、具体的に何をするが分からなかったです。 +1. 最近、私のベトナムコミュニティーに、「プログラミングできず、IT仕事もできる」というコースもあります。というのは、ベトナムのアウトソース会社は、3ヶ月から6ヵ月ぐらい、ITを知らない人にBrSE(ブリッジSE)になるためことを教えることです。そのことは、だいたいBAの知識ですから、プログラミングは全然ないです。すなわち、留学生たちとして、「簡単より道」です。 +1. 英語を分からなくて、日本語能力もまだ強くなかったです。 +1. 問題があったら、資料や本を読まずに、ネットで検索せずに、すぐに聞きます。 +1. 育成期間は3ヶ月だけでした。 +1. プログラミング言語が多いです。 +1. シラバスがまだなかったです。 + +上記のことから、解決ために、適切なプログラミング言語を選択し、それを使用して週ごとにシラバスを作成し、他のソリューションと組み合わせる必要があります。 + +### チャレンジ#1の解決 +私の対策は: +- 1、6、7の問題は、シンタックスが理解しやすく、早く勉強できるプログラミング言語を選びます。 +- 2の問題は、彼たちへオリエンテーションを企画しました。 +- 3の問題は、選んだプログラミング言語とオリエンテーションです。プログラミング言語ソリューションに関しては、他の短期コースと競合するのに十分な速さで学習できる言語を選択する必要があります。 +- 4、5の問題は、彼たちに[「Read - Search - Ask」](https://www.freecodecamp.org/news/read-search-dont-be-afraid-to-ask-743a23c411b4/)を教えるし、参考資料をちゃんと準備します。 +- 8の問題は、週ごとにシラバスを作成しなければしかありません。 + +この投稿に限り、**「シンタックスが理解しやすく、早く勉強できるプログラミング言語を選ぶ」**方法をもっと続きたいです。Ruby、PythonやTypescriptは、学習が簡単ですぐに習得できるというこの要件を満たしています。 + +このとき、Pythonを選びました。理由は: +- Rubyのシンタックスを似ています。 +- AWSに働くとき、Lambda、Glue ETLのようなサービスに、Pythonを使うことがたくさんです。ですから、私も経験もあります。 +- CEOの意見でしたから🙁 + +### チャレンジ#2:なぜPythonからRubyに変わりましたか? + +プログラミング言語を選らびましたが、新しい問題が発生しました: +- 留学生たちのコードは、Pythonのインデントに関するバグが多かったです。 +- オブジェクト指向(OOP)に、Pythonのアクセス修飾子はわかりにくいです。 + +Pythonのアクセス修飾子 +```python +class Example: + # public場合は、_がないです + def public_method: + pass + + # protected場合は、_が1つあります + def _protected_method: + pass + + # protected場合は、__が2つあります + def __private_method: + pass +``` +留学生たちに「このアンダースコアの意味はなんですか」を聞いたら、全然分からなかったです。 + +このとき、本当のOOP言語を選びました。OOPといえば、多分Javaですが、すぐに習得できないです。彼たちは日本語学校や専門学校の学生でした、ITを勉強している大学3年生ではなかったです。ですから、Rubyを選びました。 + +Rubyのアクセス修飾子 +```ruby +class Example + # public場合は、空きとかpublicキーワードです。 + def public_method + end + + # protected場合は、protectedキーワードです。 + protected + + def protected_method + end + + # private場合は、privateキーワードです。 + private + + def private_method + end +end +``` +### 結果 \ No newline at end of file From 768e6290b415193655af08775e7edaacc2fe1fe0 Mon Sep 17 00:00:00 2001 From: BlazingRockStorm Date: Sun, 16 Jun 2024 17:06:04 +0900 Subject: [PATCH 04/12] finish post --- ...6-11-0064-ChoosingRubyToTeachProgramming.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md index 1539e349f..695efc1cc 100644 --- a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md +++ b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md @@ -101,4 +101,20 @@ class Example end end ``` -### 結果 \ No newline at end of file +### 結果 + +PythonからRubyに変わりましたあと、留学生たちは: +- 1日後、すぐにRubyのコードを書けました。 +- コードを書くことは厳格なりましたから、より慎重になっていました。 +- OOPの4つの基本概念はよくわかりました。 +- ロジック的思考が向上しました。なぜならOOPはプログラミング時の思考の良い方向性です。 + +その後、Rubyのコアを分かったら、Ruby on Railsを勉強して、面白かったプロジェクトを作りました。でも、結局、3人はプログラミングをしくてIT仕事をやりたいですから、大きなベトナムアウトソース会社に入りました。1人は、日本語学校を戻って勉強続けました。2人だけプログラミング続けます。 + +ちょっと寂しかったです。 + +## おわりに + +私にとって、Rubyはいい教育ためプログラミング言語です。Rubyプログラマーコミュニティをもっとサポートできたらいいのにと思います。 + +最後までご読みになって、ありがとうございます。 \ No newline at end of file From d9d104ac2bf983bab45fe640cb976ba9b9714b12 Mon Sep 17 00:00:00 2001 From: BlazingRockStorm Date: Sun, 16 Jun 2024 17:19:05 +0900 Subject: [PATCH 05/12] fix sentence --- .../_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md index 695efc1cc..b8139ff4b 100644 --- a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md +++ b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md @@ -109,7 +109,7 @@ PythonからRubyに変わりましたあと、留学生たちは: - OOPの4つの基本概念はよくわかりました。 - ロジック的思考が向上しました。なぜならOOPはプログラミング時の思考の良い方向性です。 -その後、Rubyのコアを分かったら、Ruby on Railsを勉強して、面白かったプロジェクトを作りました。でも、結局、3人はプログラミングをしくてIT仕事をやりたいですから、大きなベトナムアウトソース会社に入りました。1人は、日本語学校を戻って勉強続けました。2人だけプログラミング続けます。 +その後、Rubyのコアを分かったら、Ruby on Railsを勉強して、面白かったプロジェクトを作りました。でも、結局、3人はプログラミングなしでIT仕事をやりたいですから、大きなベトナムアウトソース会社に入りました。1人は、日本語学校を戻って勉強続けました。2人だけプログラミング続けます。 ちょっと寂しかったです。 From 770afcfb96da84cd94f3861a5776a93cbe2d2df2 Mon Sep 17 00:00:00 2001 From: BlazingRockStorm Date: Wed, 19 Jun 2024 10:39:41 +0900 Subject: [PATCH 06/12] add English version --- ...-11-0064-ChoosingRubyToTeachProgramming.md | 115 +++++++++++++++++- 1 file changed, 114 insertions(+), 1 deletion(-) diff --git a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md index b8139ff4b..4bc457a3b 100644 --- a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md +++ b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md @@ -9,6 +9,8 @@ created_on: 2024 年 6 月 11 日 {% include base.html %} +# 日本語バージョン: + ## はじめに IT業界全般、特にプログラミングは、人材育成は大事なことです。ですが、新しいメンバーをトレーニングするとき、メンターとしてエンジニアさんは、様々なチャレンジに会います。この投稿は、私の経験やなぜ、Rubyを選んでプログラミングを教える理由です。よろしくお願いします。 @@ -117,4 +119,115 @@ PythonからRubyに変わりましたあと、留学生たちは: 私にとって、Rubyはいい教育ためプログラミング言語です。Rubyプログラマーコミュニティをもっとサポートできたらいいのにと思います。 -最後までご読みになって、ありがとうございます。 \ No newline at end of file +最後までご読みになって、ありがとうございます。 + +------ + +# English version: + +## Intro + +In the IT industry in general and programming particularly, training new members is very important. However, when training them, there are a lot of challenges that the mentor engineer has to solve. The article is my experience and the reason why I choose Ruby as the way to teach programming and the results. + +## Self Introduction + +Hello, my name is Hoang Quan. I'm from Hanoi, Vietnam. I'm working in Japan for 4 years. At the moment, I'm the Lead Engineer of a start up in Tokyo. My favorite tech stack is Agile/Scrum, AWS and Ruby. + +At the first 1,5 years of my career, I worked as a Ruby developer. Then, after becoming a system engineer, although I rarely use Ruby in work, I continue to learn Ruby myself. + +## Situation + +At the beginning of the company, the CEO want to hire some of his acquaintances as the company interns and part-time, so as the lead engineer, I am also tasked with training them. They were 6 young Vietnamese overseas students with a lot of energy and eager to find IT related jobs. I was really excited and hoped that I can teach them all my skills and experiences. But then... + +### Challenges + +In my case, these are my problems: + +- They are the students of the IT vocational schools and the Japanese-language schools, so they didn't learn much about IT and programming from those schools. +- They don't know in particular who they will become when "having an IT job". +- Recently, our Vietnamese has the "You can have an IT job without programming". The outsourcing companies have the programs that produce a BrSE for 3-6 months. Those programs are just BA courses, so no programming. With the students of the IT vocational schools and the Japanese-language schools, these are "the easy way". +- Their English and Japanese are not so good. +- My time for the training is only 3 months. +- There are many programming languages. +- There is no syllabus at that time. + +With the above, I have to choose the appropriate programming language, build a syllabus with it weeks by weeks, combine with other solutions. + +### Solution to Challenge #1 + +My solutions are: +- For issues 1, 6, and 7, choose a programming language that is easy to understand the syntax and can be learned quickly. +- For issue 2, I organized an orientation for them. +- For issue 3, it's the programming language I chose and the orientation. For the programming language solution, I need to choose a language that can be learned fast enough to compete with other short courses. +- For issues 4 and 5, I teach them to ["Read - Search - Ask"](https://www.freecodecamp.org/news/read-search-dont-be-afraid-to-ask-743a23c411b4/) and prepare reference materials properly. +- For issue 8, I have no choice but to create a syllabus for each week. + +Within the limits of the article, I would like to continue with the method of **"Choose a programming language that is easy to understand the syntax and can be learned quickly"**. Ruby, Python, and Typescript meet this requirement of being easy to learn and quick to master. + +At that time, I chose Python. Reasons are: +- Similar to Ruby syntax. +- When I work at AWS, I use Python a lot for services like Lambda and Glue ETL. So I am also familiar with Python. +- Because it was the CEO's opinion 🙁 + +### Challenge #2: Why did I change from Python to Ruby? + +After choosing a programming language, new problems arose: +- The students' code had many bugs related to Python indentation. +- In object-oriented (OOP), Python's access modifiers are difficult to understand. + +Python access modifiers +```python +class Example: +# If public, there is no _ +def public_method: +pass + +# If protected, there is one _ +def _protected_method: +pass + +# If protected, there are two __ +def __private_method: +pass +``` +When I asked the students, "What does this underscore mean?", they had no idea. + +At this point, I chose a real OOP language. Speaking of OOP, it's probably Java, but it's difficult to learn it right away. They were students at Japanese language schools and vocational schools, not third-year university students studying IT. That's why they chose Ruby. + +Access modifiers in Ruby +```ruby +class Example +# For public, it's free or public keyword. +def public_method +end + +# For protected, it's protected keyword. +protected + +def protected_method +end + +# For private, it's private keyword. +private + +def private_method +end +end +``` +### Results + +After switching from Python to Ruby, the students: +- After one day, they were able to write Ruby code immediately. +- Writing code became more rigorous, so they were more careful. +- They understood the four basic concepts of OOP well. +- Their logical thinking improved, because OOP is a good direction for thinking when programming. + +After that, after understanding the core of Ruby, they studied Ruby on Rails and created interesting projects. But in the end, three of them wanted to get an IT job without programming, so they joined a large Vietnamese outsourcing company. One went back to Japanese language school and continued studying. Only two continued programming. + +It was a little sad. + +## Conclusion + +For me, Ruby is a good programming language for education. I wish I could support the Ruby programmer community more. + +Thank you for reading to the end. \ No newline at end of file From 12ca0411e22e32c563b4233158ead3ee5581cf39 Mon Sep 17 00:00:00 2001 From: BlazingRockStorm Date: Mon, 24 Jun 2024 20:19:00 +0900 Subject: [PATCH 07/12] fix the past tense and some particle --- ...-11-0064-ChoosingRubyToTeachProgramming.md | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md index 4bc457a3b..ebaa231cb 100644 --- a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md +++ b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md @@ -13,43 +13,43 @@ created_on: 2024 年 6 月 11 日 ## はじめに -IT業界全般、特にプログラミングは、人材育成は大事なことです。ですが、新しいメンバーをトレーニングするとき、メンターとしてエンジニアさんは、様々なチャレンジに会います。この投稿は、私の経験やなぜ、Rubyを選んでプログラミングを教える理由です。よろしくお願いします。 +IT業界全般、特にプログラミングは、人材育成は大事なことです。ですが、新しいメンバーをトレーニングするとき、メンターとしてエンジニアは、様々なチャレンジに会います。この投稿は、私の経験や、なぜRubyを選んでプログラミングを教えているかの理由です。よろしくお願いします。 ## 自己紹介 -初めまして、 +初めまして。 -ベトナムのハノイから出身のホアン・クアンです。4年間日本に働いています。今リードエンジニアとして東京にITスタートアップに働いています。好きな技術スタックはAgile/Scrum、AWSとRubyです。 +ベトナムのハノイ出身のホアン・クアンです。4年間日本で働いています。今はリードエンジニアとして東京のITスタートアップで働いています。好きな技術スタックはAgile/Scrum、AWSとRubyです。 -最初の1年間半、Rubyプログラマーでした。その後、システムエンジニアとして仕事していますから、仕事の内容はあまりRubyを使ってないんですが、自分でRubyを勉強して続きます。 +最初の1年半、Rubyプログラマーでした。その後、システムエンジニアとして仕事しており、仕事の内容はあまりRubyを使っていませんが、自分でRubyを勉強し続けています。 よろしくお願いします。 ## 状況 -会社設立当初、CEOが知り合いをインターンやバイトとして雇いたいということで、リードエンジニアである私には彼らの育成も任されています。CEOの知り合いは、6人の若いベトナム留学生でした。彼たちは、卒業後、IT関連の仕事をやりたかったですから、私はスキルと経験を伝えたかったです。しかし、... +会社設立当初、CEOが知り合いをインターンやバイトとして雇いたいということで、リードエンジニアである私は彼らの育成も任されました。CEOの知り合いは、6人の若いベトナム留学生でした。彼らは、卒業後、IT関連の仕事をやりたかったので、私はスキルと経験を伝えたかったです。しかし、... ### チャレンジ#1 私のケースは、これらの問題に合いました: -1. 留学生たちは日本語学校やIT専門学校に勉強していましたから、ITやプログラミングをあまり勉強しませんでした。 -1. IT関連の仕事をやりたいですが、具体的に何をするが分からなかったです。 -1. 最近、私のベトナムコミュニティーに、「プログラミングできず、IT仕事もできる」というコースもあります。というのは、ベトナムのアウトソース会社は、3ヶ月から6ヵ月ぐらい、ITを知らない人にBrSE(ブリッジSE)になるためことを教えることです。そのことは、だいたいBAの知識ですから、プログラミングは全然ないです。すなわち、留学生たちとして、「簡単より道」です。 -1. 英語を分からなくて、日本語能力もまだ強くなかったです。 +1. 留学生たちは日本語学校やIT専門学校で勉強していましたが、その学校でITやプログラミングをあまり勉強していませんでした。 +1. IT関連の仕事をやりたいですが、彼らは具体的に何をするが分からなかったです。 +1. 最近、私のベトナムコミュニティーに、「プログラミングできず、IT仕事もできる」というコースもあります。というのは、ベトナムのアウトソース会社は、3ヶ月から6ヵ月ぐらい、ITを知らない人にBrSE(ブリッジSE)になるためことを教えることです。そのことは、だいたいビジネスアナリスト(BA)の知識ですから、プログラミングは全然ないです。すなわち、留学生たちとして、「簡単より道」です。 +1. 英語が分からなくて、日本語能力もまだ強くなかったです。 1. 問題があったら、資料や本を読まずに、ネットで検索せずに、すぐに聞きます。 1. 育成期間は3ヶ月だけでした。 1. プログラミング言語が多いです。 1. シラバスがまだなかったです。 -上記のことから、解決ために、適切なプログラミング言語を選択し、それを使用して週ごとにシラバスを作成し、他のソリューションと組み合わせる必要があります。 +上記のことから、解決ために、適切なプログラミング言語を選択し、それを使用して週ごとにシラバスを作成し、他のソリューションと組み合わせる必要がありました。 ### チャレンジ#1の解決 私の対策は: -- 1、6、7の問題は、シンタックスが理解しやすく、早く勉強できるプログラミング言語を選びます。 +- 1、6、7の問題は、シンタックスが理解しやすく、早く勉強できるプログラミング言語を選びました。 - 2の問題は、彼たちへオリエンテーションを企画しました。 -- 3の問題は、選んだプログラミング言語とオリエンテーションです。プログラミング言語ソリューションに関しては、他の短期コースと競合するのに十分な速さで学習できる言語を選択する必要があります。 -- 4、5の問題は、彼たちに[「Read - Search - Ask」](https://www.freecodecamp.org/news/read-search-dont-be-afraid-to-ask-743a23c411b4/)を教えるし、参考資料をちゃんと準備します。 -- 8の問題は、週ごとにシラバスを作成しなければしかありません。 +- 3の問題は、選んだプログラミング言語とオリエンテーションでした。プログラミング言語ソリューションに関しては、他の短期コースと競合するのに十分な速さで学習できる言語を選択する必要がありまsた。 +- 4、5の問題は、彼たちに[「Read - Search - Ask」](https://www.freecodecamp.org/news/read-search-dont-be-afraid-to-ask-743a23c411b4/)を教えるし、参考資料をちゃんと準備しました。 +- 8の問題は、週ごとにシラバスを作成しなければしかありませんでした。 この投稿に限り、**「シンタックスが理解しやすく、早く勉強できるプログラミング言語を選ぶ」**方法をもっと続きたいです。Ruby、PythonやTypescriptは、学習が簡単ですぐに習得できるというこの要件を満たしています。 @@ -62,7 +62,7 @@ IT業界全般、特にプログラミングは、人材育成は大事なこと プログラミング言語を選らびましたが、新しい問題が発生しました: - 留学生たちのコードは、Pythonのインデントに関するバグが多かったです。 -- オブジェクト指向(OOP)に、Pythonのアクセス修飾子はわかりにくいです。 +- オブジェクト指向(OOP)に、Pythonのアクセス修飾子はわかりにくいでした。 Pythonのアクセス修飾子 ```python @@ -148,7 +148,7 @@ In my case, these are my problems: - Recently, our Vietnamese has the "You can have an IT job without programming". The outsourcing companies have the programs that produce a BrSE for 3-6 months. Those programs are just BA courses, so no programming. With the students of the IT vocational schools and the Japanese-language schools, these are "the easy way". - Their English and Japanese are not so good. - My time for the training is only 3 months. -- There are many programming languages. +- There are many programming languages as the options. - There is no syllabus at that time. With the above, I have to choose the appropriate programming language, build a syllabus with it weeks by weeks, combine with other solutions. From a4bab922af1a2a02cddbbbbd6495f79bc58974ea Mon Sep 17 00:00:00 2001 From: BlazingRockStorm Date: Wed, 3 Jul 2024 13:13:36 +0900 Subject: [PATCH 08/12] fix typo, English version and Japanese sentence --- ...-11-0064-ChoosingRubyToTeachProgramming.md | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md index ebaa231cb..55198b532 100644 --- a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md +++ b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md @@ -1,6 +1,6 @@ --- layout: post -title: 自分の経験からRubyでプログラミングを教えた +title: Rubyでプログラミングを教えた経験談 short_title: My Experience on Teaching Programming with Ruby tags: 0064 post_author: ホアンクアン @@ -21,13 +21,13 @@ IT業界全般、特にプログラミングは、人材育成は大事なこと ベトナムのハノイ出身のホアン・クアンです。4年間日本で働いています。今はリードエンジニアとして東京のITスタートアップで働いています。好きな技術スタックはAgile/Scrum、AWSとRubyです。 -最初の1年半、Rubyプログラマーでした。その後、システムエンジニアとして仕事しており、仕事の内容はあまりRubyを使っていませんが、自分でRubyを勉強し続けています。 +社会人になって最初の1年半、Rubyプログラマーでした。その後、システムエンジニアとして仕事しています。仕事ではあまりRubyを使っていませんが、自分でRubyを勉強し続けています。 よろしくお願いします。 ## 状況 -会社設立当初、CEOが知り合いをインターンやバイトとして雇いたいということで、リードエンジニアである私は彼らの育成も任されました。CEOの知り合いは、6人の若いベトナム留学生でした。彼らは、卒業後、IT関連の仕事をやりたかったので、私はスキルと経験を伝えたかったです。しかし、... +会社設立当初、CEOが知り合いをインターンやバイトとして雇いたいということで、リードエンジニアである私は彼らの育成も任されました。CEOの知り合いは、6人の若いベトナム人留学生でした。彼らは、卒業後、IT関連の仕事に就きたいと望んでいました。そのため私は自分のスキルと経験を彼らに伝えたいと思いました。しかし、... ### チャレンジ#1 @@ -44,17 +44,17 @@ IT業界全般、特にプログラミングは、人材育成は大事なこと 上記のことから、解決ために、適切なプログラミング言語を選択し、それを使用して週ごとにシラバスを作成し、他のソリューションと組み合わせる必要がありました。 ### チャレンジ#1の解決 -私の対策は: +私の対策方法は: - 1、6、7の問題は、シンタックスが理解しやすく、早く勉強できるプログラミング言語を選びました。 - 2の問題は、彼たちへオリエンテーションを企画しました。 -- 3の問題は、選んだプログラミング言語とオリエンテーションでした。プログラミング言語ソリューションに関しては、他の短期コースと競合するのに十分な速さで学習できる言語を選択する必要がありまsた。 -- 4、5の問題は、彼たちに[「Read - Search - Ask」](https://www.freecodecamp.org/news/read-search-dont-be-afraid-to-ask-743a23c411b4/)を教えるし、参考資料をちゃんと準備しました。 -- 8の問題は、週ごとにシラバスを作成しなければしかありませんでした。 +- 3の問題は、選んだプログラミング言語とオリエンテーションでした。プログラミング言語ソリューションに関しては、他の短期コースと競合するのに十分な速さで学習できる言語を選択する必要がありました。 +- 4、5の問題は、彼たちに[「Read - Search - Ask」](https://www.freecodecamp.org/news/read-search-dont-be-afraid-to-ask-743a23c411b4/)を教え、参考資料をちゃんと準備しました。 +- 8の問題は、週ごとにシラバスを作成するしかありませんでした。 -この投稿に限り、**「シンタックスが理解しやすく、早く勉強できるプログラミング言語を選ぶ」**方法をもっと続きたいです。Ruby、PythonやTypescriptは、学習が簡単ですぐに習得できるというこの要件を満たしています。 +この投稿に限り、**「シンタックスが理解しやすく、早く勉強できるプログラミング言語を選ぶ」**方法をもっと続けたいです。Ruby、PythonやTypescriptは、学習が簡単ですぐに習得できるというこの要件を満たしています。 このとき、Pythonを選びました。理由は: -- Rubyのシンタックスを似ています。 +- Rubyのシンタックスに似ています。 - AWSに働くとき、Lambda、Glue ETLのようなサービスに、Pythonを使うことがたくさんです。ですから、私も経験もあります。 - CEOの意見でしたから🙁 @@ -62,7 +62,7 @@ IT業界全般、特にプログラミングは、人材育成は大事なこと プログラミング言語を選らびましたが、新しい問題が発生しました: - 留学生たちのコードは、Pythonのインデントに関するバグが多かったです。 -- オブジェクト指向(OOP)に、Pythonのアクセス修飾子はわかりにくいでした。 +- オブジェクト指向(OOP)に、Pythonのアクセス修飾子はわかりにくかったです。 Pythonのアクセス修飾子 ```python @@ -81,45 +81,45 @@ class Example: ``` 留学生たちに「このアンダースコアの意味はなんですか」を聞いたら、全然分からなかったです。 -このとき、本当のOOP言語を選びました。OOPといえば、多分Javaですが、すぐに習得できないです。彼たちは日本語学校や専門学校の学生でした、ITを勉強している大学3年生ではなかったです。ですから、Rubyを選びました。 +このとき、本当のOOP言語を選びました。OOPといえば、多分Javaですが、すぐに習得できないです。彼たちは日本語学校や専門学校の学生で、ITを勉強している大学3年生ではなかったです。ですから、Rubyを選びました。 Rubyのアクセス修飾子 ```ruby class Example - # public場合は、空きとかpublicキーワードです。 + # public場合は、指定されていないかpublicキーワードです。 def public_method end - + # protected場合は、protectedキーワードです。 protected - + def protected_method end - + # private場合は、privateキーワードです。 private - + def private_method end end ``` ### 結果 -PythonからRubyに変わりましたあと、留学生たちは: +PythonからRubyに変えたあと、留学生たちは: - 1日後、すぐにRubyのコードを書けました。 -- コードを書くことは厳格なりましたから、より慎重になっていました。 -- OOPの4つの基本概念はよくわかりました。 -- ロジック的思考が向上しました。なぜならOOPはプログラミング時の思考の良い方向性です。 +- コードの書き方が厳格になり、より慎重になっていました。 +- 学生たちはOOPの基本概念をよく理解していました。 +- 論理的思考が向上しました。なぜならOOPはプログラミングをする時の考え方によい方向性をしています。 -その後、Rubyのコアを分かったら、Ruby on Railsを勉強して、面白かったプロジェクトを作りました。でも、結局、3人はプログラミングなしでIT仕事をやりたいですから、大きなベトナムアウトソース会社に入りました。1人は、日本語学校を戻って勉強続けました。2人だけプログラミング続けます。 +その後、Rubyのコアを分かったら、Ruby on Railsを勉強して、興味のあるプロジェクトを作りました。でも、結局、3人はプログラミングなしでIT仕事をしたかったため、大きなベトナムアウトソース会社に入りました。1人は、日本語学校に戻って勉強を続けました。2人だけプログラミング続けています。 ちょっと寂しかったです。 ## おわりに -私にとって、Rubyはいい教育ためプログラミング言語です。Rubyプログラマーコミュニティをもっとサポートできたらいいのにと思います。 +私にとって、Rubyは教育するのにいいプログラミング言語です。Rubyプログラマーコミュニティをもっとサポートできたらいいのにと思います。 -最後までご読みになって、ありがとうございます。 +最後までお読みいただき、ありがとうございます。 ------ @@ -162,11 +162,11 @@ My solutions are: - For issues 4 and 5, I teach them to ["Read - Search - Ask"](https://www.freecodecamp.org/news/read-search-dont-be-afraid-to-ask-743a23c411b4/) and prepare reference materials properly. - For issue 8, I have no choice but to create a syllabus for each week. -Within the limits of the article, I would like to continue with the method of **"Choose a programming language that is easy to understand the syntax and can be learned quickly"**. Ruby, Python, and Typescript meet this requirement of being easy to learn and quick to master. +Within the limits of the article, I would like to continue with the solution of **"Choose a programming language that is easy to understand the syntax and can be learned quickly"**. Ruby, Python, and Typescript meet this requirement of being easy to learn and quick to master. At that time, I chose Python. Reasons are: - Similar to Ruby syntax. -- When I work at AWS, I use Python a lot for services like Lambda and Glue ETL. So I am also familiar with Python. +- When I work with AWS, I use Python a lot for services like Lambda and Glue ETL. So I am also familiar with Python. - Because it was the CEO's opinion 🙁 ### Challenge #2: Why did I change from Python to Ruby? From 9dc0cb56a3d5c46e3bba13745500c269570ef281 Mon Sep 17 00:00:00 2001 From: Hoang Duc Quan Date: Wed, 3 Jul 2024 11:26:42 +0700 Subject: [PATCH 09/12] fix tech stack Co-authored-by: Kakutani Shintaro --- .../_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md index 55198b532..9779e5323 100644 --- a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md +++ b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md @@ -19,7 +19,7 @@ IT業界全般、特にプログラミングは、人材育成は大事なこと 初めまして。 -ベトナムのハノイ出身のホアン・クアンです。4年間日本で働いています。今はリードエンジニアとして東京のITスタートアップで働いています。好きな技術スタックはAgile/Scrum、AWSとRubyです。 +ベトナムのハノイ出身のホアン・クアンです。4年間日本で働いています。今はリードエンジニアとして東京のITスタートアップで働いています。Agile/Scrum、AWSとRubyが好きです。 社会人になって最初の1年半、Rubyプログラマーでした。その後、システムエンジニアとして仕事しています。仕事ではあまりRubyを使っていませんが、自分でRubyを勉強し続けています。 From 4f4ca9fbbe29a86f4a5ca8e66e3971433c06a872 Mon Sep 17 00:00:00 2001 From: BlazingRockStorm Date: Wed, 3 Jul 2024 14:18:28 +0900 Subject: [PATCH 10/12] fix English version and Japanese sentence about the fact: Learning in IT school but not knowing to write code --- .../_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md index 9779e5323..f658af4d0 100644 --- a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md +++ b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md @@ -32,7 +32,7 @@ IT業界全般、特にプログラミングは、人材育成は大事なこと ### チャレンジ#1 私のケースは、これらの問題に合いました: -1. 留学生たちは日本語学校やIT専門学校で勉強していましたが、その学校でITやプログラミングをあまり勉強していませんでした。 +1. 留学生たちは日本語学校やIT専門学校に通っていましたがプログラミングはほとんど勉強していませんでした。 1. IT関連の仕事をやりたいですが、彼らは具体的に何をするが分からなかったです。 1. 最近、私のベトナムコミュニティーに、「プログラミングできず、IT仕事もできる」というコースもあります。というのは、ベトナムのアウトソース会社は、3ヶ月から6ヵ月ぐらい、ITを知らない人にBrSE(ブリッジSE)になるためことを教えることです。そのことは、だいたいビジネスアナリスト(BA)の知識ですから、プログラミングは全然ないです。すなわち、留学生たちとして、「簡単より道」です。 1. 英語が分からなくて、日本語能力もまだ強くなかったです。 @@ -143,7 +143,7 @@ At the beginning of the company, the CEO want to hire some of his acquaintances In my case, these are my problems: -- They are the students of the IT vocational schools and the Japanese-language schools, so they didn't learn much about IT and programming from those schools. +- They didn't learn much about IT and programming from the IT vocational schools and the Japanese-language schools they are attending. - They don't know in particular who they will become when "having an IT job". - Recently, our Vietnamese has the "You can have an IT job without programming". The outsourcing companies have the programs that produce a BrSE for 3-6 months. Those programs are just BA courses, so no programming. With the students of the IT vocational schools and the Japanese-language schools, these are "the easy way". - Their English and Japanese are not so good. From 253ef428e760532985ac0d358583fb3fc1b72931 Mon Sep 17 00:00:00 2001 From: BlazingRockStorm Date: Wed, 3 Jul 2024 14:37:54 +0900 Subject: [PATCH 11/12] fix short word --- .../_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md index f658af4d0..8f121b9f4 100644 --- a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md +++ b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md @@ -34,7 +34,7 @@ IT業界全般、特にプログラミングは、人材育成は大事なこと 私のケースは、これらの問題に合いました: 1. 留学生たちは日本語学校やIT専門学校に通っていましたがプログラミングはほとんど勉強していませんでした。 1. IT関連の仕事をやりたいですが、彼らは具体的に何をするが分からなかったです。 -1. 最近、私のベトナムコミュニティーに、「プログラミングできず、IT仕事もできる」というコースもあります。というのは、ベトナムのアウトソース会社は、3ヶ月から6ヵ月ぐらい、ITを知らない人にBrSE(ブリッジSE)になるためことを教えることです。そのことは、だいたいビジネスアナリスト(BA)の知識ですから、プログラミングは全然ないです。すなわち、留学生たちとして、「簡単より道」です。 +1. 最近、私のベトナムコミュニティーに、「プログラミングしなくてもITの仕事に就ける」というコースもあります。というのは、ベトナムのアウトソース会社は、3ヶ月から6ヵ月ぐらい、ITを知らない人にブリッジSEになるためことを教えるコースがあります。そうしたコースで教えるのはビジネスアナリストの知識だけですから、プログラミングは全然やりません。すなわち、留学生たちにとっては、「簡単な道」です。 1. 英語が分からなくて、日本語能力もまだ強くなかったです。 1. 問題があったら、資料や本を読まずに、ネットで検索せずに、すぐに聞きます。 1. 育成期間は3ヶ月だけでした。 @@ -145,7 +145,7 @@ In my case, these are my problems: - They didn't learn much about IT and programming from the IT vocational schools and the Japanese-language schools they are attending. - They don't know in particular who they will become when "having an IT job". -- Recently, our Vietnamese has the "You can have an IT job without programming". The outsourcing companies have the programs that produce a BrSE for 3-6 months. Those programs are just BA courses, so no programming. With the students of the IT vocational schools and the Japanese-language schools, these are "the easy way". +- Recently, our Vietnamese has the "You can have an IT job without programming". The outsourcing companies have the programs that produce a BrSE for 3-6 months. Those programs are just Business Analyst courses, so no programming. With the students of the IT vocational schools and the Japanese-language schools, these are "the easy way". - Their English and Japanese are not so good. - My time for the training is only 3 months. - There are many programming languages as the options. From 632cb1cca0679b211ea4d2a158d7c0c723c95a39 Mon Sep 17 00:00:00 2001 From: BlazingRockStorm Date: Sun, 21 Jul 2024 21:28:38 +0900 Subject: [PATCH 12/12] fix the code indent at English version, add the links --- ...-11-0064-ChoosingRubyToTeachProgramming.md | 74 ++++++++++++------- 1 file changed, 49 insertions(+), 25 deletions(-) diff --git a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md index 8f121b9f4..f3180b2a1 100644 --- a/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md +++ b/articles/0064/_posts/2024-06-11-0064-ChoosingRubyToTeachProgramming.md @@ -67,15 +67,15 @@ IT業界全般、特にプログラミングは、人材育成は大事なこと Pythonのアクセス修飾子 ```python class Example: - # public場合は、_がないです + # public場合は、アンダースコアがないです def public_method: pass - # protected場合は、_が1つあります + # protected場合は、アンダースコアが1つあります def _protected_method: pass - # protected場合は、__が2つあります + # protected場合は、アンダースコアが2つあります def __private_method: pass ``` @@ -90,6 +90,10 @@ class Example def public_method end + public + def public_method2 + end + # protected場合は、protectedキーワードです。 protected @@ -119,6 +123,8 @@ PythonからRubyに変えたあと、留学生たちは: 私にとって、Rubyは教育するのにいいプログラミング言語です。Rubyプログラマーコミュニティをもっとサポートできたらいいのにと思います。 +自己理由なので、Rubyを教えることを中止ました。Slideshareに教えるためのスライドをアップロードしました。英語バージョンの最後にリンクを貼っていただきます。 + 最後までお読みいただき、ありがとうございます。 ------ @@ -131,7 +137,7 @@ In the IT industry in general and programming particularly, training new members ## Self Introduction -Hello, my name is Hoang Quan. I'm from Hanoi, Vietnam. I'm working in Japan for 4 years. At the moment, I'm the Lead Engineer of a start up in Tokyo. My favorite tech stack is Agile/Scrum, AWS and Ruby. +Hello, my name is Hoang Quan. I'm from Hanoi, Vietnam. I'm working in Japan for 4 years. At the moment, I'm the Lead Engineer of a start up in Tokyo. I love Agile/Scrum, AWS and Ruby. At the first 1,5 years of my career, I worked as a Ruby developer. Then, after becoming a system engineer, although I rarely use Ruby in work, I continue to learn Ruby myself. @@ -178,17 +184,17 @@ After choosing a programming language, new problems arose: Python access modifiers ```python class Example: -# If public, there is no _ -def public_method: -pass + # For public case, there is no underscore + def public_method: + pass -# If protected, there is one _ -def _protected_method: -pass + # For protected case, there is one underscore + def _protected_method: + pass -# If protected, there are two __ -def __private_method: -pass + # For private case, there are two underscores + def __private_method: + pass ``` When I asked the students, "What does this underscore mean?", they had no idea. @@ -197,21 +203,25 @@ At this point, I chose a real OOP language. Speaking of OOP, it's probably Java, Access modifiers in Ruby ```ruby class Example -# For public, it's free or public keyword. -def public_method -end + # For public case, there is no keyword or it's public keyword. + def public_method + end -# For protected, it's protected keyword. -protected + public + def public_method2 + end -def protected_method -end + # For protected case, it's protected keyword. + protected + + def protected_method + end -# For private, it's private keyword. -private + # For private case, it's private keyword. + private -def private_method -end + def private_method + end end ``` ### Results @@ -230,4 +240,18 @@ It was a little sad. For me, Ruby is a good programming language for education. I wish I could support the Ruby programmer community more. -Thank you for reading to the end. \ No newline at end of file +For personal reasons, I don't teach Ruby For now. I have uploaded the slides I used for teaching into Slideshare. The links to the slides are at the end of the English version. + +Thank you for reading to the end. + +### スライド/Slides + +- First slide: [https://www.slideshare.net/slideshow/01-ruby-introduction-ruby-core-teaching/270326042](https://www.slideshare.net/slideshow/01-ruby-introduction-ruby-core-teaching/270326042) +- Second slide: [https://www.slideshare.net/slideshow/02-ruby-basic-slides-ruby-core-teaching/270326038](https://www.slideshare.net/slideshow/02-ruby-basic-slides-ruby-core-teaching/270326038) +- Third slide: [https://www.slideshare.net/slideshow/03-ruby-variables-regex-ruby-core-teaching/270326039](https://www.slideshare.net/slideshow/03-ruby-variables-regex-ruby-core-teaching/270326039) +- 4th slide: [https://www.slideshare.net/slideshow/04-ruby-operators-slides-ruby-core-teaching/270326035](https://www.slideshare.net/slideshow/04-ruby-operators-slides-ruby-core-teaching/270326035) +- 5th slide: [https://www.slideshare.net/slideshow/05-ruby-control-structures-ruby-core-teaching/270326036](https://www.slideshare.net/slideshow/05-ruby-control-structures-ruby-core-teaching/270326036) +- 6th slide: [https://www.slideshare.net/slideshow/06-ruby-array-hash-ruby-core-teaching/270326037](https://www.slideshare.net/slideshow/06-ruby-array-hash-ruby-core-teaching/270326037) +- 7th slide: [https://www.slideshare.net/slideshow/07-ruby-string-slides-ruby-core-teaching/270326040](https://www.slideshare.net/slideshow/07-ruby-string-slides-ruby-core-teaching/270326040) +- 8th slide: [https://www.slideshare.net/slideshow/08-ruby-enumerable-ruby-core-teaching/270326032](https://www.slideshare.net/slideshow/08-ruby-enumerable-ruby-core-teaching/270326032) +- 9th slide: [https://www.slideshare.net/slideshow/09-ruby-object-oriented-programming-ruby-core-teaching/270326041](https://www.slideshare.net/slideshow/09-ruby-object-oriented-programming-ruby-core-teaching/270326041) \ No newline at end of file