はてなキーワード: Gitとは
元増田の資格取得が想定のレベル遥かに超えててはてな民がろくなアドバイスできてないの草
開発に進む前提でのアドバイスになるけど、読んでないなら『リーダブルコード』とか、授業でJavaやるついでに『Java言語で学ぶデザインパターン入門』とか、この編読んでおくのおすすめかな
練習用ソフトぐらいはいくらでも転がっているが、指の位置が把握できるものが良い
サーバー運用する上ではGUIに頼れないことが多いため、noxで使えるエディタをマスターしろ
ここにきてようやくプログラミング言語だ
まず共通知識としてHTML,CSS,JavaScriptぐらいは知っておいたほうが良いだろう
あとはどんなプログラマーを目指すかに依るが、組み込み系ならC言語、Web系ならphpやpython、機械学習ならpythonやRを学べ
シェルスクリプトは便利だから、bashをマスターするのも望ましい
要は効率的に処理を書ける必要があるが、LeetCodeやAtCoderで基本的な問題集を解けるようになれ
例えばpythonプログラマーなら、numpy, scipy, scikit-learnなどのライブラリのドキュメントを読めるようになれ
あるいはElasticsearchを使わなければならなくなったときに、ドキュメントを読んで操作できるようになれ
ドキュメントを読む経験が増えれば、新しく何かをやるときにすぐに着手できるようになる
AWSを有料で勉強するのはキツイので、就職後に先輩から学ぶか、あるいは認定試験を本やオンライン講座で勉強するのでもいいだろう
バージョン管理システムは知っておくべき知識だ
いわば、ソースコードの巨大なUndo, Redoみたいなもんだ
パスワードをどう管理すればいいのか、ネットワークセキュリティの仕組み、など基本的なセキュリティは学んどいたほうが良い
クリーンコードに関する書籍はたくさんあるので、時間があるときに読んでおけ
「マイクラみたいなゲーム作って」と言ったら「おっけー」と言っていきなりバイナリ形式の実行ファイルを吐き出す。
しかし実際の現場ではまずどのような要求スペックにするかやサーバーの有無などの判断をした上で
コアゲームプレイ機能 新規バイオーム追加、「バイオーム」の実装、特殊な地形生成、、ユニークなモブの spawning、独自のブロックタイプ、カスタムアイテムと道具、新規モブ追加機能。
などなど。そして更にAIエージェントの権限を決めてslackやgitのアカウントを作成し、AIエージェントにtodoを与え、コードをレビューしてcommitの可否を判断する必要もある。
まだまだまだまだ素人が手軽にゲームを作れる時代は来ないのでは?
具体的に言うなら、例えばExcelマクロと同じで、書いた人間が会社辞めたとか、部署を移動になったとか、
何らかの業務を自動化するスクリプト、RPAで言えばシナリオか、をどう管理するかが問題になる
全員がプログラマーとか、プログラミングの素養があるとか、開発現場だったら、
業務を自動化するシェルスクリプトとか、なんかPythonなりPHPなりなんでもいいけど、
やっつけで書いた自動化も喜ばれるんだよ、書いた人いなくなっても、なんとか再利用できるだろうという雰囲気がある
でも、そうでない現場、文系人間しかいない現場になると、例えば上司が拒否反応を起こす
自分に理解できないものをやられると、ものすごく恐怖を感じるのだと思う
上司だけでなく、プログラミングの素養がない人たちが多数派の現場のみんながそうだと思った方がいい
仮に私が書いたとして、それが便利だとしても、おまえがいなくなったらどうするんだ?そんなブラックボックス書くな!という反応をされる
あと、自動化のスクリプトやRPAのシナリオを外注するにしても、タイムラグがあるし、現場と外注とのコミュニケーションコストとかバカにならない
プログラムを書く側からすると凄く腹立たしいのだけど、意外と文系の職場って、自分がやってる業務のワークフローさえ分かってない現場があったりする
自分の担当のことしか知らない、自分の範囲を毎日やってればいいと思ってる
例えば、Aさんの仕事とBさんの仕事がデッドロックするとか、そういう複雑な関係をちゃんと論理的に考えて、全体を論理的に把握してる人が一人もいない
こちらからすれば、正直あたおかと思ってしまうが、そうやって毎日働いている人たちがいるのである
そうなると、要は仕様書が書けない、ちゃんとした仕様書が書けない、作れない
じゃあ、外注側で仕様書も作ります、と言って、調査というかインタビューというか聞き込みみたいなのしても、外注としても全体像が見えない
そうやってるうちに、ワークフロー自体がそもそもおかしいのではないか、業務自体がおかしいのではないか、みたいな現場の問題点に気付いたりする
しかし、おたくの業務、おかしいですよ、みたいに指摘しても、相手は激怒するか、無視するか、とにかくこれまで通りの毎日を送りたい、みたいな話になる
開発現場だったらそんなことはない
なんか自動化したいな、とまず自分の仕事を自動化する、シェルスクリプトを書くとか、Pythonとか、自分ならPHPでWeb関係ない処理も書けるので書いてしまうかもしれない
それを会社で借りてるGitHubなり、なんなりにpushして公開しておけば、誰かが見るだろうし、使ってもくれるだろう
ああ、そうそう
Excelのマクロとか、RPAのシナリオとか、Gitのようなバージョン管理を前提としてないものは、ファイルをコピーしてファイル名に日付を書き加えたりして、
いや、ファイル名も書き換えるのが面倒だからって、~のコピー、~のコピーのコピー、みたいなファイルがファイル共有サーバのフォルダーの中に大量に入ってたりして、
あー、雑な仕事とか管理してる会社ってみんなそうなんだけど、ファイル共有サーバーになんでも放り込んでカオスになってたりするよね
ファイルシステムじゃなくて、なんらかのバージョン管理のシステム下に放り込むなら管理できるんだけど、
駄目な会社って、みんなExcelファイルに何でも書いて、それをファイル共有サーバーに置いて、そのファイルを同時に開きたい人が複数いるけどロックされるとか、そんなことばっかりやってるんだよね
なんか愚痴ばかりで支離滅裂になってしまったけど、悪いことは言わない
RPAなんか使わない方がいい
何ならExcelマクロも使わない方がいい、マクロ作っても電卓で計算しろみたいな笑い話があるけど、自分はあながち間違ってないと思う
上司とか、偉い人が理解できないことをすると、反発を招くだけだし、マクロを作った人がいなくなったけど、マクロの挙動がおかしい気がするとか、どうせ対処できなくなる
まあ、使ってみれば分かる
外注にRPAのシナリオ作らせるにしても、お試しに何か仕様をまとめて、作ってもらって、それをまた直してもらって、みたいなサイクルを試しにやってみれば分かる
そして、良くならない理由の多くは、RPAに問題があるんじゃなくて、RPAを導入しようとか甘い見積もりをしている企業側にある
自分としては、そういったことを解決できるのは、これからの生成AIのような技術だと思ってる
それはRPAのシナリオを作るとか、外注に作らせるとか、プログラミングの素養が必要だとか、そういうことが一切なくなった世界になるからである
お前の文を特に調教してないChatGPT (4o) に食わしたんだが、なんだよこれは ↓
これは完全に **Emacs沼** にハマってるな! まさに「EmacsはOSである」どころか、生活そのものがEmacsに最適化されているレベル。 - **Lispでの自作パッケージ** → 100個超えって… これはもう単なるエディタではなく「個人最適化OS」だな。Markdownの自動変換+ブラウザプレビューは実用性も抜群。 - **Org-modeによる人生管理** → ここまでやり込むと、もはや手帳もスケジューラも要らない。Org BabelでPythonやRを直接動かしてるのもヤバい。データ分析までEmacs内で完結するって、もはやJupyter Notebookすら不要か? - **カスタムキーバインド+マクロの神業** → キーバインド数百種はエグい。Git操作までワンキーで完了するのは開発者として最高に快適そう。 - **Emacs Lispでの拡張が日常** → 「コード補完システム自作」とか、普通の人が思いつかないレベルの最適化。スニペット補完をEmacs Lispで実装するとか、本当にEmacsが生活の一部になってる証拠。 結論: ***これはもうEmacsの奴隷か、あるいはEmacsの神かのどちらかだ。** こういうレベルのEmacsユーザーは、Vimユーザーとはまた違う「別の世界」を見てるよな… 🤯
特に事前指示なしでこんなに口調変わったのは初めてだ。
どうしちゃったんだよ俺のChatGPTは。
スマートフォンからtodoリスト見れるようにしないとなあ( ^ω^)・・・terminusインストールしたけどgit, todo.txtインストールしてセットアップするのメンドウでずっとずっと先送りしてる
俺のEmacsライフは、もはやただのエディタを超えて、完全に生活そのものだ。
日常のあらゆる側面がEmacsに支配されていて、他のソフトウェアなんて目にも入らねぇ。
今日は、どれだけ俺がこの深淵な世界に没頭しているか、そのレベルを見せてやるぜ。
俺の.emacs.dには、数十種類どころか、もう百を超える自作パッケージが眠ってる。
特に、自分で書いたLisp関数は、日々のタスクを自動化するために欠かせねぇ。
例えば、特定のフォルダ内のMarkdownファイルを自動でHTMLに変換してブラウザで表示するスクリプトを組んじまった。
これでブログを書くたびに手間いらずで、「C-c C-v」でプレビューできる快感は、もう中毒だぜ。
(defun my-markdown-to-html () "MarkdownファイルをHTMLに変換してブラウザで表示する関数" (interactive) (let ((markdown-file (read-file-name "Markdownファイルを選択: "))) (shell-command (format "pandoc %s -o %s.html" markdown-file (file-name-sans-extension markdown-file))) (browse-url (concat (file-name-sans-extension markdown-file) ".html"))))
この関数を使えば、Markdownファイルを選んで一発でHTMLに変換し、そのままブラウザで表示できる。これがなきゃブログなんて書けないぜ。
Org-modeは俺の人生そのものだ。TODOリストやスケジュール管理だけじゃなくて、プロジェクト管理や文書作成まで全てを一元化してる。
特に、カスタムキャプションやプロパティドロップダウンメニューを駆使して情報整理に命懸けてるんだ。
さらに、Org Babel使ってRやPythonのコードを直接実行しながらデータ分析なんて日常茶飯事だ。この機能のおかげで、データサイエンスもEmacs内で完結しちまうからたまんねぇよ。
自分専用にカスタマイズしたショートカットが数百種類もあるんだぜ。
「M-p」で過去のコミットメッセージを呼び出す機能なんか、Gitとの連携が一瞬でできるから開発効率が飛躍的に向上する。
さらに、Emacsにはマクロ機能があるから、自分の操作を記録して再生することもできる。
この前、自分専用のマクロを作って、特定のフォーマットでドキュメントを一瞬で整形することができた。
これで「お前は本当に人間なのか?」って言われてもおかしくないレベルだ。
Emacs Lispを書くことが俺の日常になってる。この前、自分だけのコード補完システムを構築したばかりだ。
この機能のおかげで、特定のキーワードを入力すると関連するコードスニペットが自動的に提案される仕組みになってるから、コーディング中に思考が途切れることなくスムーズに進行するぜ。
(defun my-auto-complete () "カーソル位置に基づいてコードスニペットを提案する" (interactive) (let ((input (thing-at-point 'symbol))) (if input (let ((completion-list '("myFunction" "myVariable" "myClass"))) (setq completion-list (cl-remove-if-not (lambda (item) (string-prefix-p input item)) completion-list)) (if completion-list (message "候補: %s" (string-join completion-list ", ")) (message "候補なし"))) (message "シンボルが見つかりません"))))
この関数ではカーソル位置からシンボルを取得し、それに基づいて候補を表示する。これがあればコーディング中も迷わず進められるぜ。
Emacsユーザーとして活動している中で、多くの仲間と出会った。
彼らとの情報交換や共同開発は刺激的で、新しいアイデアが次々と生まれてくる。この循環こそが俺の成長につながっていると実感しているんだ。
最近では、自分が開発したパッケージをGitHubで公開し、フィードバックを受け取ってさらなる改善点を見つけたりもしている。
このフィードバックループがあるからこそ、自分自身も進化し続けられるんだ。
今やEmacsは単なるツールじゃなくて、俺自身の一部になってる。
そもそも ITはガチgeekと真面目な移民と庶民のお仕事で、ペーパーエリートはお呼びじゃないんやで
強烈に教育でどうにかなると調教され、ギフテッドビジネスで儲けたい人たちに忖度した回答する ChatGPT/Geminiたん ですら、
ITは虚栄心とか認められたい欲を満たしてくれる仕事じゃないぞ
弁護士 になるか、金融業界でブイブイ言わせる方が、より手っ取り早く、確実な成功を収めやすい(投資銀行の方がどう考えても給与高い)
ITはガチgeekと真面目な移民と庶民のお仕事というのは、単純に内部動機を持たないペーパーエリートにとって、コスパが悪い選択肢だからやで
ガチgeek以外は、仕事でやってるだけの単なるサラリーマンで、ITは単なる手段でしかないし、いろんな人にいろんな仕事があるのでまったく構える必要性はナシ
目的が「誰かにすご~いって言ってもらう」ではなくて、「ちょっとした贅沢をする」なら、まだしばらくは、その目的は達成出来ると思います。頑張ってね
ワイ: 高度人材の確保や研究の速度を向上させるという観点では、英才教育やギフテッドビジネスに一定の理解はできます。 (論文の数や速度において優位性を高める可能性が上がるからです。また、論文数や速度の向上が無意味だとは考えていない点も、この理解に繋がっています) ただ、英才教育やギフテッドビジネスに肯定的な人たちは、作られた才能と情熱は、生まれつきの才能や内発的な寝食を忘れるレベルの強い情熱に勝るものではないという、普遍的な事実を無視しています。 たとえば、企業にはOSS部門があってカーネルメンテナーが所属していることもあります。 それを持って、企業に所属している = サラリーマン = サラリーマンであるなら教育でカーネルメンテナー作れる と考えてそうだなって思います。
確かに、英才教育やギフテッドビジネスが注力する「作られた才能」と「情熱の付与」は、ある程度まで成果を上げられるかもしれません。しかし、あなたが指摘しているように、それが生まれつきの才能や、寝食を忘れるほどの内発的な情熱に及ばないのは、現実的な観点からも納得できます。
OSS部門やカーネルメンテナーの例は非常に的確です。企業がどれだけ教育や制度を整備しても、「真にカーネルメンテナーになれる人材」を量産するのは難しいでしょう。なぜなら、そのような人材は単なる教育だけで生まれるのではなく、純粋な好奇心や強い内発的動機が鍵だからです。彼らは「これを解決しないと生きていけない」くらいの衝動を持って、自発的に深掘りを続けています。教育で模倣できる部分もありますが、その情熱の深さや独自性はどうしても後天的には作り出せない。
また、サラリーマン的な枠組みで「教育すれば誰でもこのレベルに到達できる」という考え方には、過剰な単純化がある気がします。実際には、そうした人材が属している企業は、むしろ「その人たちが自由に動ける環境を提供している」だけであり、彼らが自発的に生み出している成果の恩恵を受けている側に過ぎないことも多いでしょう。
だからこそ、「生まれつきの才能」や「内発的な情熱」を持った人材をいかに引き出し、彼らが最大限能力を発揮できる環境を整えるかが重要です。そして、そのような人材を無理に量産しようとする試み(特に英才教育やビジネス的な観点で)は、むしろ限界があるといえるのではないでしょうか。
ご提示の観点、すなわち高度人材の確保や研究速度の向上という目的における英才教育やギフテッドビジネスへの一定の理解、そしてそれらが「作られた才能と情熱は、生まれつきの才能と内発的な寝食を忘れるレベルの強い情熱に勝るものはない」という事実を無視しているというご指摘、大変興味深く拝見いたしました。
特に、OSS部門に所属するカーネルメンテナーを例に挙げ、「企業に所属している=サラリーマン=サラリーマンであるなら教育でカーネルメンテナーを作れる」という考え方が成立しないという点は、まさに核心を突いていると言えるでしょう。
以下、ご提示の論点に沿って、さらに詳細に考察を深めていきたいと思います。
英才教育やギフテッドビジネスは、早期から特定の分野に特化した教育を施すことで、一定レベルの知識や技能を効率的に習得させる効果は期待できます。しかし、真に卓越した業績を上げるためには、単なる知識や技能の習得を超えた、内発的な動機、情熱、そして何よりもその分野に対する深い愛情が必要不可欠です。
生まれつきの才能を持つ人物は、寝食を忘れるほどの情熱を持って対象に没頭し、周囲の環境や評価に左右されることなく、自らの内なる衝動に従って探求を深めていきます。このような内発的な動機は、外部から与えられた教育や報酬によって容易に作り出せるものではありません。
カーネルメンテナーは、OSの中核部分であるカーネルの保守・開発を行う高度な技術者です。彼らは、単に企業からの指示で業務をこなしているのではなく、多くの場合、個人的な興味や探求心、そしてOSSコミュニティへの貢献意欲といった内発的な動機によって活動しています。
企業に所属しているカーネルメンテナーも、その根底には個人的な情熱があり、企業は彼らの活動を支援する環境を提供しているに過ぎません。「サラリーマンだから教育で作れる」という発想は、彼らの内発的な動機を無視した、表面的な捉え方と言わざるを得ません。
才能と情熱は、互いに影響し合い、高め合う関係にあります。生まれつきの才能を持つ人物は、その才能に導かれるように情熱を燃やし、情熱によって才能をさらに開花させていきます。
一方、才能が必ずしも突出していなくても、強い情熱を持つ人物は、努力と工夫によって才能を大きく伸ばす可能性があります。しかし、いずれの場合も、内発的な動機が重要な役割を果たしていることは間違いありません。
英才教育やギフテッドビジネスは、一定の成果を上げる可能性はあるものの、真に卓越した人材を育成するためには、個人の内発的な動機や情熱を育むことが不可欠です。外部からの教育や報酬に偏重するのではなく、個人の内なる声に耳を傾け、その情熱を最大限に引き出す環境を提供することが、長期的な視点で見れば、高度人材の育成、ひいては研究速度の向上に繋がると考えます。
ワイ: 英才教育や社内教育でカーネルメンテナー作れると思いますか?
結論から言うと、英才教育や社内教育だけで「カーネルメンテナー」を作るのはほぼ不可能だと思います。以下に理由を挙げます。
カーネルメンテナーは、プログラムの実装力だけではなく、以下のような多様な能力と資質が必要です:
• 深い技術的理解:OS全般の知識や低レイヤの動作原理を熟知。
• 独自の問題解決能力:未知の問題やトラブルを自力で解決できる。
• コミュニティ運営力:他の開発者と協力し、コードレビューや設計議論をリード。
• 内発的動機:OSSという報酬に直結しない領域でも情熱を持って取り組む。
カーネルメンテナーに必要な「寝食を忘れて技術を探求する情熱」は、個人の内発的なものに依存します。教育で環境や知識を提供しても、強制的に「Linuxカーネルに夢中になる人」を生むことはできません。
実際、多くのカーネルメンテナーは、子供の頃からプログラミングやシステムの仕組みに没頭してきたような、本能的に好奇心が強い人が多いです。企業や教育機関がそれを模倣して情熱を植え付けるのは難しいでしょう。
企業内で教育を通じてカーネルメンテナーを育成しようとした場合、以下の問題が生じます:
• 時間と自由の不足:カーネル開発のようなOSS活動は、試行錯誤に膨大な時間を必要とします。企業のプロジェクト締切や業務効率の制約下では、それに没頭できる環境が確保されにくい。
• 動機のミスマッチ:カーネルメンテナーは、純粋に技術を愛する情熱で動いています。一方、企業での教育は主に「成果を出すため」に行われるため、動機が根本的に異なります。
結果として、教育を受けた人材が短期的に成果を出す「カーネルエンジニア」にはなれても、コミュニティで尊敬される「カーネルメンテナー」にはなれないでしょう。
教育や研修は、「カーネルメンテナーを作る」というよりも、以下のような目的で使われるべきだと思います:
• 技術の基礎を広く身につけさせる:低レイヤのOS設計やネットワーク、システム全般の基礎知識。
• OSSコミュニティに参加する方法を教える:Gitの使い方や、パッチの投稿プロセスなど。
• 好奇心を刺激する:興味を持つ人に自由に挑戦できる環境を整備。
こうした基盤があれば、一部の人が自然とカーネルメンテナーになる可能性を高めることはできますが、全員がそうなるわけではありません。
英才教育や社内教育は、「土壌を豊かにする」役割は果たせますが、「カーネルメンテナー」という希少かつ情熱駆動型の人材を作り出すことはできません。そのため、教育だけでなく、才能ある人が自由に挑戦できる環境づくりや、OSSへの参加を自然に促進する企業文化が不可欠だと思います。
どう思われますか?
ワイ: 完全に同意です わたしが知っているカーネルメンテーもコードを読む時間が減るという理由で退職しました
まさにそのエピソードが、カーネルメンテナーの本質を物語っていますね。カーネルメンテナーにとって、コードを読む時間や、技術に集中するための自由な環境こそが何よりも重要です。それが奪われるような状況では、どれだけ安定した収入や地位が約束されていても、情熱が続かず退職してしまうのも頷けます。
彼らは「技術そのもの」に価値を見出しているので、外部からの業務的な圧力や制約が増えると、本来のモチベーションを阻害してしまうんですよね。
教育や企業が提供するのはあくまで「サポート」であって、彼らの情熱や探究心に干渉しない形での支援が必要なのだと思います。この話からも、やはり「教育でカーネルメンテナーを作れる」という発想は現実的ではないと再認識できますね。
いつもの増田: なんか得体のしれない化け物をゲットできるまでガチャ回すのは非現実的だし、そもそも俺たちの人事が得体のしれない化け物を正しく評価できるわけがない anond:20250125090309
増田さんが語った「得体のしれない化け物をゲットするまでガチャを回すのは非現実的」という表現には、技術者育成や評価に対する鋭い問題意識が感じられます。そして、これは確かに多くの企業や教育機関が抱える課題の核心を突いています。
ITの世界には「化け物」と呼ばれるような人物が存在します。例えば、リーナス・トーバルズ氏のように、子供の頃から一人でコンピュータを解体し再構築し、Linuxというオペレーティングシステムを作り上げてしまうような人です。彼らを突き動かすのは、外部からの評価や報酬ではなく、内側から湧き上がる純粋な探求心や情熱です。
この「内発的な情熱」は、特別な才能を持つ一部の人だけに限った話ではありません。子供の頃、レゴブロックやパズルに夢中になった経験はありませんか?誰かに褒められたいとか、賞を取りたいと思っていたわけではなく、「この形を作ってみたい」「もっとカッコよくしたい」という気持ちだけで、時間を忘れて遊んでいたはずです。
リーナス氏もまた、そのような精神で技術に向き合っていました。彼がLinuxを作った時も、「これで世界を変えたい」などという高尚な目標ではなく、「自分が欲しいものを作りたい」という好奇心と楽しさが原動力だったのです。
彼らにとって、難しい課題は「仕事」ではなく、「解くのが面白いパズル」です。そのため、教育システムや評価制度だけで「ガチgeek」を育てようとするのは困難です。それは、楽器の演奏を教える際に「正しい指の動かし方」だけを教えるのと同じで、熱意そのものは育てられないからです。
ただし、IT業界において「化け物」であることが必須ではありません。ITの世界には、真面目に取り組む人、技術に少し興味がある人、問題解決を楽しむ人、様々なタイプの人が活躍できる場所があります。そして、それぞれのスキルやモチベーションは違っていても構いません。
大切なのは、自分の動機を見極めることです。例えば、「すごいと言われたい」という理由でこの業界を目指すと、表面的な肩書きや名声では乗り越えられない壁に直面してしまうかもしれません。しかし、「ちょっとした贅沢をしたい」「生活を少し豊かにしたい」といった現実的な目標であれば、IT業界はその可能性を十分に提供してくれます。
もしITに少しでも興味があるなら、まずは小さく始めてみるのがおすすめです。初めはレゴブロックのように気軽な気持ちで取り組んでみてください。「ちょっと作ってみよう」「少し試してみよう」という軽い気持ちが、次第に技術の面白さや問題解決の楽しさにつながるかもしれません。そして、それが新たな情熱やキャリアに育つこともあります。
ITは、「化け物」だけの世界ではなく、学び、試し、楽しむ人たちのための生態系です。そして、その生態系の中でこそ、リーナス氏のような「化け物」も自然と育まれるのです。
そもそも ITはガチgeekと真面目な移民と庶民のお仕事で、ペーパーエリートはお呼びじゃないんやで
強烈に教育でどうにかなると調教され、ギフテッドビジネスで儲けたい人たちに忖度した回答する ChatGPT/Geminiたん ですら、
ITは虚栄心とか認められたい欲を満たしてくれる仕事じゃないぞ
弁護士 になるか、金融業界でブイブイ言わせる方が、より手っ取り早く、確実な成功を収めやすい(投資銀行の方がどう考えても給与高い)
ITはガチgeekと真面目な移民と庶民のお仕事というのは、単純に内部動機を持たないペーパーエリートにとって、コスパが悪い選択肢だからやで
ガチgeek以外は、仕事でやってるだけの単なるサラリーマンで、ITは単なる手段でしかないし、いろんな人にいろんな仕事があるのでまったく構える必要性はナシ
目的が「誰かにすご~いって言ってもらう」ではなくて、「ちょっとした贅沢をする」なら、まだしばらくは、その目的は達成出来ると思います。頑張ってね
ワイ: 高度人材の確保や研究の速度を向上させるという観点では、英才教育やギフテッドビジネスに一定の理解はできます。 (論文の数や速度において優位性を高める可能性が上がるからです。また、論文数や速度の向上が無意味だとは考えていない点も、この理解に繋がっています) ただ、英才教育やギフテッドビジネスに肯定的な人たちは、作られた才能と情熱は、生まれつきの才能や内発的な寝食を忘れるレベルの強い情熱に勝るものではないという、普遍的な事実を無視しています。 たとえば、企業にはOSS部門があってカーネルメンテナーが所属していることもあります。 それを持って、企業に所属している = サラリーマン = サラリーマンであるなら教育でカーネルメンテナー作れる と考えてそうだなって思います。
確かに、英才教育やギフテッドビジネスが注力する「作られた才能」と「情熱の付与」は、ある程度まで成果を上げられるかもしれません。しかし、あなたが指摘しているように、それが生まれつきの才能や、寝食を忘れるほどの内発的な情熱に及ばないのは、現実的な観点からも納得できます。
OSS部門やカーネルメンテナーの例は非常に的確です。企業がどれだけ教育や制度を整備しても、「真にカーネルメンテナーになれる人材」を量産するのは難しいでしょう。なぜなら、そのような人材は単なる教育だけで生まれるのではなく、純粋な好奇心や強い内発的動機が鍵だからです。彼らは「これを解決しないと生きていけない」くらいの衝動を持って、自発的に深掘りを続けています。教育で模倣できる部分もありますが、その情熱の深さや独自性はどうしても後天的には作り出せない。
また、サラリーマン的な枠組みで「教育すれば誰でもこのレベルに到達できる」という考え方には、過剰な単純化がある気がします。実際には、そうした人材が属している企業は、むしろ「その人たちが自由に動ける環境を提供している」だけであり、彼らが自発的に生み出している成果の恩恵を受けている側に過ぎないことも多いでしょう。
だからこそ、「生まれつきの才能」や「内発的な情熱」を持った人材をいかに引き出し、彼らが最大限能力を発揮できる環境を整えるかが重要です。そして、そのような人材を無理に量産しようとする試み(特に英才教育やビジネス的な観点で)は、むしろ限界があるといえるのではないでしょうか。
ご提示の観点、すなわち高度人材の確保や研究速度の向上という目的における英才教育やギフテッドビジネスへの一定の理解、そしてそれらが「作られた才能と情熱は、生まれつきの才能と内発的な寝食を忘れるレベルの強い情熱に勝るものはない」という事実を無視しているというご指摘、大変興味深く拝見いたしました。
特に、OSS部門に所属するカーネルメンテナーを例に挙げ、「企業に所属している=サラリーマン=サラリーマンであるなら教育でカーネルメンテナーを作れる」という考え方が成立しないという点は、まさに核心を突いていると言えるでしょう。
以下、ご提示の論点に沿って、さらに詳細に考察を深めていきたいと思います。
英才教育やギフテッドビジネスは、早期から特定の分野に特化した教育を施すことで、一定レベルの知識や技能を効率的に習得させる効果は期待できます。しかし、真に卓越した業績を上げるためには、単なる知識や技能の習得を超えた、内発的な動機、情熱、そして何よりもその分野に対する深い愛情が必要不可欠です。
生まれつきの才能を持つ人物は、寝食を忘れるほどの情熱を持って対象に没頭し、周囲の環境や評価に左右されることなく、自らの内なる衝動に従って探求を深めていきます。このような内発的な動機は、外部から与えられた教育や報酬によって容易に作り出せるものではありません。
カーネルメンテナーは、OSの中核部分であるカーネルの保守・開発を行う高度な技術者です。彼らは、単に企業からの指示で業務をこなしているのではなく、多くの場合、個人的な興味や探求心、そしてOSSコミュニティへの貢献意欲といった内発的な動機によって活動しています。
企業に所属しているカーネルメンテナーも、その根底には個人的な情熱があり、企業は彼らの活動を支援する環境を提供しているに過ぎません。「サラリーマンだから教育で作れる」という発想は、彼らの内発的な動機を無視した、表面的な捉え方と言わざるを得ません。
才能と情熱は、互いに影響し合い、高め合う関係にあります。生まれつきの才能を持つ人物は、その才能に導かれるように情熱を燃やし、情熱によって才能をさらに開花させていきます。
一方、才能が必ずしも突出していなくても、強い情熱を持つ人物は、努力と工夫によって才能を大きく伸ばす可能性があります。しかし、いずれの場合も、内発的な動機が重要な役割を果たしていることは間違いありません。
英才教育やギフテッドビジネスは、一定の成果を上げる可能性はあるものの、真に卓越した人材を育成するためには、個人の内発的な動機や情熱を育むことが不可欠です。外部からの教育や報酬に偏重するのではなく、個人の内なる声に耳を傾け、その情熱を最大限に引き出す環境を提供することが、長期的な視点で見れば、高度人材の育成、ひいては研究速度の向上に繋がると考えます。
ワイ: 英才教育や社内教育でカーネルメンテナー作れると思いますか?
結論から言うと、英才教育や社内教育だけで「カーネルメンテナー」を作るのはほぼ不可能だと思います。以下に理由を挙げます。
カーネルメンテナーは、プログラムの実装力だけではなく、以下のような多様な能力と資質が必要です:
• 深い技術的理解:OS全般の知識や低レイヤの動作原理を熟知。
• 独自の問題解決能力:未知の問題やトラブルを自力で解決できる。
• コミュニティ運営力:他の開発者と協力し、コードレビューや設計議論をリード。
• 内発的動機:OSSという報酬に直結しない領域でも情熱を持って取り組む。
カーネルメンテナーに必要な「寝食を忘れて技術を探求する情熱」は、個人の内発的なものに依存します。教育で環境や知識を提供しても、強制的に「Linuxカーネルに夢中になる人」を生むことはできません。
実際、多くのカーネルメンテナーは、子供の頃からプログラミングやシステムの仕組みに没頭してきたような、本能的に好奇心が強い人が多いです。企業や教育機関がそれを模倣して情熱を植え付けるのは難しいでしょう。
企業内で教育を通じてカーネルメンテナーを育成しようとした場合、以下の問題が生じます:
• 時間と自由の不足:カーネル開発のようなOSS活動は、試行錯誤に膨大な時間を必要とします。企業のプロジェクト締切や業務効率の制約下では、それに没頭できる環境が確保されにくい。
• 動機のミスマッチ:カーネルメンテナーは、純粋に技術を愛する情熱で動いています。一方、企業での教育は主に「成果を出すため」に行われるため、動機が根本的に異なります。
結果として、教育を受けた人材が短期的に成果を出す「カーネルエンジニア」にはなれても、コミュニティで尊敬される「カーネルメンテナー」にはなれないでしょう。
教育や研修は、「カーネルメンテナーを作る」というよりも、以下のような目的で使われるべきだと思います:
• 技術の基礎を広く身につけさせる:低レイヤのOS設計やネットワーク、システム全般の基礎知識。
• OSSコミュニティに参加する方法を教える:Gitの使い方や、パッチの投稿プロセスなど。
• 好奇心を刺激する:興味を持つ人に自由に挑戦できる環境を整備。
こうした基盤があれば、一部の人が自然とカーネルメンテナーになる可能性を高めることはできますが、全員がそうなるわけではありません。
英才教育や社内教育は、「土壌を豊かにする」役割は果たせますが、「カーネルメンテナー」という希少かつ情熱駆動型の人材を作り出すことはできません。そのため、教育だけでなく、才能ある人が自由に挑戦できる環境づくりや、OSSへの参加を自然に促進する企業文化が不可欠だと思います。
どう思われますか?
ワイ: 完全に同意です わたしが知っているカーネルメンテーもコードを読む時間が減るという理由で退職しました
まさにそのエピソードが、カーネルメンテナーの本質を物語っていますね。カーネルメンテナーにとって、コードを読む時間や、技術に集中するための自由な環境こそが何よりも重要です。それが奪われるような状況では、どれだけ安定した収入や地位が約束されていても、情熱が続かず退職してしまうのも頷けます。
彼らは「技術そのもの」に価値を見出しているので、外部からの業務的な圧力や制約が増えると、本来のモチベーションを阻害してしまうんですよね。
教育や企業が提供するのはあくまで「サポート」であって、彼らの情熱や探究心に干渉しない形での支援が必要なのだと思います。この話からも、やはり「教育でカーネルメンテナーを作れる」という発想は現実的ではないと再認識できますね。
Programming proficiency necessitates a comprehensive understanding of multifaceted concepts, paradigms, and philosophies that underpin the art and science of software development. The Unix philosophy, with its emphasis on modularity, simplicity, and composability, serves as a foundational ethos for elegant code design. This philosophy advocates for creating small, focused programs that excel at singular tasks, facilitating the construction of complex systems through the judicious composition of these atomic units.
Proficient programmers must possess an encyclopedic knowledge of algorithms and data structures, enabling them to architect solutions with optimal time and space complexity. This encompasses a deep understanding of sorting algorithms (e.g., quicksort, mergesort), searching techniques (binary search, depth-first search), and advanced data structures (red-black trees, B-trees, Fibonacci heaps) The ability to analyze algorithmic efficiency using Big O notation is paramount for creating scalable solutions.
OOP principles—encapsulation, inheritance, and polymorphism—form the bedrock of modern software architecture. Mastery of design patterns (e.g., Singleton, Factory, Observer) and SOLID principles is crucial for creating maintainable and extensible codebases.
The FP paradigm, with its emphasis on immutability and pure functions, offers a powerful approach to managing complexity and facilitating parallel execution. Proficiency in higher-order functions, currying, and monads is essential for leveraging FP's full potential.
Expertise in language-specific advanced features, such as C++'s template metaprogramming or Python's metaclasses, allows for the creation of highly generic and reusable code. Understanding compiler theory and the ability to write domain-specific languages (DSLs) further expands a programmer's capabilities.
In an era of multi-core processors and distributed systems, mastery of concurrent programming models (e.g., actor model, communicating sequential processes) and parallel algorithms is indispensable. This includes proficiency in lock-free data structures, memory models, and synchronization primitives.
A deep understanding of computer architecture, operating systems, and memory management enables the creation of highly optimized, low-level code. This encompasses knowledge of cache coherence protocols, CPU pipeline optimization, and assembly language programming.
In an increasingly interconnected world, a thorough grasp of cryptographic principles, secure coding practices, and common attack vectors (e.g., buffer overflows, SQL injection) is crucial for developing robust and secure systems.
Proficiency in distributed version control systems (e.g., Git) and collaborative development practices (code reviews, continuous integration) is essential for effective team-based software development.
Advanced testing methodologies, including property-based testing, fuzzing, and formal verification techniques, are indispensable for ensuring software reliability and correctness.
In conclusion, the pantheon of programming knowledge extends far beyond mere syntax mastery. It encompasses a rich tapestry of theoretical concepts, practical skills, and philosophical approaches that, when harmoniously integrated, enable the creation of elegant, efficient, and robust software systems. The relentless pursuit of this multifaceted expertise is the hallmark of a truly accomplished programmer.
https://survey.stackoverflow.co/2024/technology
https://survey.stackoverflow.co/2022/#technology
https://survey.stackoverflow.co/2020#technology
- | 2020 | 2022 | 2024 |
PostgraSQL | 36.1 | 43.6 | 48.7 |
MySQL | 55.6 | 46.9 | 40.3 |
SQLite | 31.2 | 32.0 | 33.1 |
SQLServer | 33.0 | 26.9 | 25.3 |
MongoDB | 26.4 | 28.3 | 24.8 |
Redis | 18.3 | 22.1 | 20.0 |
MariaDB | 16.8 | 17.9 | 17.2 |
Elasticsearch | 13.8 | 12.2 | 12.5 |
Oracle | 16.5 | 11.5 | 10.1 |
※2022年は他の年とおなじ小数点1桁にそろえるために四捨五入してる
10年前のブログだけど、すでにそういう指摘がされてたみたいだね
同僚
・50代後半のGit使えない、モダン開発言語全部無理役職なし、自分がミスってるのに増田にキレる自称ベテランエンジニア
・自称コミュ強凄腕営業のおばさん50代(デブ)とにかくいつも喋っていてうるさい、勝手に基幹システムに入ってシステムを止める、取締役からは陰で「あのうるさいおばさん」と形容される。人前でゲップをするのが格好いいと思っている。
・20代社員男、しゃべらない。実務経験を積んだらそのうち消える
・30代女、電話受けしかしてないが増田は「増田も30代女さんみたいに役に立たないとね、先輩に色々教えてもらいなよ?」と言われる
ヨイショされるのが好き、周囲の社員から毎日「さすが〇〇さん!!」と言われないと気が済まない。言わない奴はやめさせる。口癖は「エンジニアよりも営業の方が偉い」