DUICUO

オープンソースの波の中でのプログラマーのキャリアプランニングと成長

オープンソース協会が年初に発表した「2020年中国オープンソース年次報告書」や全体的な環境から見ても、中国におけるオープンソースは成長傾向にあり、中国のオープンソースプロジェクトや開発者がますます注目を集めていることは明らかです。このようなオープンソース開発の大きな潮流を踏まえ、プログラマーはどのようにキャリアと個人の成長を計画すべきでしょうか?

[[423253]]

今日は2つのプロジェクトについてお話します。1つはApache Software Foundation傘下のトップレベルのオープンソースプロジェクトであるApache APISIXです。もう1つはKubernetesエコシステムにおいて、Kubernetes本体以外で最も頻繁に利用されているソフトウェアパッケージの一つであるingress-nginxです。Kubernetesに詳しい方なら、このプロジェクトを使ったことがあるはずです。

今日は主に4つの側面から私の考えをシェアしたいと思います。

  • オープンソース文化
  • オープンソースに参加する方法
  • 私の物語
  • キャリアプランニング関連コンテンツ
  • オープンソース文化を理解する
  • フリーソフトウェア運動

オープンソース文化について議論する際には、まずフリーソフトウェア運動を理解することが重要です。

右の画像は、1983年にGNUプロジェクトを提唱した、フリーソフトウェアの父として知られるリチャード・ストールマン氏です。1984年、ストールマン氏は著作権の対極にあるコピーレフトの概念を提示し、著作権によって課せられた厳しい制限を放棄しました。

1985年、ストールマンはフリーソフトウェアの開発を促進するため、フリーソフトウェア財団を設立しました。当時、多くのソフトウェアはプロプライエタリまたは商用であり、使用するには費用を支払わなければなりませんでした。ストールマンは、コンピュータが発展するにつれ、商用ソフトウェアや有料ソフトウェアがごく少数の企業によって支配され続ける限り、私たちは徐々に自由を失っていくと考えていました。多くの商用ソフトウェアやプロプライエタリソフトウェアは、営利企業やごく少数の人々によって支配されていたため、これらのソフトウェアに依存していれば、他者に依存し、命綱を彼らの手中に収めることになり、自由は決して得られないだろうと考えました。

1989 年に、GNU の最初の一般ライセンスである GPL が導入されました。

次に、フリーソフトウェア運動の後に何が起こったのかを見てみましょう。皆さんの多くはLinuxオペレーティングシステムをご存知でしょう。Linuxの創始者はリーナス・トーバルズです。彼は1991年に初めてLinuxオペレーティングシステムをリリースし、そのソースコードをインターネットに直接公開して、他の人が使用し共有できるようにしました。

この時、ストールマンはリーナス・トーバルズに接触しました。GNUフリーソフトウェア財団の主な目標は、誰もが使えるオペレーティングシステムを含む基盤ソフトウェアを作成することでした。1991年にLinuxがリリースされた時点で、GNUフリーソフトウェア財団は基盤となるフリーソフトウェアの開発をすべて完了していましたが、コアとなるオペレーティングシステムの開発はまだ完了していませんでした。そこで、ストールマンはリーナス・トーバルズに接触しました。ご存知の通り、Linuxオペレーティングシステムの正式名称はGNU/Linuxです。

オープンソースのコラボレーションと文化

フリーソフトウェア運動と Linux オペレーティング システムについて説明した後、現在私たちが直面しているオープンソースのコラボレーションとオープンソース文化について見てみましょう。

開ける

オープンソースコラボレーションの基本原則はオープン性です。しかし、多くの人がオープンソースコードと真のオープン性は同じだと誤解しているようですが、それは正しくありません。オープンソースコードと真のオープン性は同じではありません。簡単な例として、MongoDBが挙げられます。

MongoDBはドキュメント指向データベースです。近年、MongoDBはライセンス(SSPL)をServer Public Licenseに改訂しました。その後、どのような変更があったのでしょうか?新しいライセンスでは、クラウドサービスでMongoDBを使用するすべてのクラウドプロバイダーは、管理インターフェースのソースコードを含む、MongoDBに加えられたすべての変更をオープンソース化することが義務付けられています。

皆さんはこれが可能だと思いますか?

それは実際には不可能です。どのクラウドプロバイダーにとっても、基盤となるソフトウェアやオープンソースソフトウェアへの変更は、その中核であり、生命線です。したがって、MongoDBの最近の変更は、これらのクラウドプロバイダーを対象としています。オープンソースソフトウェアの基本契約では、これは本質的にクローズドなプロトコルです。

さらに、Elasticsearchは最近SSPLの採用を発表しました。これを受けてAWSは、これまでApacheライセンスでライセンスされていたコードのバージョンをフォークし、OpenSearchと名付けました。これもまた、こうした閉鎖的な慣行への対応です。

コラボレーション

オープンソース文化においてもう一つの重要な点はコラボレーションです。Linuxオペレーティングシステムがなぜ成功したのでしょうか?それは、1991年にリーナス・トーバルズがLinuxの最初のバージョンをリリースし、ソースコードをインターネット上で直接公開し、他の人がダウンロードして改変できるようにしたからです。

1991 年に Linus Torvalds が Linux の最初のダウンロード可能で使用可能なバージョンをリリースしたとき、フリーソフトウェア財団には GNU 用のカーネルを作成していた他の人たちもいましたが、Linux ほど完成されたものはありませんでした。

なぜそれ以上発展しなかったのでしょうか?それは、限られた少数の人々によって行われたからです。外部の人々がそれを知ったのは、あるバージョンが一般公開された後のことでした。これが、大聖堂と市場という概念につながります。この概念はどういう意味を持つのでしょうか?

こう考えてみてください。従来のソフトウェア開発は、選ばれた少数のエリート職人だけが関わる大聖堂の建設に似ています。一方、オープンソースソフトウェアはオープン性とコラボレーションを推奨し、ソフトウェアを誰もが自由に協力し、それぞれの成果を貢献できる巨大な市場と捉えます。これらの概念を解説した『The Cathedral and the Bazaar(大聖堂とバザール)』という書籍がありますので、興味を持っていただけるかもしれません。

オープンソースソフトウェア

オープンソースの哲学について説明してきたので、最後にオープンソース ソフトウェアについて話しましょう。

オープンソースソフトウェアの前提条件はオープンソースコードであり、これは不可欠です。さらに、すべてのオープンソースソフトウェアにはオープンソースライセンスがあります。MongoDBについて先ほど述べたように、そのライセンスは認められていません。オープンソースソフトウェアの中核となる価値観は、非差別性、中立性、そしてオープン性です。

中国のオープンソース・エコシステムは現在活況を呈しており、多くのプロジェクトがApache Software Foundation、CNCF、Linux Foundationといったオープンソース・ソフトウェア財団に加盟しています。Apache APISIXをはじめとするこれらのプロジェクトの多くは、Apache Software Foundation傘下のトップレベル・オープンソース・プロジェクトであり、非常にオープンでユーザーフレンドリーなプロトコルであるApache 2.0ライセンスに基づいて配布されています。

オープンソースに参加する方法

オープンソースへの参加について、多くの人が誤解しています。オープンソースソフトウェアを使用し、GitHubに問題やプルリクエストを提出すれば、オープンソースプロジェクトに参加したことになると考える人もいます。また、ソフトウェアやプログラムを作成してGitHubに公開し、コードを公開すれば、オープンソースに貢献したことになると考える人もいます。しかし、これは正しくありません(ただし、オープンソースプロジェクトへの貢献は認められています)。

オープンソースを実施するための前提条件は、オープンソース文化を受け入れることです。

オープンソース文化の中核となる原則は、平等性、中立性、オープン性、一貫性、そしてドキュメントの優先性です。一貫性とは一体何を意味するのでしょうか?それは、ソフトウェアが、ある環境でも別の環境でも、同じ結果を生み出すことを意味します。

では、オープンソース プロジェクトはどのように選択すればよいのでしょうか?

私の個人的な見解としては、何よりもまず興味が原動力となるべきです。特に興味のないプロジェクトを選ぶことはしません。持続不可能だからです。多くの人から「オープンソースに参加することで何が得られるのですか?なぜそんなに多くの時間とエネルギーを費やすのですか?」と聞かれますが、オープンソースプロジェクトへの参加初期段階、あるいは長期間にわたる活動では、実際には何の利益もありません。特に物質的な利益はありません。だからこそ、自分が興味のあるものであるべきだと強調したのです。

第二に、継続的な投資が不可欠です。オープンソースプロジェクトでは、継続的な投資ではなく、思い出した時にだけ参加するだけでは、大きな価値を生み出すことはできません。

最後に、比較的活発なコミュニティを選ぶべきです。プロジェクトのコミュニティが非常に低活動だと、プロジェクトに参加するのが難しくなります。例えば、Issueやプルリクエストを送信しても、返信が来ることはほとんどありません。

ここでは比較対象として、Apache APISIX、Kong、tykの3つのプロジェクトを挙げました。現在、Apache APISIXは最も活発な活動レベルを誇っており、多くの開発者が日々Apache APISIXコミュニティに参加し、他の開発者の質問に答えたり、プルリクエストを送信したりしています。このような活発なコミュニティでは、誰もが成長し、恩恵を受けることができます。

オープンソースのコラボレーションにおいては、中立性も非常に重要な価値です。コードを提出するにしても、他の人の問題に対応するにしても、それらは二次的な要素だと思います。最も重要なのは、平等、尊重、そして中立という姿勢に基づいてプロジェクトに参加することです。

現在、私はApache APISIXの2つのサブプロジェクト、APISIX ingressとKubernetes ingress-nginxに主に関わっています。どちらもKubernetesコントローラープロジェクトであり、似たようなことを行っています。しかし、これらのオープンソースプロジェクトへの参加を通して、私は中立的な立場を貫いてきました。Zhiliu Technologyで働いているからといって、APISIX ingressプロジェクトを過度に推進したり、ingress-nginxの開発を制限したりすることはありません。そのようなことは決してありません。だからこそ、中立的な考え方が重要であり、中立的な考え方を維持することによってのみ、オープンソースプロジェクトに継続的に参加できるのです。

私の話をさせてください

私のキャリアパス

次に、私の成長プロセスとキャリアプランの選択についてお話します。

最初の仕事はWeb開発エンジニアで、主にバックエンド開発を担当していましたが、フロントエンド開発や運用/DBA業務も担当していました。2番目の仕事は運用開発で、運用業務も多少担当しましたが、私の主な業務は開発でした。その後、コンテナ化開発に転向し、現在はZhiliu Technologyの技術エキスパートとして、主にオープンソースのインフラソフトウェアに取り組んでいます。長年にわたり、フロントエンド、バックエンド、運用、データベース、ミドルウェア、インフラソフトウェア、そしてコンテナ化技術に携わってきました。これが私のキャリアパスです。

多くの人から、特に人事部とのやり取りで、この質問をよく受けます。「なぜWeb開発から運用開発に転向したのですか?それが最初の質問です」。そして、「なぜ運用開発から基盤ソフトウェアの開発に移り、その後オープンソースプロジェクトにフルタイムで取り組むようになったのですか?」と聞かれます。

私がWeb開発を始めたのは7、8年前で、当時はサーバーのRAM容量は32GBか64GBが一般的でした。今、私のノートパソコンのRAMは32GBしかないので、当時のハードウェアリソースがいかに限られていたかは想像に難くありません。実際のバックエンド開発では、業務量が増えると、パフォーマンス最適化の作業をたくさん行います。

当時は最適化に多くの時間を費やしていました。今でこそパフォーマンスの問題は簡単に解決できるかもしれません。マシンを追加して容量を拡張するだけで済むかもしれません。しかし当時は、誰もがまずパフォーマンスの最適化、つまりリソー​​スを最大限に活用する方法を考えていました。まさにそれが私たちの仕事でした。その過程で、私はより低レベルの作業を担当していました。

2014年にDockerを使い始めました。Dockerは2013年に初めてオープンソース化され、私は中国でDockerを早期に導入した一人です。コンテナ化をはじめとするこれらの基盤技術に大変興味を持っています。キャリアパスを選ぶ際に、Web開発から運用開発に転向しました。運用開発では当初、運用プラットフォーム化、運用自動化、GitOps、ChatOpsといったプラットフォーム開発に重点を置いていました。

コンテナオーケストレーション技術の競争においてKubernetesが王者として台頭すると、多くの企業がコンテナ化に向けたシステム変革を開始し、私たちもコンテナプラットフォームとしてKubernetesを選択しました。当時、私はコンテナ化技術に関する経験が比較的豊富だったため、自然と関連業務に携わるようになりました。

その後、仕事を選ぶ段階になって、もっと自由を求め、自分の興味に合った仕事がしたくなりました。企業内のプロジェクトに携わるだけでは自由度が足りなかったので、今はフルタイムのオープンソースの仕事に就いています。好きな時に、働きたい時に働けるんです。

情熱を仕事にしてしまったと評される方もいます。確かにその通りです。たとえこの仕事がなくなっても、オープンソースの仕事は続けたいと思っています。仕事中も余暇もオープンソースに取り組んでいます。明確な境界線はありません。これが私の現在の状況です。フリーランスでフルタイムのオープンソースエンジニアとして働いています。

キャリアプランニング

次に、キャリアプランニングについて見ていきましょう。私の具体的な状況は気にされないかもしれませんが、オープンソース環境でどのようにキャリアプランニングを行うのかはご存知かと思います。

現在、オープンソースプロジェクトとソーシャルメディアの両方に携わっています。キャリアプランニングにおいて最も重要なのは、自分の興味に基づいて考えることだと考えています。1日は24時間しかありません。睡眠時間を差し引いた後、興味のない仕事をして常に不幸を感じていたら、それは本当に惨めなことです。ですから、自分が楽しくて興味のある仕事を選ぶことが何よりも重要です。それが第一のポイントです。

2つ目のポイントは、コアとなる競争力です。私たちはプログラマーであり、フロントエンド開発者、バックエンド開発者、運用エンジニア、あるいはその他の開発職種であっても、技術スキルこそがコアとなる競争力です。最近よく使われる言葉に「退化」があります。なぜ退化は不安を引き起こすのでしょうか?この不安はどこから来るのでしょうか?

私の理解では、不安は他の人が何かを学んでいるときに生じ、他の人が何かを知っていて自分が知らないときにも不安を感じ、他の人が何かを知っていて自分が知らないときにさらに不安を感じ、他の人が何かについて話しているときに自分がまったくわからないときにも不安が生じます。これらはすべて不安の原因です。

では、この問題にどう対処すればよいのでしょうか?答えは、コア競争力を強化することです。まず、最も興味のある分野を選び、技術スキルを深めましょう。こうすることで、コア競争力を継続的に向上させることができます。技術の深みは氷山のようなものです。表面からはほんの一部しか見えませんが、その下には膨大な知識が隠されています。

テクノロジーの奥深さは無限です。ある程度の技術的深度に達すると、技術者の間で不安感が高まっていることに気づくでしょう。もしあなたが長い間この感覚を味わっておらず、自分はすべてを知っていて、どんな問題でも解決できると思っているのであれば、オープンソースプロジェクトに参加したり、他の人とネットワークを築いたり、転職を検討したりして視野を広げる必要があるかもしれません。例えば、遭遇するほとんどの問題をカバーできるほどの技術的深度に達したら、次は技術的な幅を広げることに注力することをお勧めします。

3点目は価値についてです。価値の概念は非常に広範で、職場において最も直接的に現れるのは給与です。もちろん、給与は価値の一側面に過ぎません。もう一つは、仕事から得られるものという側面です。

最初のポイントに戻りましょう。それは、仕事に満足しているかどうかです。もし給与に満足していて、仕事に喜びを感じているなら、あなたは利益を得ていると言えるでしょう。なぜなら、会社が提供するのは雇用関係であり、実質的には給与だけだからです。もしあなたが仕事に喜びを感じているなら、あなたは実際に何かを得ていると言えるでしょう。喜びを見つけることこそが、私が価値について強調したい最初のポイントです。

さらに、仕事の過程では、決して一人で戦っているわけではありません。協力者も得られます。これが 2 つ目のポイントです。

第三に、この仕事はあなた自身の価値を高める機会にもなります。この価値とは、心理学や社会学で言うところの「承認」、つまり他者や社会から認められることと理解できます。これもまた、あなたの価値の一部です。

プログラマーの副業

最後に、プログラマーの副業についてお話しましょう。皆さんも興味があるかもしれません。副業について話すときは、まず自分が何ができるかを見極めるべきです。自分の能力の範囲内で行動することが常に正しいアプローチです。何かが得意ではない、あるいは理解していないことを認めるのは全く問題ありません。得意ではないことを無理やりやろうとすると、良い結果は得られないかもしれません。

個人的に取り組んでいることについて少しお話しします。以前、「Kubernetesハンズオン実践」というコラムを執筆しました。その後、「Dockerコア必須知識」というコラムも執筆しました。この分野については比較的経験があるのですが、ここであまり詳しく書くと宣伝みたいになってしまうので(笑)、今回は割愛させていただきます。WeChat公式アカウント「MoeLove」をフォローしていただければ、役立つ技術やコンテンツを共有させていただきます。

多くの人が「何ができるの?」と聞いてくるかもしれません。実際にはできることはたくさんあると思います。それは本当に個人の選択次第です。副業の最も直接的なメリットは金銭的な利益のように思えるかもしれません。しかし、投資する時間と労力を考慮すると、得られるリターンはごくわずかかもしれません。家族と過ごしたり、愛する人とデートしたり、旅行に出かけたりする方が、はるかに大きなリターンを得られるかもしれません。基本的に、選択肢は二つあります。時間をお金と交換するか、お金を時間と交換するかです。若い時に多くのことを逃すと、非常に後悔することになります。ですから、皆さんには、自分の状況に基づいて選択肢を比較検討することを強くお勧めします。

本日の共有はこれで終了です。簡単にまとめると、前半では平等、中立、自由というオープンソース文化について議論しました。次に、オープンソースへの参加方法について話し合い、正しいマインドセットを持ち、個人の興味に基づいて参加することの重要性を強調しました。最後に、個人の成長について触れ、それぞれの状況に応じてキャリアを合理的に計画することを勧めました。ありがとうございました。