2025年7月から一般社団法人ソフトウェアエンジニアリング協会 (以下、「SWE協会」)の方々にArai 60を題材にコーディングを見てもらう or 見る練習をすることとなりました。本レポジトリは、その目標、学習手順、現在の私のSWE Levelなどを記載、記録し、後学のための材料としての役割を目的とします。また、SWE協会の方々にレビュー頂くので、自己紹介の意味もあります。学習を進めていく中での課題や感想は、追記していきます。
CS専攻で海外大学院への進学を目指していましたが、文系出身の為Prerequisitesを満たせていませんでした。その為、NYU Tandon Bridgeという非Techバックグラウンド向けのcourse(6ヶ月)を受験、合格し、コースを受講しました。詳細はここでは伏せておきますが、C++、離散数学、データ構造とアルゴリズム、そしてOSとネットワークの4termに別れており、各term終了後Examを受験するというものでした。残念ながら、私はこのExamに2度落ちてしまいました。非技術系から技術系への転換の中で、サラから英語で技術を学ぶことに高いハードルを感じました。根本的な学習方法・認識の変更が必要だと感じ何かヒントを探す為、さまざまなtechブログを見てました。そこで出会ったのが、スタートラインに立つためにはどうするのかでした。
具体的には、以下のような能力を身につけることを目標としています。 初学者の為、1年ほどかかるのではと予想してます。
半年ほどで、世界標準のソフトウェアエンジニアのコーディング能力を身につけることを目指している。
- 計算量のような雑な評価ではなくコードの優劣の評価をして適切なものを選択する能力
- 手作業でできることをコンピュータにお願いできる
- 大規模なコードを読解し理解する能力
ソフトウェアエンジニアは、専門家集団であり、一般に専門家集団には共通基盤となる常識がある。この常識を身につければ専門家集団の成員として認められる。つまり、「知識、反応、行動、感覚、判断」を専門家集団の常識に合わせることをこの会では目標としている。
【追加】上記の目標に含意されているが、用語を英語で理解、説明、そして使用できる能力
講師の方からは以下のルールを提示され、基本的には下記通りに沿って練習します。 コーディング練習会参加マニュアル(一般社団法人ソフトウェアエンジニアリング協会)
主に以下のSWE協会で推奨されているArai60問を取り組みたい所ですが、まだ私にはハードルが高いと感じた為いくつかステップを踏みたいと思います。実際にコードを書いてみて順番は前後することになると思います。
推奨 - コーディング面接対策のために解きたいLeetCode 60問
- learningpython.org
- LeetCode
- コーディング面接対策のために解きたいLeetCode 60問
- NeetCode150
- Grind75 Blind 75の改良版(Arai60と重複)
ここに現在の私のコーディングのレベルを記しておきたいと思います。理由は、後学者が「このレベルから、〇〇なったのか!」(プラスの感情)や「このレベルだから、ここで止まってるな。」(・・・)など、色々な感想・感情・感性を持ってにご自分の学習に役立ててほしいからです。あまりに次元の低い話の為、後に見返した時に羞恥心に苛まれる事になるのは目に見えていますが、そこは割り切りたいと思います。しかし、冷静に考えると、初学者のため、適正に自身の評価が出来ない。つまり、自身の現在地が分からないですね。ここまでコードを書いた経験を箇条書きにて記載します。ここら辺はどの教材を扱うかにつながってきますが、困った時は相談をしようと思います。
- C++で、APG4Bを2周
- Pythonで簡易な自動集計(2つ)プログラム 100行程度
- NYU Tandon BridgeでC++の授業と課題 (pointerとclassで躓いで理解出来ていない)
- portfolio作成 (600行程度)
- blog作成 (500行程度)