開発者がテクノロジーと方法論を最新の状態に保つ必要があるのはなぜですか?[閉まっている]


28

開発者が最新のテクノロジー(webrtc、html5およびcss3の更新、新しいjsライブラリ、TDD、DDD、BDDなどのソフトウェア手法など)を最新の状態に保つ必要があることを常にアドバイスしています。

問題はなぜですか?なぜ自分自身を常に更新する必要があるのですか?私たちが知っていることだけに固執し、それを改善することはできませんか?


16
ソフトウェア開発では、両方を実行する必要があります。いくつかのテクノロジーを詳細に理解し、絶えず変化する新しいテクノロジーについていくことです。これが、優れた開発者を見つけるのが非常に難しい理由の一部です。
-joshin4colours

2
これまでの投票に対処するために、私はそれが公正な質問だと思います、そして、私はサイトで正確な複製を見つけることができません。私たちがそれらをきれいにすることができるように、ちょうど悪い答えに目を光らせてみてください。
maple_shaft

4
クラスとしてのプログラマーが、実際にこれらの概念の両方が実際に意味するものが何であれ、最新の「Webテクノロジー」を「常に最新に保つ」必要がある理由を理解できません。好奇心と継続的な学習は、どの職業においても個人の成長にとって確かに重要ですが、「ウェブ技術」が個人の成長の唯一の軸であると仮定する誤ったジレンマにより、これは私の好みにとって少し負荷がかかりすぎます。高い投票数の回答を批判的に見ると、「ゲームにとどまる」ための励ましや動機付けのスローガンを提供する以外に、質問に答える人もいますか?
bmike

1
@bmike:賛成です。もちろん、好奇心c盛な人は常に新しいことを学びたいと思うでしょう。この場合、新しいものとは、あなたが知らない何かを意味します。これは、40年以上前から存在している興味深いプログラミング言語(Lispなど)かもしれません。業界は私たちに最新のものを更新し、デフォルトでより効果的なものにするように促しています。私の主なポイント:それは新しいからといって必要ではない技術を学ぶことは時間の無駄です。
ジョルジオ

1
@RobertHarveyそれは、質問が「どのように?」または何?" それはNCだからです。それはなぜかを問うものであり、私は個人的にそれが関連性があり、答えられると感じています。
maple_shaft

回答:


42

理由のために新しい技術が登場します。通常、その理由は、特定のタスクを達成するのにより効率的または強力であるためです。

レガシーシステムのために古いテクノロジーを使い続けることにはまだ価値がありますが、最終的にそれらが寿命に達したとき、あなたはゲームの背後にいます。

ビジネス上の理由はさておき、新しいテクノロジーを常に学習することで、つま先を見つめることができ、古いテクノロジーなどでも、タスクにアプローチするさまざまな方法に目を向けることができます。


3
+1:新しいテクノロジーの学習は、そのテクノロジーを直接適用したことがない場合でも、しばしば役立ちます。それが提供する新しいビューとパースペクティブは、「古い」テクノロジーを使用して確実に適用できます。
ヨアヒムザウアー

7
一方、新しいテクノロジーの多くは、表面化すると同時に消滅するため、生産性が低下する可能性もあります。
ゴードンベル

@GordonBell-本当です...私は他の人のために話すことはできませんが、私は通常、少なくとも兆候またはより「主流」になる可能性を示すまで、新しいテクノロジーで水をテストしません-それは多くの利点をもたらします教育やユーザーベースなどを支援するドキュメント
匿名

それらは学界のニーズを満たすためにしばしば生じるが、現実の世界ではそうではない。何かについて論文を書かなければなりません。
-dbracey

@dbracey:そうです、そして20年後、ある大企業はこの論文を見つけることができます。一方、研究者は成熟したテクノロジーに発展し、新しいテクノロジーとして販売を始めました
ジョルジオ

27

運がよければ1つの技術スタックでキャリアを構築することは確かに可能ですが1、有給雇用期間中に技術が複数回変更されることはほぼ確実です。既に知っていることは上手くいくことができます(しかし、そうすべきです)が、事前に新しいことを学ぶことで、次のテクノロジーシフトが業界の隅に来たときに学習曲線を削減するのに役立ちます。

あまり明らかではない側面もあります。新しいことを学ぶことは、新しい言語を学ぶことで現在の言語についてより多くのことを学ぶのと同じように、異なる視点から既に知っていることを見るのに非常によく役立ちます2

最後に、新しいことを学ぶことの純粋なエンターテインメントの価値を過小評価すべきではありません。


1たとえば、1965年のキャリアの開始時にPL / IではなくCOBOLを選択します。

2これは、自然言語とプログラミング言語の両方で機能します。


1
+1 @dasblinkenlight私はこの声明が大好きです。「...前もって新しいことを学ぶことは、次のテクノロジーシフトが業界の隅に来たときに学習曲線を削減するのに役立ちます。」これが、私が現在Opaを学んでいる理由です
アンソニー

12

私たちが知っていることだけに固執し、それを改善することはできませんか?

できます、新しいことを何も学びたくないというfallに陥るのは本当に簡単です。あなたは「完全に非接触なプログラマー」だから、あなたの仕事の見込みは次第に減り、あなたのチームメイトはあなたと一緒に働きたいとは思わなくなります。

ほとんどの場合、バランスを保つ必要があります。常に新しいことすべてを学ぼうとすると、あなたは多くのことで貧弱になるでしょう。いくつかのことをよく学び、少なくともそれが効果的に使用できない場合でも、存在するものを知ることに集中してください。


2
10年前と同じようにコードを書いているプログラマーとチームで立ち往生しなければならないことほど、仕事で私を苛立たせるものはありません。フレームワークは進化しました。ツールは進化しました。仕事をもっと楽にしたくないですか?電動工具を持っている大工が一日中ハンドクランクドリルとハンドソーを使用しているのを見ることはありません。彼らは進化しました。また、あらゆる職業と同様に、ニーズを解決するための新しいツールが発明されています。新しいツールを使用せず、古い方法で何かを一緒にハックしようとすることは、通常、構築されるものの品質に有害です。コードでも木でもかまいません。
CaffGeek

2
「フレームワークが進化しました。ツールが進化しました。仕事をもっと簡単にしたくないですか?」:特定の問題を解決する方法は無限にあり、新しいツールや言語が古いものと同等ではなく、より良い場合もあります。しかし、古いものを使用した方がはるかに多くの経験があるため、生産性を高めることができます。NEW == BETTERと頻繁に想定します。代わりに、私たちは常にこの声明に挑戦する必要があります。
ジョルジオ

2
@Giorgio-「次の大きなもの」に対する健全な懐疑心を持つことは一つのことです。真の進歩が過ぎ去ったときに、頭を砂の中に置くことは別です。後者はあまりにも一般的です。
テラスティン

4
@Telastyn:私は両方の態度に50%を割り当てます。時々、新しいテクノロジーが新しいからという理由だけでプッシュされるという印象を受けます。そして、それは物事を行うための唯一の代替(より良いではない)方法です。そのため、新しいテクノロジーに習熟するために数か月を費やさなければなりません。その後、古いテクノロジーと同じように生産性が向上します。しかし、もちろん、砂の中に頭を置くことも間違っていることは正しいことであり、常に新しいことに注意する必要があります。
ジョルジオ

@Giorgio、新しい方法がより良いかどうか、それについて学んだり試したりしないなら、どうやって知るのですか?
CaffGeek

7

それはおそらく、あなたがWeb開発者であり、その分野の技術が非常に不安定であり、言語、プラットフォーム、ツール、および方法論の人気が上昇および低下しているためです。これは非常に高いレベルのフィールドです。その下のレイヤーのいずれかが変更された場合、上の位置が変更されます。そして、率直に言って、それは新しい(っぽい)ものです。新しい分野には革新の余地がたくさんあります。

個人的には、組み込みデバイスで作業し、Cを習得しました。

しかし、私はまだかなり定期的に新しいことを学んでいます。ソケット、SQLライブラリ、ncurses、Cのオブジェクト。そして、方法論はテクノロジーと疎結合されています。ユニットテストは私の学校で恐ろしく教えられましたが、今は頭を包んでいます。先日、依存関係の注入について聞いたところ、それがまさにコンソール機能の単体テストに関する最後の問題の解決方法であることに気付きました。

ほとんどのプログラマは、毎日同じことをする工場労働者ではありません。これらのジョブは自動化できます(また、そうする必要があります)。さらに別のバブルソート実装の費用はかかりません。終わった。


+1:良い答え。必要な、または役に立つと思う技術を学ぶ必要があります。新しいテクノロジーは重要であり、何が起こっているのかを知るために周りを見回す必要があります。しかし、私たちが学んだことを選択するための基準は、NEWだけではありません。また、Cがプログラミングのニーズに合っている場合は、Cが長い間使用されていたとしても、Cを使用するとよい言語になる可能性があることに同意します。
ジョルジオ

また、これは、新しいテクノロジーが多くの場合、既存の古いテクノロジーの上にあるより多くの層であることを指摘しています。VMは何に実装されていますか?CまたはC ++。
-dbracey

依存性注入は、非常に古いアイデアの単なる新しい名前です。
MarkJ

6

私はあなたそこにあるものの多くを無視することができると思います。その多くは誇大宣伝と流行であり、古い技術の新しい名前です。本当の進歩はすぐいなくても新しいものに置き換えられます、本当に古いタイマーは、あなたが新しいを理解するために古いものを理解するべきであると言っていても、古いものに依存します。10年間フィールドを離れた場合、戻ってきたときは2年しか遅れていません。

とはいえ、真の新しい技術を見つけるのは難しい場合があります。OOPを見逃さなかったのは嬉しいですが、最初はほんの一握りの話題の言葉のように見えました。そして、3年後に誰もがそれを忘れたとしても、仕事をするために現在の技術を使用する必要があることがよくあります。

ソフトウェア技術の誇大広告と混乱は、日々対処しなければならない変化を倍増させます。しかし、実際に電子技術急速に進歩しており、それに伴ってソフトウェアを推進しています。そこには本当の変化がたくさんあります。私たちはまだ1965年に使用したのと同じ車両で車を運転し、飛行機を操縦し、宇宙に飛び込んでいます。しかし、1995年の電子ハードウェアは絶望的に陳腐化しています。

あなたの質問に対する深い答えは、電気を扱う科学者とエンジニアは非常に忙しいということです。ソフトウェアは、ハードウェアを活用するために進化する必要があります。さらに悪いことに(むしろ、より良い?)、ソフトウェアはハードウェアに取り残されていると思います。明日、ハードウェア関係者が全員退職した場合、ソフトウェアは少なくとも今後20年間は猛烈に進化するでしょう。

仕事をするために新しいテクノロジーが必要な場合は、それを学ぶ必要があります。20年後もまだ新しい技術である可能性がある場合は、それを監視する必要があります。そして、生きているすべての人のために死ぬ20の技術を見ているなら、あなたはかなり良いことをしています。そして、実際には他のすべてを無視できます。2020年代のすべてのソフトウェアの根底にある明らかな煙を除いて。


+1:誇大宣伝については同意します。多くのイノベーションは(残念ながら)誇大宣伝であり、私たちは非常に慎重に時間を費やす新しいテクノロジーを選択する必要があります。現時点での誇大広告の1つはラムダ(これは、非常に便利な概念だと思います)です。現代のすべての言語にはラムダ(C#、C ++、Java?)が必要です。しかし、ラムダは50年前から存在しており、これらの言語が最初に設計されたときには誰も気にしませんでした。今、彼らは最新の誇大宣伝に続くためだけに、後付けとして追加されています。;
ジョルジオ

@Giorgio:Javaではないことを願っています。ラムダは良い例です(ただし、いくつかよりも単純で、それほど面倒ではありません)。私はC#でそれらを使用し、それらを愛していますが、それらが何であるかを知らないことを後悔するのは、それらでいっぱいのコードを修正するように言われた人だけです。
ラルフシャピン

「Javaではなく」とはどういう意味ですか?それらが導入されないこと?私はラムダが好きで、使用しています(Scheme、Haskell):ラムダは非常に簡単な概念です。しかし、C#、C ++、およびJavaでは、それらは言語の残りの部分に何らかの形で適合しない遅い追加であるように思われます。発明者はLispを知らなかったとは思わないが、ラムダはこれらの言語に属さないと判断した。今、彼らは必須になっています。だから、私はラムダが大好きですが、C#、C ++、およびJavaでは、新しいコンパイラ、書籍などを販売するために使用される誇大広告のように見えます。
ジョルジオ

1
@Giorgio:Javaは、むしろ最小限の言語です(またはそうでした)。他の誰かが書いたことを理解するために、多くのこと(例えばラムダ)を知る必要はありません。私はすきです。C#は最大言語です。新しいラインごとに、これまでに見たことのない技術を紹介できます。書くのは大変ですが、読むのはそれほど大変ではありません。どちらもラムダを必要としませんが、構文上の理由でJavaの場合よりもC#の方が役立ちます。しかし、それらはクールで、数行のコードを節約します。言い換えれば、あなたは正しい。しかし、それ Java ではなく C#です。まだ。
ラルフシャピン

1
@iconoclast:プログラマーとして20年の経験を持つ私は、自分自身を初心者とは考えていません。それでも、Javaは(以前は)比較的シンプルでクリーンな言語であるという事実により、生産性が向上しています(より複雑なソフトウェアを少ない労力で開発できます)。単純な言語は初心者向けであると誤解されていると思います。単純な言語は、経験のあるプログラマであれば、開発の特定の側面(複雑なアーキテクチャの管理、リファクタリングなど)その他の側面(メモリ管理、暗号化された構文など)。
ジョルジオ

3

私見、あなたはバランスを見つける必要があります。それにはスキルと経験が必要です。

専門とする1つまたは2つの言語を見つけ、この言語で進化するフレームワーク/スタイルの変更を最新の状態に保ち、最高のスキルを維持する必要があります。

ただし、この言語がどのように進化するかを確認し、ソフトウェア開発全体のダイナミクスを理解する必要もあります。Javaは10年後に登場しますが、Phytonはそのままで、PHPは.NETとMonoに置き換えられますか?

これらは大規模で戦略的な質問であり、その答えはあなたの分野で非常に高く評価された専門家になることを可能にします。

私見、毎日開発されているすべての現代言語に従うことは、業界全体にとって最大の問題の1つです。専門家がほとんどいない、未開発の行き止まりの言語がたくさんあります。時間を無駄にする人は、たった1言語でも本物の専門家ではありません。ほとんどの場合、すべての言語が混在したコードを記述し、正しく機能しません。同時に、これらの非標準言語に無駄に費やされた工数は、少数のコア言語フレームワークと仕様の改善に費やされる可能性があります。


2

他の人が指摘しているように、多くの新しい技術が新しいニーズに対処するために登場しているため、特定の問題を簡単に解決できます。したがって、あなたは最新の状態を保ち、少なくとも自分の分野で何が起こっているかを知り、どの新しい技術があなたに関連するかを理解する必要があります。

一方で、特定のイノベーションには誇大広告要因もあると思います。非常に古いアイデアもありますが、近年では主流になりつつあります。「新しい方が良い」という理由だけで新しいプログラミング言語(またはその新しいバージョン)がプッシュされ、新しい技術が新しい本、新しいプログラミングツール、新しいコンパイラ、新しいプログラミングコース、または言い換えれば、収益。

それは、あなたが以前に使っていた技術WRT任意の本当の利点を見ることなく、新しい技術を習得しなければならないことが起こることができるようにそうでなければ、あなたのスキルを見ているため、市場外とリスク旧式。新しいテクノロジーの開発をフォローし、どのテクノロジーが生産性を向上させ、どのテクノロジーが履歴書の見栄えを良くするのに便利であるかを理解するのはあなた次第です。

結論:新しいものか古いものかに関係なく、あなたが本当に有用だと思うものを学ぼうとするべきだと思います。


2

なぜなら、「あなたが知っていることに固執する」ことは、「それを上手くやる」ことの失敗を表すからです。新しいプラクティスやフレームワークを採用する必要はありませんが、少なくとも一般的なものについては十分な情報に基づいた意見が必要です。Web開発では、質問するだけでインタビュアーには恐ろしく見えます。Web開発者には、2000年以降に新しいことを学ぶのをやめたいと思っている人のキャリアの死体が散らばっています。興味がなければdevから離れてください。あなたが新しいことを学ぶ部分が仕事のように感じるなら、それはひどい$ /時間の比率です。


「あなたが知っていることを固執する」ことは「それを上手くやる」ことの失敗を意味するからです。次から2、3年ごとに、表面的な知識しか得られません。つまり、それらのどれにも本当に精通することはありません。
ジョルジオ

少し分岐して他の言語が実際にどのように機能するかという観点から理解していなかったり、ベストプラクティスの現在の概念に目を光らせたり、人々が実際に何をしているかを調べたりしていなかった場合、私はJavaScriptを理解しませんフレームワークとライブラリのフード。新しいアイデアに定期的に触れることなく、開発者としてキャリアに見合った速度で改善することは本当に可能だとは思いません。
エリックReppen

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