長期的にプログラミング技術を学び続け、 ビットコイン周辺を支えるエンジニアに向けて、私のエンジニア経験の中で役に立ったプログラミング学習技術を情報共有です。
お届けしたい層
この記事は、次の状況を想定して書きました。
ビットコイン周辺を支えるソフトウェア開発において、
- 長期的にプログラミング技術を学ぶかどうか悩んでいる
- プログラミング技術に本腰を入れて学びはじめた
- 今一度、プログラミング技術学習サイクルを俯瞰したい
とくにシニア級上達を一緒に目指す現役エンジニアさんへお届けしたいです。
プログラミングを進めよ
プログラミング技術は今日も豊かな生活を支えています。スマートフォンはもちろん、白物家電、クルマ、宇宙開発、ビットコイン、全方面が力を合わせて明るいネット社会が古きからありましたね!
過去、DXという変革の中において、美徳とされた価値観すら超越せんとする流れがあり、ユーモラスに語られて…!大いなる責任とともに、エンジニアという立場が社会に役立つ原動力となり、今のポジションがあります。これからも、基本的にはカオスを楽しみながら、手を動かしてエモさをコードに変えましょ
どんなサイクルでプログラミング学習するか
マイケル・ロンバルドとロバート・アイチンガーは 「人はおよそ70%を経験から学び、20%は観察学習や他者からのアドバイスによって学び、残りの10%は研修や書籍などから学ぶ」としています。私はプログラミング学習する際、この考えを体系化した経験学習モデルをサイクルに取り入れてます。
経験学習モデルで次の4つの段を回す際、それぞれのアクションを紹介します。
| 段 | アクション |
|---|---|
| 具体的経験 | ハンズオン、ペアプログラミング、文書を写す、読書会 |
| 内省的省察 | メモ・ソーシャルメディアの活用、目をつむって考える、ラバーダック・デバッグ(近年は対話型AIの壁打ちも活用) |
| 抽象的概念化 | 記事投稿、ソフトウェア文書を書く |
| 積極的実践 | ビットコイン使う、OSSへのコントリビュート、ハッカソン、サンプルコードを試す |
大前提、プログラミング学習に決まりはなく、時代や状況に応じて道具をアップデートするべきですが、未だ変わらないものもありますね。いずれにせよ、フィードバックの受けやすさを重視することで学びを得る機会が増えます。したがって、自身でコードを書くだけではなく、真剣に学ばんとする方のモチベーションをサポートできるよう、わかりやすい言葉ありきで語り合うことを大切にします。
サンプルコードに構成ファイル『flake.nix』を備え付けよ
現代のソフトウェア開発大半は、チーム開発であることが前提になるため、さまざまなサンプルコードをつくりながら相互に学びを深めていく必要がありますね!
そこで、サンプルコードに構成ファイル『flake.nix』を備え付けておくと、ユーザーはいつでも、どこでも、誰にでも動くソフトウェアを試してもらえるようになります。つまり、メイクファイルのようなものです。
もし『flake.nix』ファイルがあると、テストネット用のモックアップサーバー等の必要なビットコイン周辺ソフトウェアを、コマンド一発で立ち上がるようにすることも可能でしょう────
ちなみに、『flake.nix』ファイルをつくる前提コア技術はNixというパッケージ管理手法です。ちゃんと使えば再現性のあるビルド(Reproducible builds)という性質をもち、手元で一度動けばリモートの処理系でも同じ成果物をビルドできます。パッケージ管理ソフトとしては比較的、技術的困難があります。しかし、日本でソフトウェア開発の再現性を味わいにくくなっている中、安定したコア技術を次に学ぶ価値は大アリだと個人的に思います。この話は長くなるので本記事では詳細に触れませんが、次回から効率的に共有できるようシナジーある記事を編み出します。
どんなテーマを大切だと考えているか
チームでプログラミング技術を学習する上で私が大切にしている三つのテーマ(スタイルを合意・学習の負担を考慮・プライドを持って社会に貢献)を紹介します。
エンジニアの「スタイルを合意」できるチームに属せよ
エンジニアにはエンジニアのスタイルが存在し、日々テクニカル・ディスカッションがどこかで繰り広げられています。
下記は、その具体例です。
- オブジェクト指向ー関数型プログラミングーそれともマルチパラダイムデザイン(Multi-Paradigm Design)か……?
- モノリシックーマイクロサービスーそれともP2P型とのハイブリッドか……?
チームがどんなスタイルで書かれたマニュアルに重きを置き、淡々と進めるかは、もはやエンジニアの理とも呼べます。個人的には、テクニカル・ディスカッションをコトコト詰めることも有益であると感じますが、一つの答えに辿りつくのは技術的困難があるでしょう。しかし分かりあえた仲間がいればその結束は強いものです。
「学習の負担を考慮」せよ
様々なソフトウェア・サービスを無償で利用できる現代ですが、今もなお、プログラミング学習には金銭的な負担が残ってます。
- リアル書店の利用・書籍サービスのサブスクライブ
- 快適なネット回線
これらは学習のために絶対に必要とは限りません。しかし、ぜひとも、これからも変わらない生産性を伸ばしたくありませんか。
「プライドを持って社会に貢献」せよ
プログラミング技術は、上手に使えば私たちの生活を明るく豊かにしてくれますが、倫理がペアであってこそであり、そうでなければ社会に悪い影響を与えますね。かといって、技術の伴わない倫理のみが存在しても重大なバグで社会に悪影響を与えてしまうことがあります。ですから、技術と倫理のペアを同時に学ぶことは、エンジニアにとって大切なプライドだったはずですね。これからもプライドを持ちつづけ、社会に貢献できることの良さをあきらめずに伝えるつもりです。
エンジニアのビットコイン戦略
これまでは、米国カリフォルニア州、シリコンバレー周辺を発祥としてグーグルマップやフェイスブック、iPhoneなど数々のプロダクトが世界を変えましたね。そしてChatGPTです。いまや誰もがAIを無視できなくなっちゃいましたよね…!かつてのブルーオーシャン戦略はどんどん熾烈なレースに!私たちの理想郷はどこに残されているのでしょうか?どこから次のブレークスルーが起こっているのでしょうか??私はインターネットのお金ビットコインだと思います。ネット社会は物理的な所という負担を軽減し、ハイブリッドP2P相互運用でダイレクトに着呼できる現代、自由闊達にビットコイン使う時代が到来しつつあります。
インテルの創業者アンディ・グローブは、「パラノイアのみが生き残る(Only the Paranoid Survive)」と語っていますが、いかがでしたか?私は、ドキドキしながら、これからも10年後の当たり前をつくっていかないと、と一気に痛感してます。個人的には、今後ビットコインというレッドオーシャンすら楽しめるポジティブさでコラボしたいです。
ちなみに、リアルでビットコイン使う所『BTC Map』各地に!私も、アクションの際、楽しくお弁当を食べたりします♪