Hyper Devの開発者向けにインタラクティブな環境を作成する方法

画像



類推に頼ると、沸騰したお湯に投げ込まれたカエルがそこから飛び出します。 しかし、ゆっくりと温めた水に入れれば、危険を感じず沸騰しません。

Web開発者はそのような穏やかなカエルのように見えます。 毎日コードとサービスに没頭しているため、複雑さのレベルに変化はありません。 ただし、プログラミングを学んでいる人のように、外部から業界を見ると、コードの最初の行を書く前であっても人がどれほど忙しいかを理解できます。 どの言語で始めるべきですか? 使用するライブラリ どちらのIDEが優れていますか? SQLだけでなく、SQLですか? 合併または移転? そして、ダイナモメーターとは一体何でしょうか? この記事は、開発者だけでなく、顧客の生活を簡素化する製品作成しようとしているすべての人にも役立つため、この記事で注目を集めました。 この情報がお役に立てば幸いです!



Fog Creekでは、複雑なWebアプリケーションを迅速に構築するためのインタラクティブな環境であるHyper Devを作成するよう求められたのは複雑さでした。 すべての準備が削除されているため、コードを記述しているだけです。 一度だけ、私たちは気付きました:15年間、何百万人もの人々が使用するWebアプリケーション(たとえば、Stack OverflowやTrello)を作成して、私たちは困難に気づかなくなりました。



Web開発が存在する限り、このプロセスを簡素化するために設計されたサービス、言語、ライブラリ、および環境の数が急速に増加していることが常に観察されています。 しかし、少なくとも「Hello World」を取得するには、サーバーを構成し、シェルコマンドを実行し、ファイルをコンパイルし、パイプライン処理を整理し、バージョン管理システムを管理する必要があります。



その結果、プログラミングの勉強を始めたばかりで、主題とは関係のない資料の深withに直面します。これは、仕事の基本原則からあなたをそらし、混乱させる可能性があります。 そして、あなたはあまり持っていない時間を 、有名なヤクを剃り、あなたに知識を与えない問題を解決することに費やします。



ユーザーのオーディエンス(初心者と話す)を調査すればするほど、「私はバカ」や「バカみたいだ」といったフレーズが頻繁に表示されます。 しかし、これは驚くべきことではありません。 彼の分野のリーダーであり、エクストリームプログラミングの父であるRon Jeffriesのような経験豊富な開発者でさえ、簡単なアプリケーションを実行しようとして何日も費やしているのなら、残りはどうでしょうか?



Web開発の部分的な簡素化



したがって、この問題に対処することにしました。 まず、どの問題に対処するかを決定する必要がありました。 Web開発は多くの問題を抱える非常に複雑な分野であり、それらすべてを解決することを夢見るべきではありません。



クリークウィークから始めました。つまり、毎日の活動を1週間中断し、問題の調査に専念しました。 クリークウィークの目標は、「退屈で学習が難しい開発の側面を強調する」ことであり、人々が「このような面倒なことなくアプリケーションを作成してURLに移動できる」ことを可能にすることでした。



もう少し具体的に-そして、多くのものを除外することができました。 まず、「選択」しましたが、削除しませんでした。 そして、プログラミング自体を単純化しようとせず、新たにロゴを作成しませんでした。



このタスクは、研究に集中するのにも役立ちました。 この領域の問題を解決しなかった既存のソリューション(IaaS、PaaS、Rapid Application Development、およびオンラインコードエディター)を調査しました。 そのため、避けるべきアプローチを含め、多くのことを理解しました。たとえば、視覚的なソフトウェアを作成してコーディングを完全に放棄しようとする試みです。 これは誰もまだ成功していないbeatられた道です。 プログラミングの準備を単純化および高速化することで、プログラミングの力と柔軟性を維持したいと考えました。



クリークウィークにかけて、作業コンセプトを作成しました。 これは、組織から承認を得て、問題をさらに調査する権利を得るために使用されました。 また、いくつかのモデルを開発しました。



画像



元のエディターモデル







プロジェクト作成フィールドモデル



ここには、「保存して送信」ボタン、「メイン」ブランチ、「テスト」タブなどのコンポーネントが表示されます。 問題に影響を与えるためにどのテクノロジーを使用するかわからなかったのです。



製品の原理



Trelloと同様、私たちは推論をいくつかの原則に限定しました。 彼らは私たちのアプローチを概説し、最良の方法を見つける試みになりました。 ここにあります:



これはすべて、アイデアを明確にするのに役立ちました。



たとえば、これらの原則を考慮して「プロジェクト作成フィールド」モデルを過大評価していたため、最初の段階で、ユーザーは多くの複雑な技術的決定を行う必要があります。 つまり、何かを作成する代わりに、提案されたオプションが互いにどのように異なるかを調べに行きます。 これは明らかに、ビジネスへの可能な限り迅速な移行という最初の原則に違反しています。



これらのステートメントは、「保存して送信」ボタンを拒否することも要求しました。 彼女は、何を「保存」し、「どこに」送信するかを知っていることを暗示しているだけでなく、即時のフィードバックもブロックしています。 さらに、テスターとの会話の後、バージョン管理は永遠の懸念と混乱の原因であることが判明しました。なぜなら、ほとんどはGitの機能のごく一部しか使用していないからです。



はい、コマンドラインアクセスによって提供される柔軟性と制御が便利です。 しかし、それらはユーザーにほとんど新しい知識を提供しない環境問題を引き起こし、それを解決するのに数時間かかるかもしれません。 ただし、「シンプルさ」を実現するには、既存のコード使用方法に基づく必要があります。 したがって、Stack Overflowからコピーされた回答は、ローカルマシンと同じように機能するはずです。



これらの原則を武器に、最小限の機能(MVP)で製品を作成する方法について十分なアイデアがあることがわかりました。 ここで、これらのアイデアが実際にどのように機能するかを確認したいと考えました。



MVPを作成する



次の数か月は開発で構成され、2週間ごとに行われた創設者とのチームの内部ユーザーテストおよびコントロール会議を実施しました。 このような会話は、プロジェクトの日々の問題に忙しくない人々からデータを取得するのに役立ちました。 彼らは私たちに箱の外で考えさせ、些細なことに夢中なることを許さなかった。



仕事を終えるために、私たちは自分の組織を超えて行く必要がありました。 そして、Recurse CenterとFlat Iron Schoolに助けを求めました。 そこで、私たちは製品について話し、フィードバックを受け、より良い反応を得るために多くの個々の製品テストを実施しました。



画像



フラグメント挿入フィールド

これらのテストは有用であることが判明しました。原則に対応していても、製品のどの側面が実際に機能しなかったのかが明らかになりました。 たとえば、一般的なタスクの実装を簡素化するために、以前に作成したコードフラグメントを検索して挿入できるようにしました。 理論的にはこれは理にかなっていますが、テストでは、ユーザーはこの関数の説明を受け取った後でもアクセスしませんでした。 さらに、彼女は多くの質問を投げかけました。例えば、これらのスニペットはどこから来るのでしょうか? 誰がそれらを書いて保存しますか? また、フラグメントによって暗示されている場合、プロジェクトにソフトウェアパッケージを追加する必要がありますか?



画像



オンライン言語選択



暫定版に数か月間保存されていたもう1つの機能は、ファイルの言語をすばやく選択できることです。 理論的には、これにより言語の実験が簡単になり、現在サポートされている言語をユーザーに示すための文脈上の方法として役立ちました。 これを確実にするために、既存の環境と言語に必要なステレオタイプ化されたコードからある程度抽象化するのに役立つ多くのライブラリを作成する必要がありました。



これは私たちの原則に完全に適合していますが、実際には、テストされた人は不快感を感じ 、初期化コードを見ることができませんでした。 彼らはこれに対応する準備ができていなかったため、製品がどのように機能するかを理解することが困難になりました。 そして、私たちはそれをより透明にしました。



何を得たの



最後の手順は、製品に関する使用状況データと結論を取得することでした。すべてのユーザー向けにベータ版を公開しました。 一般的な考え方の観点から、Web開発を複雑さから救うために何を達成しましたか?



hyperdev.comにアクセスすると、welcomeアプリケーションを含む新しいプロジェクトが自動的に開始されます。 それは独自のURLを持ち、あなたとあなたがそれを共有するすべての人々に常に利用可能です。 そして、これはサーバー側とクライアント側の両方のコードを備えた実際のWebアプリケーションです。



それを編集するか、新しいプロジェクトを開いて、Node.jsプラットフォーム上で実際の本格的なアプリケーションを作成できます。 しかし、あなたがする必要がないこと:



作成するアプリケーションは常にアクティブであり、すでにホストされています。 入力したとおりに移動するため、変更はすぐに有効になります。 準備なし—環境のセットアップ、パイプラインの整理、Gitの記憶、または更新の手動移動。 また、 チームメイトを招待してコードを共同で作成し、すべての変更をリアルタイムで確認することもできます。



既存のパブリックプロジェクトを混在させることができます。 作成物にはそれぞれ独自のURLがあり、共有することができます。



私たちは長い道のりを歩んできましたが、これらはWeb開発の課題を解決するための最初のステップにすぎません。



PSトピックに関する別の有用な記事をお勧めします-ITポジションの候補者とのインタビューのための10の質問



翻訳の著者はTESTutorの創設者であるVyacheslav Davidenkoです。



All Articles