高レベルのソフトウェア開発の動的な性質にどのように対処しますか?[閉まっている]


25

私は自分自身を高度なソフトウェア開発者と考えています。私はたくさんの読書を楽しみ、それは私のキャリアの過程で私を助けました。私はうまくやっていると思う。

今、私は新しいことを学ぶのに多くの時間を費やしています。すぐにコードを書くことになると、私は嫌いではありませんが、私は家族を始めようとしています。プログラミングで。彼らはある時点で感動的な人物でしたが、もはやそうではありません。

基本は変わらないと主張するかもしれませんが、Delphiで10年間コーディングしていて、誰もが.NETフレームワークを使用していると、違いがあるように見えます。これは、新しいフレームワークを学習するときに、経験豊富な開発者が少ない時間がかかることは事実だが、それはまだありません要求時間と労力を。

ソフトウェア開発者はどのように仕事の要求を管理しながら、家族を始めるなど、あなたを必然的に仕事から外すことに集中することができますか?


1
何、あなたは特異点を管理できるとは思わないのですか?優れた開発者なら誰でもできます!-冗談を言って、私に耳を傾けないでください
...-クライム

回答:


30

あなたが言ったことは際立っていました:「私は定期的に14-15年の経験を持つ多くの先輩を見ています...彼らは今プログラミングをひどくしています」。これは、経験のある人を描くために使用しているかなり広いブラシストロークです。考慮すべきいくつかの点を指摘したいと思います。

  • 若い/経験の浅い開業医は、経験がそれらが悪いアイデアであると示していることを理解できない場合、彼らの先輩がどのようにXまたはYを怠るかを指摘するのが大好きです。しかし、開業医の新しい世代はそれぞれ、こうした過ちを繰り返したいと思うようです。この現象は、プログラミングだけでなく、すべての職業に共通しています。
  • 何年も働いてきたすべての人が経験を積んだ、成熟した、または良いわけではありません。良くなるには努力が必要です。あなたが若いときに多くの努力をすることで、後から引き出せる良い経験を築くことができます。

おそらくあなたが言及している人々は決して良くなかったでしょう。彼らがあなたのことを考えているのを見るのは可能な限りですが、なぜあなたは物事を困難な方法で行うことを主張するのですか?

しかし、家族を始めたとき、新しいおもちゃに遅れずについていく時間ははるかに少ないことは事実です。実際には、子供が年をとるにつれて、子供が年をとるよりも時間が少なくなります。おもちゃはあなたをより良いプログラマーにしない。ツールも同様です。あなたを良くするのは、問題を分解し、実用的なソリューションを構築する能力です。あなたを素晴らしいものにしているのは、他人に良いことを教える能力です。そこから経験が輝き始めます。


1
downvoteについて詳しく説明してください。あなたは私が言ったことを好まないかもしれませんが、それは本当です。
ベリンロリチュ

4
認知彼が持っていることは、彼の謎の大部分です。私がしたことは、その認識に直接対処することだけでした。要するに、ベテランの優れた開発者になる彼の能力よりも、ツールの追跡に関心があります。彼は偉くなるかもしれません。彼の経験から、年配の開発者がひどいことを言っていれば、それは起こりません。それは彼がなりたい場所に到達するための努力をする恐ろしい動機です。
ベリンロリチュ

1
@Berin Loritsch:それは公正な点です。あなたの意図は良かった。//米国では、一般化を行うために他人をscるにはあまりにも多くの人々が自分自身を旅行します。あなたがこれをしているように見えたので、私はあなたの応答に例外を取りました。
ジムG.

1
うまくいけば、時間をかけて学習するのは、新しいテクノロジーの学習に時間をかけるときと、それらを無視するときです。要するに、時間は貴重なリソースです。SOAP / XML RPCが最初に登場したとき、それが実際に何をするかを伝えるには時期尚早でした。ベルトを数年間使用して、苦痛な教訓を学び、RESTベースのサービスを使用してアプローチを変更しました。それに、私たちの老人は、学習に時間をかける価値があるものを見つけるために、無限のエネルギーを持つ若い人を必要とします。トリガーを引くのに少し時間がかかるかもしれませんが、スピードを上げるのに時間がかかりません。
ベリンロリチュ

2
@Berin Loritsch:たぶん私は今それを手に入れているでしょう。事実、問題解決に関してはただ揺れ動く先輩(私の現在の上司を含む)を見てきました。このフレームワークを使用してXを簡単に実行できると言ったとき、彼は喜びに飛びつきませんが、実際に有用であると思ったときに使用することを恐れていません。だから、他の年長者は良くないかもしれないが、彼らは決してそうではなかったので、良くない。新しいテクノロジーのために連絡が取れていないからではありません。気分が良くなりました。(私が書いたものが理にかなっていることを願っています)
ヘマント

20

未来を予測するのは難しいです。しかし、テクノロジーに関係なく、最も重要なことは確かです。

それは、問題を解決する開発者の能力です。

開発者の品質の多くは技術に依存しません。たとえば、分析能力は私が知っている最も重要な品質です。それは数学を学ぶようなものです。それは単に時代を超越しています。


1
はい。さらに、利用可能なツール/スキルが問題を解決していないことを知る能力/誠実さ。そのため、新しいことを学び、「問題を解決する能力」に戻ります。
ピーターロウェル

1
ええと...これは少しあいまいです、そして、それはちょっと馬鹿げています。開発者がまだvb6の「問題を解決する」ことに完全に満足している場合...まあ、私は彼らのコードで働きたくありません。最新の状態を維持することは未来を予測するものではなく、時間/仕事が必要であり、家族がいるときにはその機会が少なくなります。
スティーブンエバーズ

5

私は前向きな考えや具体的な考えがあればいいのにと思いますが、プログラマーがどのように最新の状態を保ち、仕事と家族のバランスを取るかはプログラマーによって大きく異なります。

ランダムな考え:

  • すべてのソフトウェアプロジェクトや企業が、ソフトウェアであっても絶対的な最新技術を必要とするわけではありません。変化は最先端で最も劇的です-最先端をわずかに遅れている企業は、多くの場合、成長と変化の機会を十分に持っていますが、すぐに絶えず変化するための広範な緊急需要はありません。
  • プログラマーが経験を積むほど、最新/最高の流行語の代わりに経験を活用できるようになります。私は、業界で20年以上尊敬している人々が、最新のC#が80年代後半にCで抱えていた問題に対する完璧な答えであるという隠phorをたくさん持っていることに気付きました。以前の問題と解決策を活用することで、少ない調査でテーブルの理解を深めることができます。
  • 私がチームのプログラマーを評価しなければならないたびに、物事を成し遂げ、他の人と上手に遊ぶ能力は、プログラマーが仕事に来たさまざまなテクノロジーに勝ちました。業界は多くの競合する新しい言語、API、およびツールを進化させますが、プロジェクトは一度に競合他社のみを使用する可能性があります。しかし、物事を成し遂げ、他の人が同じことをするのを支援することは決してスタイルを失うことはなく、その方法ははるかにゆっくりと進化します。デジタル時代のIM、ソーシャルメディア、スマートフォン、その他すべてがプログラミングのその側面を変えているわけではありませんも。

また、3〜4年前など、最先端をいくぶん遅れている企業で働くことは興味深いことです。他の人が犯した間違いをより明確に見ることができ、より成熟したツールと実装の利点を得ることができます。
マイケルK

同意する。私は実際に自分自身の少し後ろで働いており、他の人がそれを試す前に少しの間頭を打ち負かしていることを知っているのが好きです。:)
bethlakshmi

5

まず、マイクロソフトは、ソフトウェアを実行するためのソフトウェア開発ツールとプラットフォームを販売しています。これにより、それらが必要かどうかに関係なく変更を行うようになります。それは彼らの変更がすべて役に立たないということではなく、私たちの職業にははるかに安定した分野がたくさんあるということです。経験を積むことで、どの時流がすぐに飛び乗る価値があり、どれが成熟するのを待つことができるかを見分けることができます。

第二に、経験には時間が必要です。15年前に悪い経験をした15年の経験を持つほとんどの開発者は、15年前には悪かった。無能によって適切に説明できることを年齢に誤って帰属させないでください。

第三に、時代遅れの知識を必要とするときに最新かつ最高のものを使用できないと混同しないでください。通常、そこに何があるかを知るだけで十分です。たとえば、最近まで私のWebプログラミングの知識は90年代後半のヴィンテージでしたが、兄のためにWebサイトを構築したかったとき、CSS、jQuery、コンテンツ管理システムなどの「新しい」技術をチェックアウトするのに十分でした。数週間でスピードアップします。言い換えれば、過去10年間に何かを必要としていないなら、あなたが今すぐに調子を合わせたいと願っている緊急事態に陥る可能性は低いでしょう。

最後に、親であることは確かに大きな時間のコミットメントですが、多くの子供のいない人々が考えるように思えるよりも短い時間です。両親は今でも本を読んだり、テレビを見たり、ゲームをしたり、ウェブをサーフィンしたり、時には授業を受けたりすることさえできます。ショッカー、知ってるよ。あなたは少しずつそれを行い、優先順位を付けます。私が完全にgivenめた唯一のことについては、再実行を見ています。


3

10年から15年後にプログラミングのスキルが乏しい人は、ソフトウェア開発を実際に内部化したことはないことを保証できます。ツールセットの習得は、ソフトウェア開発の技術の習得とは異なります。

私は30年以上にわたってコードを書いてきました。私はいくつかの期間を経験しましたが、義務や利益の範囲外でオートパイロットをする必要がありました。年齢が上がるにつれて何をすべきかを学ばなければならないのは、テクノロジーの時流に早く飛び乗ることを避けることです。ほとんどのテクノロジーは誇大広告に対応できません。仕事以外の義務を負っている年上の開業医として、時間にケチをしなければなりません。経験豊富な開業医は、ソフトウェア開発の技術をすでに習得しているため、新しい技術が成熟するまで数年待つことができます。


だから、新しいテクノロジーが成熟したときに最新の状態を維持するのは難しいことではないでしょうか?
ヘマント

1
この業界は周期的です。ほとんどの新しいテクノロジーは、古いアイデアを再パッケージ化したものにすぎません。基礎が強いなら、追いつくのに問題はありません。ソフトウェアエンジニアとしてまともな生活を送るために、技術の最先端にいる必要はありません。
ビットツイダー

2

私の長年の経験:

  • 言語が変更されました(通常は比較的遅い)。
  • 実際に解決できる問題の範囲は拡大しました(多少速くなりました)。
  • ソリューションのサイズと複雑さが(比較的迅速に)増加しました。
  • あるものがありましたflavor of the day(時々良い、しばしば悪い)。

パターンに関する議論で述べたように、4人のギャングはパターンを発明しませんでした。彼らは、すでに適用されているソリューションの用語とテンプレートを考案しました。

他の多くの分野とは異なり、まだ一般的ではない多くのことがあります。私は多くの最先端のものが行き来するのを見てきました。これらの多くはすでに実践されている技術の言い換えであり、通常はある程度成功しました。他の人は多かれ少なかれ去り、ほとんどの場合新しいアプローチがあります。(最近第5世代の言語を見た人はいますか?)

私が見た中で最も効果的なプログラマーは、実績のあるコンポーネントを選択し、実用的なソリューションに組み込むことができます。これには、最先端のものがほとんど含まれないため、一般にプロジェクトのリスクが増大します。すでに行われた作業に基づいて構築する機能により、可能な範囲を広げることができます。

プログラミング言語は、比較的少数のファミリに分類される傾向があります。家族の1つの言語に精通していると、同様の言語での作業が簡単になります。言語で利用可能なライブラリを理解し、それらを活用すると、生産性と信頼性が大幅に向上します。一般的に、適切なライブラリのない新しい言語よりも適切なライブラリのある古い言語を選択します。

Because We Canシンドロームを回避するには、新しいテクノロジーを適用することが重要です。それは一年の風味であるため、新しい技術を追加すると、解決するよりも多くの問題を引き起こす傾向があります。テクノロジーが実際の問題を解決する時期と、複雑さを追加する時期を知ることは有用なスキルです。

本当に優れたプログラマーが新しい問題を解決し、残りは既存のソリューションを使用します。最先端のテクノロジーを必要とする企業はほとんどなく、すべてが堅実なソリューションを必要としています。

私は通常、カミソリの刃を滑り落ちることを後悔しています。実績のある技術を使用して後悔したことは今まで覚えていません。ただし、記述されてnewいるものの多くは、既存のものの再パッケージ化です。通常、この再パッケージ化により、物事が理解しやすくなり、適切に適用されます。


2

誰もすべてに追いつくことができません。おそらく、Microsoftの製品についていくのにかなり忙しかったでしょう。RAILSおよびPythonおよびNoSQLデータベースでのRuby、Hadoopおよびモバイルアプリの作成、CSSおよびHTML5およびjQueryおよびExtJSなどについて見てきましたか?

私はかなり長い間ソフトウェアに携わってきました。私は、超並列データベースの新しいアイデアのような本当に新しいテクノロジーに追いつくようにし、いもの(例、MFC、WinForms、SOAP、XML、EJB)と些細なことを可能な限り無視します。ほとんどの場合、素晴らしい古いアイデアが再パッケージ化され、最終的に採用されます。関数型プログラミング?1977年にINTERLISPを使用していました。携帯電話アプリですか?これは、少なくとも30年にわたって行ってきたのと同じイベント駆動型UIと2Dグラフィックスです。確かに、小さなタッチスクリーンに使用できるアプリを設計する技術はありますが、プログラミングはまったく新しいものではありません。


1

私はあなたのスキルがあなたの言語ドメインではなく問題解決であることに@Amirに同意しますが、私はあなたの懸念に感謝します。

現在の言語を選択する自由がある場合は、可能な限り最初の原則に近いもの(つまり、C ++型の言語)を選択します。これにより、ジョブが新しい​​ドメインにプッシュされるときに学習曲線が少なくなります。あなたの上の抽象化。現在、高レベルの言語のみに投資している場合、抽象化を下に移動するのははるかに困難です(たとえ知覚のみにしたとしても)。

あなたがそのfeedomを持っていないなら、単に仕事であなたの8時間をフルに活用してください..あなたの情熱が高い場合、あなたは「スタック」することはありません。 。


1

それはあなたの仕事とあなたが望む仕事に依存します。開発者がまだ古いテクノロジーを使用しているポジションがあります。まだまだたくさんのCOBOLがあります(何かが変わったと確信しています)。

あなたが説明したような大きな転換を行う会社で働くことは、一部の人々を失業させる可能性があります。時々、会社はトレーニングを受けることに投資をする代わりに、あなたが自分の時間でそれを学ぶことを要求する。

家族を持つことはあなたの仕事の選択肢を制限する可能性があります。モバイル性を低下させることができます。大きな給料日を期待して、給料の半分でスタート時に仕事に行くことができますか?子供や住宅ローンではないかもしれません。

新しいものが常に良いとは限らず、多くの製品が長続きしない。


1

私は医療分野ではありませんが、開発者と医師の例えはどうですか?両方の分野で過去20年間に大きな変化が見られ、変化のペースはかつてないほど速くなっています。すべての医師が追いついていますか?いいえ。すべての開発者が追いついていますか?いいえ。14〜15年の経験を持つ開発者や医師について一般化できますか。より多くの経験があるということは、同様の問題に対するより多くの答えがあるということです。経験は興味を切りますか?長期的ではありません。

泳ぎ続けるか死ぬ必要があるサメのように考えてください。学習を続けるか、死ぬ(または、開発キャリアラインが約10〜15年にピークに達するときに管理職に移る)。


あなたが住んでいる状況についてはわかりませんが、オーストラリアでは、医療専門家が登録(およびそれゆえに医学を実践する能力)を維持するために継続的な教育と検査に従事する必要があります。
落ち着いたエイリアン

0

私は心の奥で同じ懸念を持っていますが、これについての私の最近の考え方は、あなた自身の適応能力を予測しようとするのをやめることです。私が追いつくことができると仮定すれば、私は通常それを行うことがわかります。時代遅れになることを気にするなら、それは自己充足的な予言にすることができます。

あなたが言ったように、つま先に残ります。そして、あなたが追いつくことができない場合、それを過度に汗をかかないでください。テクノロジーには、一周する面白い方法があります。そして、あなたは、主流にすぐれたパフォーマンスを発揮するかもしれません。

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