これらの人々の要件を設定します(コメントに要件を追加できます)。
- それらはHabrからのものでなければなりません(読み取り専用にしてください)
- コメントに質問を書いたすべての人に答えたい
- アメリカまたはヨーロッパでプロジェクトを立ち上げた経験がある
- お金の袋なしでプロジェクトを立ち上げた人
最初の友人であるpkruminsから始めましょう。彼は 2011年からHabréに参加しており、彼の開発について書きました。

場所:アメリカ、サンフランシスコ
役職: BrowserlingのCEO
インタビューソース: fogcreek
今日のゲストは、クロスブラウザのオンラインテストサービスであるBrowserlingの共同設立者兼CEOであるPeteris Kruminsです。 また、 「Perl One-Liners」という本の著者-プログラミングに関連するGTD(物事を成し遂げる)-Perlのコマンドラインを使用して結果をすばやく取得する方法について。 彼のブログには新しい記事が定期的に掲載されています。
どうやってソフトウェアの開発を始めましたか?
母親の仕事で386 PCと486 PCにアクセスできるようになったとき、私は6歳の頃からコンピューターで遊んでいた。 最初にコンピューターの前に座ったとき、私は完全に魅了されました。 それ以来、私は毎日自分のパソコンを夢見ていた。 そして、長い間、私はそれを手に入れるまで、あらゆる手段を使ってIT業界に近づきました。 私はコンピューターに興味があり、コンピューターを持っていた多くの人と友達になりました。 子供の頃、私はインターネットにアクセスするためだけに、いくつかの大学の学生になりすましました。
私の最初のコンピューターはラップトップでした。 私の友人は、ゾンビと呼ばれました(ちなみに、彼は素晴らしいシステム管理者でした)どういうわけか不要なラップトップであることが判明し、彼はそれをちょうど私に与えました。 私はまだこの贈り物を保管しています。 ノートブックIBM Butterfly(ThinkPad 701CS)。 この奇跡には、8MBのRAM、800MBのハードディスク、および2つのインストールされたOS(Windows 95およびOpenBSD)がありました。 後で40MB RAMにアップグレードしました。 彼はまた、シンネットPCMCIAネットワークアダプターカードを持っていて、これが私の最初の10Mbpsホームネットワークの作成に役立ちました。 シンネットを聞いたことがない人のために、私は説明します。これは、同軸ケーブル(10Base2)を介したイーサネットです。

私は自分のコンピューターを15歳の頃に手に入れました。これはキラーマシンでした。256MbRAM、8Gbハードドライブ、3D Blaster Banshee 16Mbビデオカード、17” 75Hz 1024×768 CRTモニターを備えた400Mhz Celeron。 コンピューターには、まったく新しいWindows 98がありました(それまでに公開されていた)。
私は100%独学です。 私は一度にいくつかの言語を学び始めました。 私がセレロンを受け取ったとき、私はすでに彼に何が欲しいかについて明確な考えを持っていました。 Webページを作成したかったので、最初の日はHTML、Javascript、CSSで書き始めました。 最初は、Webサイトがどのように機能するかを完全に理解しておらず、サーバーレベルの言語についても知らなかったため、インターネット上でサイトを実行するにはWebサーバーが必要であることがわかりました。 最初は自分のサイトをAngelfireに保管していましたが、その後、PHPとMySQLを使用して独自のLinux Slackwareサーバーをセットアップしました。 そしてもちろん、私はハッカーになりたかった-このために私はCとアセンブラーを学びました。 IRCNetで膨大な時間を費やしましたが、同時にmIRCスクリプトの書き方を考え出し、Visual Basicを使用して独自のIRCクライアントを作成しました。
誰になったのか教えてください
現在、私はBrowserlingのCEOです。 2011年に私の友人とBrowserlingを作成しました。これはサンフランシスコのベイエリアで起きていました。 私の通常の日は、コード、サーバー管理、顧客と従業員との仕事の多くの書かれた行で構成されています。 私は自分の仕事が好きで、今は開発会社を経営する以外に何も考えられません。 私は、ポール・グラハムと彼の著作の信じられないほどのファンでした。
現時点では、私はビジネス開発に100%集中しています。 私は側でプロジェクトを引き受けませんし、本を書くこともやめました。これは私を主要な目標である会社からそらします。 会社を成功させる最初のルールは、製品に100%集中することです。 現在、収益の増加と国際的なリモートブラウザリングチームの設立に取り組んでいます。 つい最近、ウクライナから素晴らしいエンジニアを雇いました。英語圏以外の市場にも会社を拡大しています。
さらに、多くの技術的な問題を解決します。 たとえば、仮想マシンで実行されているブラウザをクライアントに効果的に表示する方法や、1秒あたり何百ものブラウザスクリーンショットを取得する方法などです。 サーバーでの作業が好きで、サーバースタックをEC2およびRackspaceクラウドから実サーバーに移動する予定です。 クラウドサーバーは、ビジネスを始めたばかりの場合に適していますが、一定のレベルに達した場合、独自のサーバー機器への移行が重要なステップになります。 これにより多くのお金を節約し、生産性を倍増させます。
あなたにとってプログラミングの一番の長所は何ですか?
ストリームにいるとき、またはすべてが完了したとき、私はただ幸せです。 私は非常に頻繁にストリームに参加できます。もちろん、あなたと秘密を共有したいと思います。 実際、すべては簡単です。夜はすべての最も重要なことを行い、それから1日中寝ます。 夜間は、ストリームでの作業に最適です。 夜はあなたをそらすものをすべて排除するか、自分に注意を向けようとします。 ストリームに参加するもう1つの秘secretは、Twitter、Facebook、Skype、Gtalk、G +を閉じることです。 結局のところ、ストリームにいるとき、アラートやメッセージのランダムな音に驚かされたくないのです。

どの開発環境を使用していますか?
Windows / Linuxの2つのシステムが構成されています。 メインワークステーションでWindows 7を使用し、SSHを使用してLinuxサーバーに接続します。 ごく最近(先月)、Intel i7 4790Kプロセッサをベースに、4.7Ghzにオーバークロックした新しいワークステーションを組み立てました。
Linuxファイアウォールサーバー、Linuxファイルサーバー、Linux開発サーバーもあります。 Sambaを介してLinuxファイルサーバーをWindowsに上げると、RAID6で構築されたディスクのセットが起動され、RAIDで2つのディスクが失敗することができます。 これらのLinuxサーバーはすべてSlackware上で実行されます。 Slackwareのシンプルさが気に入っています。 最小限のインストーラーを使用し、必要なパッケージのみを追加します。 たとえば、ファイアウォールにはBash、Vim、およびIptablesで十分です。 ファイルサーバーに必要なのは、Bash、Vim、Cryptsetup、およびSambaのみです。 また、開発サーバーには、開発に直接必要なもののみがインストールされます。
WindowsとLinuxでVimを使用し、WindowsでgVimとVisual Studioを使用します。 IntelliSenseなしでWindowsの開発プロセスを想像することはできません。 私は、次のような完全に再構成されたVimと2ダースのプラグインを使用します 。
- サラウンド.vim(素早く編集可能な周囲のテキスト)
- repeat.vim(最近のコマンドを繰り返す)
- matchit.vim(%キー一致拡張)
- snipmate.vim(コードスニペット)
- nerd_tree.vim(vimからファイルシステムを参照するため)
- a.vim(追加のCおよびHファイル)
- ragtag.vim(HTMLの編集に一致)
- tabular.vim(テキストの配置)
- bufexplorer.vim(バッファの使用)
- python.vim(Pythonサポートの改善)
- exchange.vim(クイックテキスト置換)
- abolish.vim(単語拡張)
- speeddating.vim(日付の増加)
- その他多数。
Windowsでは、次のものなしでは生活できません。
- Visual Studio(IntelliSenseに匹敵するものはありません)
- SQLyog(MySQLデータベースのGIUマネージャー)
- SQLiteSpy(SQLiteデータベースのGUIマネージャー)
- pgAdmin(PostrgresデータベースのGUIマネージャー)
- WinSCPおよびSecureFX(セキュアFTPクライアント)
- PuttyおよびSecureCRT(SSHクライアント)
- KeePass(パスワードマネージャー)
- ClipX(クリップボードマネージャー)
- Launchy(プログラムの起動用)
- Locate32(ファイルのインデックス作成用)
- allSnap(ウィンドウマネージャー)
- AutoHotkeys(タスクとプログラムの自動化)
- Virtual CloneDrive(ディスクイメージのマウント用)
- IsoBuster(ディスクイメージの抽出用)
- ImgBurn(ディスクイメージの作成用)
- MySpeedをアナウンスします(ビデオを高速化または低速化します)
- Hex Workshop(16進エディター)
- VMWareワークステーション(仮想マシン)
- Cygwin(Unixツール)
- UltraMon(マルチスクリーンサポート)
- 比較を超えて(ファイル比較プログラム)
- Tclock2(改善された時計)
- Fineprint(プリンターのプロキシ)
- SumatraPDF(拡張PDFビューアー)
- AviSynth(プログラムによるビデオの編集用)
- ffmpeg(ビデオ変換用)
- VirtualDub(ビデオの変換および編集用)
- WinDirStat(ディスク容量を視覚化するため)
- clink(改善されたcmd.exe)
- IDA Pro(デバッグ用)
- フォトショップ
- Sysinternalsツール
Linuxでは、次のものなしでは生きられません。
- samba(WindowsにLinuxをマウント)
- tmuxおよびscreen(永続的なシェルセッション)
- すべての標準UNIXユーティリティ(awk、sed、grep、head、tail、uniq、sortなど)
- perl(高速プロトタイピング、高速ハック、1行のコマンドでタスクを解決)
- iptablesおよびnftables(ネットワークセキュリティ)
- htop(高度なプロセスモニター)
- mtr(改善されたtraceroute)
- マルチテール(複数のウィンドウで複数のファイルを追跡)
- nc(netcat、TCP / IP用のスイスナイフ)
- iftop(帯域幅追跡)
- ack(改良されたgrep)
- ipcalc(ネットワークアドレス計算機)
- pv(パイプビューアー-UNIXパイププログレスバー)
- rsync(バックアップ)
- ncdu(ディスクスペースレンダリング)
- curl(httpクライアント)
- nmap(ネットワークスキャナー)
- tcpdumpおよびwireshark(ネットワークエラーのデバッグ用)
- sysdig(1つのプログラムでstrace + lsof + tcpdump)
- youtube-dl(すべてのオンライン動画をダウンロード)
座ってプログラムします。 立っているときや動いている間(トレッドミル上)でプログラムしようとしたことはありません。 ストリーミング中は、Vocal Transチャンネルdi.fmを聴きます。 しかし、これは私がすでにフローの状態に入っている場合のみです。そうでなければ、音楽は気が散りすぎます。 10年以上使用している忠実なMicrosoft Naturalキーボードなしではプログラミングできません。 それでも正常に機能しますが、すでに目に見える擦り傷が見られます。
質問を解決しようとすると、多くのメモを取ります。 難しい問題があるとすぐに、それを小さなサブタスクに分割しようとしますが、これは非常に簡単に解決できます。 次に、タスクのToDoリストを作成し、それらの実行を開始して、1つずつ削除します。 一般的に、長期タスク(今後1〜2年)と中規模タスク(今後数か月)と短期タスクを組み合わせたToDoリストがいくつかあり、すぐに解決します。
お気に入りの開発書/リソースは何ですか?
私はコンピューターの本と技術文献に夢中です。 数ヶ月ごとに、私は丸一日、最新の文献を研究し、最も興味のある出版物を購入しています。 プログラミング、開発、コンピューターに関する私のお気に入りの本を5つ紹介します。
- New Turing Omnibus-コンピューターに興味がある人のための必読の本。 この素晴らしい本は、圧縮、チューリングマシン、形式文法、未計算関数、ニューラルネットワークなど、最も重要で興味深いコンピュータートピックに関する66の短いエッセイで構成されています。 本は簡単な日常言語で書かれており、数学はほとんど含まれていません。 これは私のお気に入りの本です。
- Sema Formsの小さな本 -この本は、マルチスレッドを考え、同期の問題を解決する方法を教えます。 特に独学の場合は特にお勧めします。 読者に、一連の古典的な同期問題ではなく、順を追って説明します。 非常に興味深いことに、これらの問題を解決します。私は彼女に初めて会ったので、みんなにそれをお勧めします。
- プログラミングの 真珠とプログラミングの真珠 。 -プログラミングに関する古典的な本。 John Bentleyは、アルゴリズムについて明確かつ熱心に書く方法を知っています。 これらの本は永遠のものであり、問題を理解し、それらを部分的に解決し、ソリューションを効果的に実装する方法を読者に教えます。 これらの2冊の本を読むと、Googleのインタビューを受けることができます。
- リトルコンビネーター - リトルコンビネーターは、最も面白い方法でLISPについて少し知識を与えます。 本とは、何百もの小さなソフトウェアの組み合わせに関するあなたと著者との対話であり、とりわけ、読者に再帰的に考えることを教えます。 この本は、あなたを少し考えさせて、あなたの意識を広げさせます。 これは、これまでに書かれた最も興味深いプログラミング本の1つです。
- スタイル要素とプログラミングスタイル要素 -「スタイル要素」-この本は、開発やプログラミングに関するものではなく、ライティングスキルに関するものです。 成功するプログラマになりたい場合は、他の人が理解できるような方法でコミュニケーションをとる必要があります。したがって、ライティングスキルが必要です。 この本は100ページしかなく、1晩で読むことができます。 「プログラミングスタイルの要素」は、Kerniganのプログラミングに関する古典的な本です。この本の形は、「スタイルの要素」という本から大きな影響を受けました。 これは古い本ですが、ほとんどの部分で、それが教えるすべてが今日適用可能です。 「明確に書く-あまりにもスマートに見えないように」など、70のプログラミングルールで構成されています。 「あなたが望むものを簡単かつ正確に言ってください」; 「プログラムを単純にするデータの表示方法を選択してください」; 「データがプログラムの構造を形成するようにします。」
そして、私はそれを始めたばかりです。 お気に入りの本のトップ100を簡単に作成できました。 本を選ぶ際にアドバイスが必要な場合、または読んだ本の1つを私と話したい場合は、私に手紙を書いてください。

現在、どのテクノロジーを学んでいますか?
私はVisual Studioの大ファンなので、つい最近Visual Studio 2015 Previewをダウンロードして試してみました。 また、仮想マシンにWindows 10 Previewをインストールしました。 私の仕事はクロスブラウザーテストを中心に展開しているため、新しいMicrosoftブラウザーであるSpartanが提供できるものに興味があります。
GoogleがKytheのソースコードを公開して以来 、このプログラムは以前から存在していたものよりもはるかに優れたコードインデクサーおよびブラウザになるはずです。 昨年、友人である本物のグーグルマンから聞いたことがあるので、楽しみにしていました。 今週末、Linuxカーネルソースでテストします。
もっと時間があれば、Oculus Riftとモーションプラットフォームを組み合わせて、バーチャルリアリティ機器を作成します。
プログラミングをしていないときはどうしますか?
私は健康を保つのが好きです。 陸上競技をします。 短いスプリントは、強いコーヒー1杯よりもずっと元気になることを発見しました。 60メートルで10回スプリントを行う日には、10-12時間エネルギーを充電され、一晩中獣のようにプログラムされます。 また、距離のあるトラックで競争するのも好きです。 400メートルのスプリントと800メートルのレースは、私のお気に入りの距離です。
初心者プログラマーとしてどのようなアドバイスをしますか?
私は、自分自身に若者にアドバイスできる4つのルールのみを念頭に置いています。
- タスクを迅速かつ効率的に解決し、前進します。
- 価値を生み出さないことをしないでください(そして、私たちの時代の主な価値はお金です)。
- 開発者のブログをできるだけ早く開始してください。
- 早期かつ頻繁にリリースします。