近年、プログラミング教育が盛んで、誰でもプログラムを書けるようになればキャリアアップ、という趣旨の情報がよくX(Twitter)で流れている。100日間プログラムを毎日書いていたら何を得られるのか、その結果をお見せしようと思う。
100日チャレンジとは?
100日チャレンジは、毎日pythonでプログラムを書きゲームやツールを作成し、そのプログラムを動画で一般に公開する。毎日約10時間をプログラミングに費やし、様々なソフトウェアを開発していく。
私がこの100日チャレンジを始めた時、私は自分自身に何ができるのか、そしてどこまで成長できるのかを本当に知りたいと思っていた。毎日Pythonを使って新しいゲームやツールを作り、作ったものを動画で公開することで、技術的なスキルを身につけた。
しかし、この経験を通じて、私はそれ以外にも多くのことを得た。ただ技術的な知識やプログラミングスキルだけでなく、人脈、内定、自己管理、ストレスとの向き合い方、そして何よりも自分自身について深く理解することができた。また、このチャレンジが終わった今でも、その影響は私の日常生活やキャリアに大きな影響を与え続けている。
この文書は、100日チャレンジという個人的な旅を通じて得られた知識と経験を、Twitterでフォローしてくださった方々や、同じような挑戦を考えている人々に共有することを目的としている。私の物語が、あなた自身の挑戦への一歩を踏み出すきっかけになれば幸いである。
得たもの1:圧倒的な技術力の獲得
100日チャレンジを通じて獲得した技術力は、ただ単にプログラミング言語を学ぶこと以上のものであった。毎日プログラムを書くことで、プログラミングをする速さが上がるだけでなく、ソフトウェア設計をする能力も得た。
このチャレンジで最も注力したことは、ソフトウェア工学的に綺麗な設計を行い、コードを「綺麗」にすることだった。再利用性が高く、可読性の高い、プログラムを作成するために、OOP、コンポーネント型プログラミング、デザインパターン等を企画に「勉強させられた」。
まず、OOPを学んだ。オブジェクト指向プログラミング(OOP)は、ソフトウェア開発において重要な考え方の1つで、クラスとオブジェクトを用いて、現実世界の振る舞いや特性を模倣し、より直感的で再利用可能なコードを作成することを可能にする。このチャレンジを通じて、OOPの原則(カプセル化、継承、多態性)を深く理解し、実際のプロジェクトでこれらの概念を適用する方法を学んだ。これらの考え方は非常に有用であるものの、書籍は動かすことに注力したものばかりであるため、練習する機会を得られたことは非常に大きかった。
次に、コンポーネント型プログラミングを学んだ。コンポーネント型プログラミングは、再利用可能なコンポーネント(独立したプログラムの部品)を組み合わせて新しいアプリケーションを構築するアプローチある。この方法は、開発プロセスを加速し、メンテナンスを容易にする。このチャレンジでは、毎日違うプログラムを作成する必要があり、読者を飽きさせないようにするため、毎日見た目が違うプログラムを作成していた。しかし、毎日全く違うプログラムを作ると時間がいくらあっても足りないため、同じ機能を持つプログラムは再利用し、できる限り工数を減らす必要があった。そのような必要性もあり、異なる機能を持つコンポーネントの設計と実装に注力し、それらを組み合わせて複雑なシステムを構築する経験を積むことができた。
また、デザインパターンも学んだ。良いソフトウェア設計は、効率的かつ効果的なソリューションの開発に不可欠である。この期間、設計パターンを学び、問題を解決するための一般的なテンプレートとしてこれらを活用する方法を理解した。デザインパターンを使うことで、コードの可読性、拡張性、保守性が向上し、開発プロセスがよりスムーズになった。
この100日間で、私はただプログラムを書いただけではなく、それをソフトウェア工学の知識を用いて実践的に適用し、ソフトウェア開発のあらゆる側面で自身を成長させることができた。
得たもの2:論文を出す機会
100日間のプログラミングチャレンジを通じて、技術力だけでなく、研究成果を効果的に伝えるための文書能力も大幅に向上していた。この期間、私は日々のプログラミング作業を丁寧に記録し、成果や学びを週に2回のペースで教授に報告していた。この継続的なプロセスは最終的には以下のような貴重な機会を獲得することにつながった。
- 私のプロジェクトとその成果が認知され、AI-driven開発やソフトウェア設計について招待講演を行う機会を得た。
- 私の発表が研究会で評価され、賞を貰えた。これは、私の研究がソフトウェア工学において高い評価を受けた証拠であり、私のキャリアにおいて重要なマイルストーンとなると思われる。
- 研究への真摯な取り組みが評価され、公費でヨーロッパの学会に参加する権利を獲得した。この機会を通じて、自身の研究を国際的な舞台で発表し、将来的にはジャーナルを出そうと思っている。
この経験は、単に技術力を高めるだけでなく、コミュニティ内での自身の位置を確立する上で非常に価値があると思っている。日々のプログラミング作業を通じて培った技術力と文書能力は、論文発表や学術会議での受賞など、学術界における認知と影響力を高め、将来の研究やキャリアにおいて、私にとって強力な基盤となるだろう。
得たもの3:多くの人脈
100日チャレンジに取り組む過程で、プログラミング技術だけでなく、人との繋がりも大きく広がった。この人脈は、教授の紹介によって始まり、教授の同期であり会社の幹部である人物や、教授が業務上で関わる学会で繋がりのある別の教授との出会いがきっかけで、私の人脈は思いがけず拡がり始めた。
教授の同期には、様々な企業で幹部にとして活躍している方々がおり、これらの人々との接触は非常に有益だった。彼らはIT業界に関する深い知見を持っており、これらの知識を共有してくれた。また、このチャレンジをどのように進めるか、私はどのようにキャリアを進めれば良いか、といった相談も乗ってくれた。
また、研究会や学会に出席したあとの懇親会は、同じ分野の専門家や興味を持つ学生と交流する絶好の場である。教授の紹介でこれらのイベントに参加することで、研究や業界について学び、貴重なフィードバックを受ける機会に恵まれた。
初めは学術的なつながりから始まった人脈が、次第に社会的なイベントへと広がっていった。勉強会、バーベキュー、飲み会など、カジュアルな集まりに招待されることも増え、これらの場でリラックスした環境の中で人と接することができた。こうした非公式な集まりは、業界の先輩の方々がどのようなキャリアを積んできたか、といった周りの情報や背景をより深く理解する良い機会と、強固な関係を築く基盤となった。
100日チャレンジを通じて得られた人脈の拡大は、単に新しい関係を得ること以上の意味を持つ。これは新たな視点を学び、将来のキャリアにおいて貴重なアドバイスや機会を提供してくれる可能性のある繋がりを作ることを意味する。このように、100日チャレンジはプログラミングスキルの向上だけでなく、人生における貴重な出会いと経験を提供してくれた。
得たもの4: 優れた習慣
100日間のプログラミングチャレンジは、ただ技術力を高めるだけでなく、日々の生活においても優れた習慣を培う絶好の機会となった。朝から夜22時まで、毎日10時間以上プログラミングに没頭するこの経験により、仕事のような連続した集中作業を苦とせず、そんな日々の中でも楽しむことができる能力を身につけた。
毎日の長時間作業を通じて、ストレスを感じることは避けられない。しかし、このチャレンジはストレス耐性を自然と高めることに繋がった。ストレスを感じたとしてもそれに負けず、作業を続ける力が身についたのである。
ストレス耐性が向上したことで、ストレスとの上手な付き合い方も学ぶことができた。ストレスを完全に避けるのではなく、それと上手く付き合う方法を見つけ出した。例えば、作業の間に短い休憩を挟むことや、気分転換としての短期間の娯楽の取り入れ方などである。お昼や夜は知人と食事に行ったり、夜はDiscordでゲームするなど、周りとの関係は絶やさないようにしていた。明日も同じことをする必要があるため、夜はしっかりと寝て、また明日頑張れるようにすることに注力した。
このチャレンジを通じて確立されたのは、健全な生活リズムである。忙しい時でも、娯楽を取り入れたり、楽しいことを見つけたりすることで、ストレスのない健全な毎日を送ることができた。大変な作業が続く中でも、このようなバランスの取り方が、精神的な健康を保つ上で非常に重要であると実感した。
この100日間の経験は、技術的なスキルアップだけでなく、日々の生活における優れた習慣の形成にも寄与した。長時間の作業が苦でなくなること、ストレス耐性の向上、そして健全な生活リズムの確立は、このチャレンジを通じて得られた貴重な教訓である。仕事や日常生活においても、これらの習慣は大きな利点となり、今後もその恩恵を受け続けることだろう。
得たもの5: 内定を貰った。
私は、このチャレンジがあったことで、わずか3時間の就職活動により内定を2つ貰えた。100日チャレンジを通じて獲得した内定は、単なる就職活動の成果を超える重要なマイルストーンである。一般的な就職活動と私の経験を比較すると、その差異は顕著だ。
一般的に、新卒者や就職希望者は数多くの企業に履歴書を送り、複数の面接を経て内定を勝ち取る。このプロセスは半年以上に及び、時には選考のための試験や課題が課されることもある。多くの場合、この過程はストレスが伴う。半年に渡り毎週20時間以上費やす、というデータがあるが、私の周りの知人もみんなそのような感じである。
一方で、100日チャレンジを経験した私の就職活動は、わずか3時間という驚異的な短さで内定を獲得するに至った。この違いは、100日間の集中的なプログラミングという独自の経験がもたらした「実績」と「自信」に他ならない。
- 100日チャレンジは、具体的なプロジェクトの完成形を通じて、技術力と継続力を明確に示す。この実績は、履歴書や面接で語るだけの自己PRをはるかに超える、強力な証明となった。
- 人脈を入手したことで、教授や相手企業の人事部の社員など、多くの人を巻き込んで私の就職活動の支援を受けることができた。
- 学会発表という成果を見せることができたため、社会に認められているという証明をすることができた。
100日チャレンジは、単に技術力を高めるだけでなく、就職市場における競争力を大幅に向上させた。実績の提示、自信の表現、そして明確な差別化要因を提供することで、一般的な就職活動とは一線を画す結果をもたらした。このチャレンジを通じて獲得した内定は、プログラミングや設計のスキルの証明以上に、継続力、学習能力、そして目標に向かって真摯に努力する能力があることを示すものである。
まとめ
100日チャレンジは、プログラミング技術の向上だけに留まらず、自己成長とキャリア構築における顕著な効果をもたらす取り組みである。この挑戦を通じて、内定獲得、広範な人脈の形成、論文発表の機会、技術力の飛躍的な向上、そして生活習慣の改善という、測り知れない価値を手に入れることができた。これらの成果は、設計やプログラミングというスキルを越え、個人のポテンシャルを最大限に引き出すものである。
100日チャレンジの経験は、ただのプログラミング企画以上のものであり、自身の限界を超える挑戦であった。このチャレンジがもたらしたのは、新たな視点、新たな出会い、そして自己を超える勇気である。技術だけでなく、人間としての成長を促し、未来への確固たる一歩を踏み出すための貴重な機会を提供してくれた。
100日チャレンジで得た知識と経験を活かし、将来的には自らアプリを作成したいと思っている。
コメント