web-dev-qa-db-ja.com

Webアプリケーションソフトウェアエンジニアの選び方

Webアプリケーションソフトウェアエンジニアを選ぶにはどうすればよいですか?

(永続的な)位置は、既存のデスクトップクライアントサーバーアプリケーションのクライアントを書き換えることです。ページはサーバー上で動的に生成されませんが、サーバーは必要な方法(JSON RPC呼び出しなど)で完全なAPIを公開し、静的ファイルを利用できるようにします。それは人々がダウンロードしてインストールしなければならないクライアントに取って代わるので、妥当な設定(例えばJavaScriptが有効)を備えたまともなブラウザを要求することは問題ありません。ほとんどすべてのユースケースはデスクトップPCです。検索エンジンはアクセスできません(エンタープライズアプリケーションです)。

すべてを1つのページに書き込むことができますが、そうする必要はありません。問題のWebアプリケーションソフトウェアエンジニアが作成するものはほとんどすべてです。使用する正確なオープンソースライブラリも、エンジニアの責任です。

一般的にWebアプリケーションソフトウェアエンジニアを選ぶのはトピックが広すぎるので、インタビューでどのような資格を確認/検証するかについてのアドバイスを具体的に探しています。

編集-位置は純粋にブラウザー内のJavaScriptプログラミング(およびHTMLとCSSの責任)です-他の開発者はサーバーを開発しますが、この位置はAPIを介してファサードを要求する可能性があります。 Ruby、ASP、JSPなどはありません。Webサーバーレイヤーは非常に薄く、呼び出しをビジネスレイヤーAPIに変換し、JSON(または何でも、JSONが最も簡単に見える)として返すだけだからです。

10
psr

レガシーシステムを扱うエンタープライズアプリを主に扱うWeb開発者として、私が成功する理由についていくつかの提案を提供できます。

1つのアプリを提供するための一時的な/コンサルタントの状況を探しているのか、この長期を開発および維持するためのFTEを探しているのかはわかりませんが、どちらの場合にも当てはまるはずです。

  • 私は主にRubyを使用しています。これにより、ラピッドプロトタイピングが非常に迅速かつ簡単になり、Railsを使用すると、bootstrapで新しいプロジェクトを簡単に作成できます。現在、環境がどのようなものかわかりません、言語、プラットフォーム、ツールに関する制度上の義務があるかどうかにかかわらず、DSLを作成して外部APIを比較的迅速かつ簡単に処理できるようにする、モダンで柔軟な言語/フレームワークに熟練した開発者を雇うことができれば、それはプラスです。 、LISPの性質を持つすべての言語がこの点で優れています。また、一般的な抽象化に対処するために、オープンソースライブラリの優れたエコシステムを備えた言語に熟練した人を雇うことは必須です。
  • レガシーシステムを扱い、それらの特異性を抽象化することに慣れている人を見つけることができる場合、それはまれであり、探索する必要があります。ほとんどの開発者は、プロジェクトをゼロから構築する(または既存のプロジェクトを維持するために持ち込まれる)ことに慣れており、何か新しいものを構築して古いものとのインターフェースを確立するには、スキルセット自体ではなくアプローチが必要です。
  • 「サーバーは必要な方法でAPIを公開する」と言った場合、どちらかと言えばあいまいですが、サーバーにAPIを実装できる既存の開発者がいると思いますか? APIを指定するためにそれらの開発者と協力することを含む立場であることを明確にします。必要なインタラクションのタイプの例を挙げて、それを実装する方法についての最初の考えを候補者に尋ねることができれば、それは伝えているかもしれません。あなたの当初の考えはJSON RPCであったという事実は、あなたが正しい方向に傾いていることを示していると思うので、複雑なXMLとXSLTの相互作用のビジョンを持っている人には注意してください。
  • まともなブラウザのJavaScriptサポートを期待できる場合は、Backbone.js、JavaScriptMVCなどのJSフレームワークの経験者を探してください。その場合、アプリ全体を(基本的に)ブラウザ内で実行し、Node.jsなどで提供することができます。 ...それでは、良いJS開発者の方を見てください。彼らがJSをCoffeeScriptで書くことを好むと彼らが言うなら、彼らはおそらくもっと優れたJS開発者でしょう。

私の塹壕での経験からのいくつかの考えだけですが、私の部署が新しい開発者を雇っていた場合、これは私が彼らに探すように言うでしょう。

私の部門に別の開発者の予算があったらいいのに...

2
Jason Lewis

注:これは単に私の意見なので、台所の流し台を私に投げないでください;)

あなたは2つの明確に異なるポジションの名前を変更していると思います(これは少し混乱する可能性があります)。

ソフトウェアエンジニア:エンジニア。特定のプラットフォームに必ずしも関連付けられていない抽象的な問題の解決に長けている人。設計パターン、アルゴリズム(既知のアルゴリズムとアルゴリズムの設計および分析の両方)、線形代数、および計算の強みに関する深い知識。過去にソフトウェアエンジニアを雇ったとき、私は彼らの特定のドメインの知識については、複雑な問題を解決する能力ほど心配していませんでした。

Webアプリケーション開発者:Webアプリケーションの構築に関する知識を持っている人。サーバーサイドアーキテクチャとクライアントサイドアーキテクチャ、および2つのアーキテクチャを効果的に通信する方法を理解します。完了状態とWIP状態の両方のW3C標準に精通している。データベースの動作と、必要な場合に最適化する方法(クエリの最適化、データベースのキャッシュ、インデックス作成など)を理解します。また、キャッシュのさまざまなメカニズムや、アプリケーションを最適化するその他の方法についても理解します。また、意味規則も理解しています。

おそらく私が見逃しているいくつかのことがあり、私はそれらについて考えるときに記入するかもしれません。

あなたが探しているものの説明から、ソフトウェアエンジニアをまったく探していないように思えます。あなたはウェブアプリケーション開発者を探しています。

だから、私が最初にすることは、あなたが探しているのは誰か、そして候補者にどのような専門知識を期待しているのかを絞り込むことです。かなり役立つかもしれません。

1
Demian Brecht