学ぶ必要のある特定のスキルセットを持つ開発者やジェネラリストを探すべきですか?[閉まっている]


8

このサイトとSOのおかげで、販売したいソフトウェアのプロトタイプを作成できましたが、残念ながらプロトタイプは機能しますが、コードの品質は非常に低いと思います。私はOOPやデザインパターンをあまり使用していなかったので、私のコードは理解できますが、通常の開発者はそれを読む必要があると気絶するでしょう。

だから私はそれをもう少し良い品質にするために開発者を雇い、私が正しく行っていないかもしれないAPIの私の実装のいくつかを改善したかったのです。開発者を雇うのに問題があります。

私は2人の開発者に会い、私のソフトウェア仕様を読んでもらいました。問題は、私のビジネスのドメイン知識(完全に理解可能で、大したことはありません)が欠けていることですが、Hadoop、Hbase、 Cudaなど。私は、map / reduce、bigtables、および使用したその他のテクノロジーの説明に多くの時間を費やしました。このサイトの人々とのやり取りから、それは常識だと思いましたが、私が知り合った人々は、これらの事柄に対処する必要がないため、知らなかったと述べました。

私の質問は、請負業者の開発者を採用しているソフトウェアプロジェクトの場合、開発者が基礎となるテクノロジーの経験がない場合は危険ですか?または、別の領域で達成された一般的な開発者が現実的に新しいテクノロジーを習得できますか?私は非常に迅速にエンベロープ計算を行いましたが、何時間も働くテクノロジーの経験がない学生または開発者を雇う場合と、2倍の料金で半分に終わる非常に経験豊富な開発者を雇う場合の先行費用は同じだと思います時間ですが、他にどのようなリスクを考慮または心配する必要がありますか?また、ジェネラリストを雇った場合、請負業者であれば、HadoopまたはCudaを習得するのにかかる時間を払う必要があります(ビジネス上理にかなっているようですが、再びスキル)。

私は少し混乱しているので、どんな提案も素晴らしいでしょう。


1
「または、別の領域で達成された一般的な開発者は、新しいテクノロジーを現実的に取り入れることができますか?」もちろん、そうでなければ、何十年も前からの新技術はこれまで追いついていなかっただろう。
DarenW 2012年

6
I think a normal developer would faint if they had to read it-それは正直なところだ。
Joel Etherton、2012年

どのプログラミング言語?
GlenPeterson 2012年

1
「Hadoop、Hbase、Cudaなど。常識だと思った」...そう思ってびっくり。私は間違っているかもしれません。もしそうなら、私はもっと驚きます。
NoChance

1
「時間外」に取り組む傾向のある開発者は、自分の条件で(通常、ペットプロジェクトの仲間と協力して)行います。ほとんどの場合、貧弱なコードやプログラミングを行う非プログラマーに対する許容度は低くなります。それは、メカニックに(彼の9-5の仕事が終わった後に)来て、週末に修理を試みた後で車を元に戻すのを手伝ってくれるようなものです。
mattnz 2012年

回答:


19

開発者が基礎となるテクノロジーの経験がない場合、それは危険ですか?

はい。(学習には時間がかかり、間違いを犯すことはしばしばプロセスの一部です。)

または、別の領域で達成された一般的な開発者が現実的に新しいテクノロジーを習得できますか?

はい。(新しいテクノロジーを採用することは、ジェネラリストが常に行うことです。新しいことを学ぶことができなければ、プログラマーとして長くは続かないでしょう。)

私のテクノロジーに経験がなく、何時間も働く学生または開発者を雇う場合と、2倍の料金で半分の時間で終了する経験豊富な開発者を雇う場合の先行費用は同じだと思います

「テクノロジーXの経験がない」と「経験がない、期間」との間には大きな違いがあることに注意してください。新しいフレームワークや言語を学ぶ必要があることと、開発者として最初の仕事を始めて、正しい方向に導く経験のある人がいないことは、まったく別のことです。

他にどのようなリスクを考慮または心配する必要がありますか?

設計および開発プロセス中に下される決定は、後で変更するのが困難またはコストが高くなる可能性があります。賢く経験豊富な開発者は、開発時間だけでなく、はるかに多くの時間を節約できます。一方、自分の仕事が本当に得意な人は、それに応じて請求することができます。

私は少し混乱しているので、どんな提案も素晴らしいでしょう。

おそらく、Joel Spolskyの記事が役立ちます:インタビューのためのゲリラガイド。一言で言えば、ジョエルは2つのことを探すと言います:1)賢い、2)物事を成し遂げる。それを超えて、私はあなたが一緒に働くことができ、あなたが達成しようとしていることを理解し、あなたと一緒にそれに向かって努力する人を探すことをお勧めします。


4

初心者が2倍の時間で半分の価格でまったく同じことを行えるとしたら、それはすべてうまくいきます。現実的には、初心者が解決できない問題と回避できない落とし穴があります。同様のコードは得られないと思います。あなたはあなたの期待を下げることになるでしょう。

これは、デザインに関してはより当てはまります。経験豊富な開発者が設計に取り組むための追加料金を支払います。費用対効果が高いと思われる場合は、初心者を使用してコーディングボリュームを支援できます。


3

はい。どちらも。

理想的には、途中で足を上げる必要のある人物を見つけることができますが、技術的知識またはドメイン知識のいずれかで彼らを運ぶことはできません。ただし、多くの力が、解決しようとしている人員配置の問題に影響を与えます。

ドメインスキルが不足している理由

開発者は巡回グループであり、市場の要求に応じてアプリケーションドメインからアプリケーションドメインに移動します。何かが熱くなっている場合、競争が市場の一握りを除くすべてのプレーヤーを駆り立てるまで、10社、あるいは多分100社、さらには1000社がそれを追いかけていきます。その結果、開発者がビジネスドメインの知識の事前採用に深く入り込むインセンティブはzipです。あなたがかなり斬新な何かをしているなら、あなたはドメインの知識を持つ他の人を見つけることができません。競合他社、特に元競合他社がいる場合は、ドメイン体験の探求をあきらめる必要はありません。

ホットショットの開発者を雇う場合、彼らはポータブルスキルの開発に最も関心がある可能性があります。そのため、ドメイン知識のために多くの重荷を背負わざるを得ない場合があります。おそらく、システムエンジニアに、開発者が使用する機能関連のドメイン知識を文書化することを検討する必要があります。おそらく、スマートと物事を成し遂げる間、あなたは物事を成し遂げることに強い人を選ぶでしょう。しばらくの間一緒にいることに興味があり、ビジネスとテクノロジーの両方を学び、会社のニーズを自社のニーズとほぼ同じにする開発者を見つけることができる場合、それは計画が関係する賢い人よりも長期的かもしれません登って、かなり頻繁に、外に出ます。

高い需要スキル

需要の高いことをしている場合は、候補者を引き付けるためにもっと多くのことをしなければなりません。視界が低く、見返りに提供する必要があるものが競争よりも優れている場合は、多額を支払うか、他のスキルを持つ候補者のプールから必要な才能を伸ばす必要があります。

ドメインスキルまたはテクノロジースキル?

質問では、Hadoop、Hbase、Cuda、map / reduce、bigtablesなど、候補者が不足しているいくつかのスキルについて言及します。これらのドメインスキルは、お客様固有の業界固有の製品を作成するための詳細ではなく、テクノロジーに基づいているため、私がこれらのドメインスキルと呼ぶかどうかはわかりません。これらの各スキルは移植可能であり、特定の業界が自動化され、支配されたり、ニッチを見つけたり、他の分野に移行したりした後でも引き続き価値があると思います。

技術スキルの成長は優れた候補者を引き付ける

テクノロジースキルの採用とトレーニングの利点は、賢く、物事を成し遂げる、積極的でキャリア志向の開発者が、自分自身をトレーニングすることで、長くやりがいのある将来の何かを学ぶ機会に飛びつくということです。課題と管理しやすい新しいテクノロジーミックスを維持している場合、必要な開発者の多くは、短期的および長期的な相互利益のためにチームの1つであることを受け入れます。


2

開発者が基礎となるテクノロジーの経験がない場合、それは危険ですか?または、別の領域で達成された一般的な開発者が現実的に新しいテクノロジーを習得できますか?

開発者は技術を選ぶことができます(最終的にはそうするでしょう)が、それはあなたの要件を満たしていないと思います。

動作するソフトウェアはありますが、それをレビューし、リファクタリングし、さらには書き直したいとします。ソフトウェアパターンなどがありますが、プラットフォームとフレームワークの一意性のためにプラットフォームとフレームワーク間で実装が異なるため、これを実行するには、専門家または少なくともいくつかのテクノロジーの経験を持つ人が必要です。

ビジネスの問題を解決してドメインを習得し、ソフトウェアを実装しました。これで、アプリケーションをスケーリングして長く健康的な生活を送ることができるようにするための技術的なガイダンスが完了しました。同様のシステムで、または同様のテクノロジーを使用してこれを実行した人が必要です。

プラットフォームが異なれば、完全に異なる考え方や経験が必要になることがよくあります。あなたはビッグデータ/並列計算タイプのプロジェクトに取り組んでいると思いますか?Web開発者または統合開発者は、プロトタイプを書き直して機能させることができるはずですが、なぜ彼らがあなたより優れていると思い込むのですか?

完璧な人がいない可能性があるため、頑張らないでください。ただし、開発者は、使用しているテクノロジーや概念の少なくとも一部に精通しているか、求人広告で言うように、新しい技術と概念を学ぶ。彼らがHadoopやMapReduceを聞いていない場合は、警報ベルが鳴っているはずです。


1

あなたは本当にコードレビューやトレーニングを求めています。特にコードレビューの場合は、さまざまな背景を持つ熟練したプログラマーのグループが最適です。彼ら全員が同意したら、彼らがあなたに言うことをしてください。彼ら全員が異なる意見を持っているとき、あなたはちょうど正しいことをしています。:-)

mapReduce、CUDA、Hadoopを使用していて、1人のレビュー担当者が必要な場合は、専門家を雇ってください。私の最初の選択は、学校に加えて経験を持つ人を探すことです。また、自分でトレーニングしたり、ユーザーグループに参加したりすることも検討してください。そのような友達がいる場合は、いくつかの重要な個別の質問をして友達に見せることもできます。

Programmers.StackExchangeでは、批評用のコードを投稿できますか?もしそうなら、私はページだけを選ぶでしょう。間違っているとわかっているものを選びますが、その理由はわかりません。

どのプログラミング言語を使用していますか?



0

私は、Hadoop / MapReduceにさえ完全に精通していないことを、開発者が最新の状態を維持しようとしない可能性があるという警告の兆候と見なします。

とは言っても、それは単なる兆候であり、雇用禁止ではありません。彼らにFizzBu​​zzまたはそのような性質のものを与え、彼らがそれを過ぎてあなたのコードを見せて批評を求めたら。おそらく、意図的にバグのあるものを選択しますが、その議論はより興味深いものになるので、あなたが大丈夫だと思うものも選択してください。


0

これについてアドバイスするのは難しい。いくつかの考えだけ:

私のテクノロジーに経験がなく、何時間も働く学生または開発者を雇う場合と、2倍の料金で半分の時間で終了するが、他にどのようなリスクを検討する必要があるか、または他にどのようなリスクを考慮すべきかについて、初期費用は同じだと思います心配?

紹介で書いた内容を作成します。

  • my code quality is very low
  • I didn't use much OOP
  • I wanted to hire a developer to make it a bit more better quality and improve some of my implementations

これに答えることは簡単です:

あなたが開発者を雇う場合は経験がない、それは非常に低いあなたができること、コードの品質を向上させます。経験のないプログラマーは助けにならない

短期的には安くなるかもしれませんが、初心者を雇うには後で支払うことになります!

他にどのようなリスクを考慮または心配する必要がありますか?

コストだけを計算して、あなたとあなたの製品を稼働させるために間違わないでください。さらに重要なのは、メンテナンスのコストです。

直接的な結果として、前の段落で述べたことのうち、テクニカル負債と呼ばれるものを考慮する必要があります。あなたが言ったように:コードベースは良い形ではありません-言うまでもなく、すでに技術的な負債があります。そして、熟練していない労働者を雇うことで、あなたは借金を増やしています。おそらく今から数年後には、保守不可能なコードベースになってしまい、a)最初からやり直し、b)最終的に顧客を失うことになります。これは、どちらの場合も同じです。つまり、お金の損失です。

また、ジェネラリストを雇った場合、彼らが請負業者である場合、彼らがhadoopまたはcudaを学ぶのにかかる時間にお金を払うべきですか(ビジネス的に意味があるようですが、再びスキル)。

明らかに:はい!これをしない理由は何もない。彼らは知識を必要とし、あなたはそれを得る必要があります。

彼らが優れた開発者である場合、彼らは簡単に新しい(または少なくとも新しい)テクノロジを簡単に理解できるはずです。可能性は高く、仕事を真剣に受け止める場合、レーダーにテクノロジーが搭載さています。つまり、実際にはテクノロジーで生産的なことは何も行っていませんが、その使用方法時期はわかっています。

私は自分にはHadoopの知識がなく、認めなければなりませんが、それが適切な解決策であり、理論上どのように機能するかについて公正に理解できる場合があることはわかっています。ですから、私が生産的になるのに時間がかからないはずです。

私は2人の開発者に会い、彼らに私のソフトウェア仕様を読んでもらいました。問題は、彼らのビジネスのドメイン知識(完全に理解可能で、大したことはありません)が欠けていることですが、Hadoop、Hbase、 Cudaなど。マップ/リデュース、bigtables、および使用したその他のテクノロジーの説明に多くの時間を費やしました。

あなたが最もよく知っているので、あなたのビジネスを説明することはあなたにとって最も簡単な部分であるべきです。あなたは誰もがあなたと同じくらいあなたのビジネスを知っていると期待することはできません。

テクノロジーについても同様です。

膨大な数のフレームワーク、言語、ツールキットが存在します-それらをすべて知っている開発者を見つけることはほとんどありません。

もちろん言うことができます:$ Technology_du_jourはメディアで宣伝されているので、すべての開発者が実用的な知識を持っていることを期待しています。しかし、それは現実ではありません。

開発者としての私の仕事はトレードオフです:私はいくつかの言語といくつかの技術の実用的な知識を持っています。これにより、多くの点で柔軟性が生まれます。必要に応じて、現在のツールの詳細な理解を深めることができますが、季節が進むにつれて、ツールと言語は発展します。

tl; dr;

1)可能であれば、ドメインと目的のテクノロジーの専門家を雇う

2)できない場合は、

一部とジェネラリストのための2A)ルックプロジェクトの専門知識やプロジェクトで使用されている技術の知識を持っていない可能性があり、

3)本当に本当に誰もいない場合:学生を雇う。

あなたは技術的な負債を持っています、それを増やさないでください!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.