開発者のタイプ

あなたは何種類の開発者を知っていますか? そして、あなたが開発者であれば、あなたはどのタイプに自分自身を参照していますか? 現実の世界では、異なるタイプの開発者の境界がぼやけています。 あなたがより専門的になればなるほど、あなたはより多くのタイプに適合します。 それでは、ソフトウェア開発業界で利用可能な開発者の種類の数を見てみましょう。

始める前に、私たちはこの資料を作成するために私たちにインスピレーションを与えたLorenzo Pasqualisに感謝したいと思います。

正直に言うと、私たちのほとんどは三つのタイプのソフトウェア開発者だけを認識しています: フロントエンド、バックエンド、およびfullstack。 それは明白ですが、これは真実の半分に過ぎません。 今日では、同じ技術スタックを持つ異なる開発者は、異なる領域に自分のスキルや知識を適用することはできません。 それはあなたのモバイル開発者にゲームの作成に取り組むように頼むようなものです。 彼はツールを知ることができましたが、彼はゲーム開発者ではありません。 そして、それは開発者のタイプに大きな差別化をもたらします。

主なタイプから始めましょう:

Frontend

昨日、私たちはfrontendersのためのチートシートで最大の記事を書きました。 だから彼らは誰ですか? これは、視覚的なユーザーインターフェイス、美学、およびレイアウトに特化した開発者の一種です。 彼らのコードは、サイトユーザーのコンピュータ上のwebブラウザ上で実行されます。 彼らはwebアプリやwebサイトの作成に取り組んでいます。 ハードウェアは、フロントエンドの専門家が通常考えるものではありません。

彼らの仕事は、コンピュータサイエンス理論よりも人間と機械の相互作用と設計原理の理解を必要とします。

フロントエンド開発スキル:

  • ユーザーインターフェイスのデザイン(UI)
  • ユーザーエクスペリエンスのデザイン(UX)
  • CSS
  • JavaScript
  • HTML
  • UIフレームワーク。

フロントエンド開発者は、デバイスに関係なく見栄えの良いコンテンツを保証するBootstrap、Foundation、Backbone、AngularJS、EmberJSなどのフレームワークや、jQueryやLESSなどのライブラリに精通している必要があり、コードをより便利で時間を節約できる形式にパッケージ化している。 多くのフロントエンド開発者の求人情報には、Javascriptを使用するために広く使用されているAjaxの経験も求められています。

バックエンド

開発者の二番目に人気のあるタイプ。 バックエンド開発者は、エンドユーザーから離れたマシン上で実行されるソフトウェアまたはシステムの設計、実装、機能コアロジック、パフォーマンス、およ それらはデータベース、貯蔵、記録、電子メールシステム等のようなサービスの広大な配列を統合する。

ウェブサイトのフロントエンドを可能にするのは何ですか? そのすべてのデータはどこに保存されていますか? これらは、バックエンド開発のための質問です。 Webサイトのバックエンドは、サーバー、アプリケーション、およびデータベースで構成されます。 バックエンドの開発者は、一緒に、でも最初の場所で存在するウェブサイトのユーザーに直面している側を可能にする、これらのコンポーネントに電力を

バックエンド開発スキル:

  • Java
  • C、C++
  • Ruby
  • Python
  • Scala
  • Goなどまた、MySQL、Oracle、SQL Serverなどのツールを使用して、データを検索、保存、または変更し、フロントエンドコードでユーザーに提供します。 バックエンド開発者のための求人は、多くの場合、Zend、Symfony、CakePHPなどのPHPフレームワークの経験、SVN、CVS、Gitなどのバージョン管理ソフトウェアの経験、および開発および

    Fullstack

    この開発者をウィザードと呼びますが、彼(または彼女)はフロントエンドとバックエンドの両方の作業を行います。 Fullstack開発者は、完全に機能するwebアプリケーションを作成するために必要なスキルを持っています。 サーバー側とクライアント側の両方で作業することは、専門的により多くの機会を開くと考えられています。 彼らはジャック-オブ-オールトレードです。

    フルスタック開発の複雑さは、この絵で説明することができます(もちろん、より多くの技術があります):

    Techcrunch

    を介した画像fullstack開発者は次のことができるはずです:

    • Linuxサーバーをセットアップして設定する
    • サーバー側のApiを書く
    • クライアント側のJavaScriptに飛び込む
    • アプリケーションに電力を供給する
    • CSSに”デザインの目”を向ける

    モバイル開発者

    これは、次のように書いている開発者です。スマートフォンやタブレットなどの消費者のモバイルデバイス上でネイティブに実行されるアプリケー このタイプは、2000年代初頭のモバイルデバイスのブームとスマートフォン市場の爆発の後に登場しました。 それ以前は、モバイル開発は組み込み開発のサブセットと考えられていました(この記事では組み込み開発者についても記述します)。

    モバイル開発者は、iOSやAndroidなどのモバイルオペレーティングシステムの複雑さ、およびそれらのオペレーティングシステム上でソフトウェアを作成するために使用される開発環境やフレームワークを理解しています。

    モバイル開発者スキル:

    • Java
    • Swift
    • Objective-C
    • C、C++、Java
    • Apple iOS、Android、Windows Mobile、Symbianなどのアプリケーションプログラミングインターフェイス(API)
    • HTML5やCSSなどのWeb開発言語
    • >アンテナやampなどのクロスプラットフォームのモバイルスイート(会計-管理-プロモーション)

    ゲーム開発者

    すべてのゲーム中毒の子供は、将来的にはゲーム開発者になりたいと考えています。 しかし、この職業は、複雑で厳しいほどロマンチックで楽しいです。

    ゲーム開発者は、ゲームを書くことを専門とし、開発者の他のカテゴリのいずれかに分類することができますが、彼らは多くの場合、魅力的でインタラクティブなゲーム体験を設計し、実装する上で特定の知識とスキルを持っています。

    ゲーム開発者のためのスキル:

    • DirectX、OpenGL、Unity3D、WebGLフレームワーク
    • c、C++、Javaなどの言語
    • JavaScriptとHTML5
    • モバイルデバイス用のSwiftとJava。

    データサイエンティスト

    このタイプの開発者は、データセットを分析するためのソフトウェアプログラムを作成します。 彼らは多くの場合、統計分析、機械学習、データの可視化、および予測モデリングを担当しています。 かなりロマンチックな、右? しかし、データ科学者が持つべきスキルのリストは、科学関連の多くのものをカバーしています:

    • RやPythonのような統計的プログラミング言語、およびSQLのようなデータベースクエリ言語
    • 統計と有効なアプローチである(またはそうでない)さまざまな技術を理解する
    • 機械学習方法に精通
    • 多変数微積分と線形代数の原則を知る
    • データの不完全さ(欠損値を含む)に対処する方法を知る、一貫性のない文字列の書式設定など)
    • データの可視化と通信は非常に重要です
    • 強力なソフトウェアエンジニアリングの背景を持つ
    • 高レベルの問題を解決する能力

    DevOps developer

    これは、システムの構築、展開、統合、バックエンドソフトウェアと分散システムの管理を行う技術に精通した開発者の一種です。

    方法を説明するには:

    1. 開発者(プログラマ)がアプリケーションを作成
    2. Opsはアプリケーションをデプロイ、管理、監視
    3. DevOpsはアプリケーションを作成し、デプロイ/管理/監視します。

    DevOpsは、デプロイと管理を容易にするためのクラウドとツール/プラットフォームのために可能になりました。 Devopsが必要とするスキル:

    • Kubernetes
    • Docker
    • Apache Mesos
    • HashiCorpスタック(Terraform、Vagrant、Packer、Vault、Consul、Nomad)
    • Jenkinsなど

    テストのソフトウェア開発エンジニア

    このタイプの開発者は、ソフトウェアシステムの品質を検証するためのソフトウェアを書く責任があります。 自動化されたテスト、ツール、システムを作成して、製品とプロセスが期待どおりに実行されることを確認します。 テストでエンジニアに必要なスキル:

    • Python
    • Ruby
    • Selenium。

    Embedded developer

    embedded developerは、一般的にコンピュータとして分類されていないハードウェアで動作します。 たとえば、マイクロコントローラ、リアルタイムシステム、電子インタフェース、セットトップボックス、コンシューマデバイス、IoTデバイス、ハードウェアドライバ、シリアルデータ伝送などがこのカテゴリに分類されます。

    組み込み開発者は、多くの場合、次のような言語で作業します:

    • C,C++
    • Assembly
    • Javaまたは独自の技術、フレームワーク、およびツールキット

    埋め込まれた開発者定義では、開発者のタイプのリストを終了したいと思います。 私たちはあなたのために根本的に異なる主な開発者タイプを命名しました。 しかし、あなたはまた、について聞くことができます:

    –web開発者(web開発の目的は明らかです)

    –アプリケーション開発者(さまざまな種類のアプリを作成することに精通している)

    –セキュリティ開発者(ソフ>–ビッグデータ開発者(まれに会った、このタイプの開発者は、mapreduce、hadoop、sparkなどの膨大な量のデータの分散ストレージと処理のためのシステムを使用しています)

    -グラフィック開発者(彼らはレンダリング、照明、シャドウイング、シェーディング、カリング、およびシーンの管理のためのソフトウェアを書くことに特化)