私が学んだ凄腕プログラマー最大の秘訣。それはお金を惜しまないことです。
労力を惜しまないこと(仕事を手早く済ませるために独自のツールやライブラリを構築すること)も大切ですが、適切な物にお金を払う決断をすることも大切です。
私が最初にこれを学んだのは、ある凄腕プログラマーが午後にスターバックスで仕事し、オフィスにあるパソコンにリモートデスクトップで接続し、サーバ・ファームからコンパイルしていたときです。これは2000年代後半の話ですが、当時でもネットの速度は十分でした。
まず、最低限の話ですが、私は次の物をサブスクリプション契約しています。
- JetBrains (最高のIDEを使うため)。
- Adobe (必要に応じてIllustratorやPhotoshopが使え、ビデオの編集もできます)。
- SpotifyとTIDAL (最高の環境のため)。プログラマーに限定されませんが、言及しておきます。
- Medium (訳注:サイエンス情報サイト)(最高の情報処理技術に関する記事を読むために記者にお金を払っています)。
- HP Instant Ink (訳注:HPのプリンターインク定期配送サービス)(インク代を気にせずに印刷していると便利すぎて驚くほどの印刷量になります)。
- 忘れがちなポイントです。数か月前に印刷した履歴書に誤字を見つけた時とか、読みづらいドキュメントを読んだ時のことを考えてみてください。
- スケジュール、計画、生産性評価、ユーティリティのテンプレート等。.
- … 他にもまだまだたくさん。
また、オフィス用品(高品質な机、キーボード、椅子など)にも出費を惜しみません。
こうして私は快適な環境を手に入れています。
大した費用でもないのに、Quoraでは多くのプログラマーが小銭を節約しようとしています。
クラウドにも出費を惜しみません。
たくさんのリソースを搭載した高速なマシンを利用することにより、ワークフローが非常にスムーズになりました。
私がこのようなものにお金を払っています。
- 1時間$0.29で32コアのCPU(プリエンプティブル仮想マシン)をすぐに利用できます。
- 大学の課題で考えれば、1時間に3回ではなく、1時間に100回の実験を行えます。これにより速く繰り返すことができ、短時間でたくさんのオプションを評価比較できます。
- 1時間$3でNVidia T4 GPUを搭載した64コアのCPUを利用できます。
- ご希望であればV100を搭載した8コアのCPUも1時間$3で借りられます。
RTX GPUを搭載した32コアのパソコンを自分で買えばよいじゃないかと思われるかもしれません。その通りです。でもこれらのパソコンは1000Mbpsでインターネットにアクセスできます。しかもV100のインスタンスを8個同時に起動することも希望に応じてできます。
つい最近まで私はJetBrains IDE(又はPythonのML用Jupyter Labs)のssh機能を使っていましたが、先週にProjectorがリリースされ、これはsshのIDE、又はEmacsのTrampのようなものです。
これは素晴らしいです。
ProjectorではIDEをクラウド上で実行できるので、操作感が非常に良いです。このIDEはまだノートパソコンでうまく動作しませんが、しばらくはJupyter Labsで問題なく作業できますし、PyPlotもIDEで問題なく動作します(アニメーションは試していませんが)。
コンパイルの速度はかなり早くなりました。sshでも十分早かったのですが、IDEがサーバ上で動くので、手元のパソコンには何も置く必要がなく、IDEがサーバにファイルを転送するのを待つ必要もなくなりました。
繰り返しになりますが、私が借りているサーバは1000Mbpsでインターネットに接続されていますので、必要に応じてライブラリやツールをダウンロードするのも簡単です。
全てが最高の状態であり、普通のネット環境では実現できないような決断が可能です。
現在はどんなに安物のノートパソコンでもこのパワーを携帯できるようになりました。タブレット端末とブルートゥースキーボードを使い、ボータフォンのUSBモバイル通信端末経由でProjectorから接続するだけで実際にできるのです!
こんな感じです…
初めての日本語の回答なので、間違ったどころをぜひお許しください。
自分が凄腕プログラマーとは断じて言えませんが、周りにすごく上手いプログラマーと一緒に働いた経験があります。今まで積み上げてきた経験から言うと、みつのポイントにまとまります。
1、テクノロジーへの情熱から生み出された学習欲;
2、全システムを理解した上デーザインを考え出すこと;
3、仕事の質を信じられないほど大切に思っていること。
もっと的確に言うと、「どんな技術スタックを採用されるにも関わらず、システムデザインをこなした上、マクロな視点から細かいコードまで精通するヴェテラン」というのは私の「エキスパートプログラマー」への見解です。
この答えは多分、非現実的なくらい簡単すぎると思われるでしょうが、どんな領域ににも高い境地までたどり着きたいなら、自分の腕を磨くために最低限1万時間を注ぎ込む必要がある1万時間の法則はきっとお聞きになられたのでしょう。すなわち、あなたのおっしゃっる「凄い腕」とは、ただ誰かが長年諦めずの努力の積み重ねによってもたらされた結果に過ぎません。他人から見ると、確かに太陽みたいに輝いているような才能に見えますが、自分が当事者なら、多分今まで流した血の汗しか見えないでしょう。
これはあくまで個人的な意見かもしれませんが、エキスパート級なプログラマーになる秘訣はありません。
お読みいただきありがとうございます。
0 コメント:
コメントを投稿