プログラミングは、底辺への競争における職業としてですか?[閉まっている]


41

プログラミング業界は底を争っているように思えます。私たちが次の慣行をとる場合:

  1. ベストプラクティスの実装に時間をかけない
  2. 他の人のコードを可能な限り使用する(責任としてのカスタムコード)
  3. ますます高レベルの言語を使用して生産性を向上させる
  4. 「プログラミング」を大幅に簡素化し、コードの背後にある配管を理解する必要のないGUIベースの開発「ツール」

これらのことは、私たちが他のオフィスワーカーのようになろうとしていることを暗示しています。スキルを必要としないこと(交換がより簡単)、事前に構築されること(プロジェクト時間の短縮)が雇用主の利益になります。

ここでの私のポイントは、a)スキルと雇用主の経済的利益との間にずれがあるということです。b)存在する場合、それをどのように緩和して専門的な基準を実施しますか?


28
まあ、誰かがまだそれらのツールを作成する必要があります。だから、ある意味では、優秀なプログラマーを退屈な仕事から遠ざけるのは競争です。
ジェレミーハイラー

11
ソフトウェア開発の未来がコンポーネントのドラッグアンドドロップに帰着すると信じている人がいるのはなぜですか。真剣に、あなたはそれがそんなに簡単になると正直に信じていますか。
ペムダス

3
@Pemdas:進歩や変化があれば人間が恐れる。150年前の蒸気機関車は悪とみなされていました。

4
@pierre私はあなたがどこに行くのか理解していない。
ペムダス

3
ダイクストラ、それはあなたですか?
l0b0

回答:


6

あなたは非常に心を打つ質問をしたと思います。

GUIコーディングツールを作成すると、ロボットが組立ラインの作業者を仕事から外すのと同じくらいプログラマが仕事から外されます。私の意見では、仕事の損失がありますが、次の仕事がどこにあるかというシフトもあります。

タスクを完了するための技術は変わりますが、タスクはまだ完了する必要があります。車を運転する前に、まだ車を作成/組み立てる必要があります。アプリケーションが機能するためには、コード/ビジネスロジックをまとめる必要があります。

技術の変化は、プログラマーに選択肢を提供します。GUIベースのプログラミングまたはGUIツールのプログラミング...または...まったく別のものを学びます。

従業員のスキルと雇用主の利益との間に不整合が生じる可能性がありますが、特に雇用主が精通している場合は長くはなりません。したがって、雇用主と従業員の双方にとって最大の利益となるのは、相互に利益をもたらすものを追求することです。しかし、必然的に一方が他方より先になります。うまくいけば、それはあなたです(-:

ご多幸を祈る、

KM


私の考えは、より専門的なソフトウェア開発に焦点を当てることです:数学的、統計的、および計算集約的なプログラミング(ただし、3番目はVMパワーの増加に伴いスタイルが崩れる可能性があります)。私はこれらの専門的なドメインが最後まで競争しているとは思いませんが、私はそれらに経験がないので間違っているかもしれません。
q303

@ q303:利用可能なすべてのコンピューターの電力を消費するアプリケーションが常にたくさんあります。
デビッドソーンリー

58

あなたが言及したトレンドに、私はもう一つ追加します、私見はそれらを説明します:

これまでよりも非常に多くの(必要な)プログラマーがいます。

プログラミングを必要とする、または含むタスクの量は増え続けており、プログラマーの数よりもさらに高い割合で増加しています。現在、平均的な車にはいくつかのマイクロチップが搭載されています。5年後には、冷蔵庫とトースターにチップが入っているかもしれません。10年後、あなたの下着は?...そして、誰かがこれらのソフトウェアを作成してこれらを機能させる必要があります。そのため、自動化可能なものをすべて自動化し、「生産性」(定義されている場合でも)を改善するために、あらゆる努力が払われています。そして、ますます多くの新鮮な脳が採用されています。

これは、今日のアクティブなプログラマーの大半が経験が浅い、および/または自分の仕事に対する準備ができていないことを意味します。適切なレベルの経験を得るには数年かかり、そこに留まるには絶え間ない学習が必要です。一番下の行は、ますます多くのプログラミングの仕事がますます挑戦的になっています。しかし、彼らを探している人にはまだ十分な挑戦があります

上記のあなたのポイントに対して悪魔の擁護者を演じさせてください:

ベストプラクティスの実装に時間をかけない

多くの人はそうではなく、多くの人がそうです。10年前、ユニットテストとアジャイルアプローチを初めて発見したとき、同僚は誰もそれが何であるかを少しも知りませんでした。今日では大学のほぼ標準的な資料であるため、多くの新卒者がすでにそれを理解しています。

他の人のコードを可能な限り使用する(責任としてのカスタムコード)

何とは対照的に?車輪の再発明?または、他の人のコードを使用してそれを回避しますか?

問題を解決するために(ほとんど)支払われていることに注意することが重要だと思います。1行のコードを書くことなく問題を解決できる場合でも、クライアントは満足します。特に、このようにすれば、より信頼性の高いソリューションをより迅速かつ安価に作成できます。私はそれについて何の問題も見ていません。

ますます高レベルの言語を使用して生産性を向上させる

アセンブリですべてをコーディングするのではなく、;-)

「プログラミング」を大幅に簡素化し、コードの背後にある配管を理解する必要のないGUIベースの開発「ツール」

私見どのツールも悪用される可能性があります。これは、GUIビルダーが必ずしも完璧または優れていたと言っているわけではありません-それらのほとんど(または少なくとも一部)は制限内で使用可能です。しかし、誰かがこれらの制限を知らない場合、それはツールまたはユーザーの問題ですか?

一般的に、私は(それを証明する証拠はありませんが)パンチカードとマシンコードの時代に、既存のコードのほぼ同じ割合が現在と恐ろしいものであったと信じています。

  • コードの全体量
  • 部外者がそのようなコードを見ることの可能性

はるかに少なかった。

現在、インターネットとDaily WTFにより、最悪の例に日々さらされています。テロや地震、離婚したセレブに関するすべてのニュースを見て、この世界がどれほど危険で不道徳になったかを叫ぶようなものです。


+1私たちは「あらゆる解決策が新しい問題を生み出している」フィードバックサイクルにあると思います。それがネガティブループであるかポジティブループであるかは言えません。
マグロブ

6
+1優れたコーダーのみがすべてをゼロから書き直した場合、私は喜んでくだらないプログラマーになります。
-AndrewKS

1
稼働時間が許容できない限り、私は下着にチップを入れたくありません!

@Thorbjørn:下着の許容稼働時間は?それは、自己洗濯した場合、私はそうでなければ、(!Iの希望)とにかく毎日それらを脱いなきゃ...稼働時間を心配したい
ディーン・ハーディング

1
@ back2dos、これは意見の相違とは思わない。太線は、傾向、または必要に応じて企業/マネージャーのビューを示しています。開発者の見解を述べる。業界の品質レベルを上げるために、より良いプログラマー、より実践的な教育、メンタリングをすることが理想的であることに、あなたに完全に同意します。しかし、悲しい現実は異なります。ソフトウェアはコモディティになったため、多くの人々は、そのような意思決定の意味を理解せずに(短期コストと長期コストなど)、迅速かつ安価に入手できると期待しています。
ペテルトレック

29

状況を正確に要約しますが、意味を完全に誤解します。

ソフトウェアがより強力になるにつれて、ソフトウェアがそれに伴ってスケールするタスク。確かに、今日では、Accessを使用できるときにデータベース連絡先データベースを作成して電話連絡先データベースを作成する必要はないかもしれません。そして、あなたがただワードプレスに行くことができるとき、ブログをセットアップするためにウェブプログラマーである必要はないかもしれません。しかし、15年前にはこうしたことを行うにはプログラマーである必要がありましたが、現在プログラマーがしていることは、15年前にできることよりも桁違いに大きいです。

このように言えば、今から100年後、facebookやgoogleのような複雑なシステムをセットアップするのは簡単です。私は彼らのウェブページについて話しているのではなく、彼らのデータセンターを意味しています。誰でもできるようになります。まだ使用していれば、携帯電話に組み込まれます。しかし、プログラマはまだ存在し、100年後にはそのような「些細な」システムに取り組んでいないかもしれませんが、はるかに複雑で洗練されたシステムに取り組んでおり、ここでは誰もその範囲を理解し始めることさえできません規模。そして、現在のようなシステムは、プログラマーと呼ばれる人々がその時代の技術を極限まで押し進めることに特化することを選択するため、平均的なオフィスワーカーの手の届かないところにあります。


興味深い視点
...-q303

10
GrandmasterBにSFを書いてほしい。
オコド

5
自分の携帯電話に自分のグーグルデータセンターがあるのが待ち遠しい。
マーティンヨーク

3
@Slomojoあなたが思うかもしれないほどのSFではありません。私が3年生のとき、家の近くの大学でコンピューターのデモンストレーションを訪れました。これは一般向けの実験的なショーケースでした。展示されているプログラムの1つは、三目並べのプレイ可能なゲームでした。当時は、コンピュータと対戦することができるのは、あっという間でした。これは60年代後半でした。ああ、ああの瞬間は今から100年後でしょうか?
ビル

内容はファンタジーのものではなく、ポンが革命的だった頃でした。任天堂の子供たちも技術の急激な変化に関係していると確信しています。
オコド

18

私はこの種のことを今40年間読んでおり、予測の始まりにはいませんでした。まだ起きていません。

COBOLは、ビジネスプログラマの必要性を取り除くことを目的とした元の開発ツールであり、アセンブラよりもはるかに高レベルの言語でした。コードライブラリ(独自のコードを記述する必要を避けるため)は、同様の古代のものです。

プログラマーではない人がプログラミング作業のようなことをできるようにすることがしばしばあります。1980年代の「第4世代言語」、Excelのような派手なスプレッドシート、レポートジェネレーターなどがありました。成功した場合、彼らが一様に行ったことは、プログラミングから一部の枠組みを取り除き、プログラマが他のより興味深いことを行えるようにすることです。

このパターンは永遠に続くことはありませんが、プログラミングが実際に下り坂になっていることを確信させるには、理論的な議論や予測以上のものが必要になります。

COBOLから最新の開発ツールまでの問題は、不正確な仕様を採用して、それを正確で有用なものに変える機能を置き換えないことです。それがプログラマの基本的な能力であり、なぜ私たちが長い間立ち去らないのか。


7
+1-「不正確な仕様を採用し、それを正確で有用なものに変えてください。」
オコド

+1、あなたほど長くこのゲームに参加したことはありませんが、間違いなく、この質問が20年にわたって述べ、また述べたのと同じようなことを聞​​いたことがあります。
Carson63000

4glの+1正確に言うようになりました。すべての約束、非常に少ない配信:)
イアン

「このパターンは永遠に続きません」-なぜですか?
イアンウォーバートン

3

アセンブリプログラミングとFORTRANプログラマは、構造化プログラミングと広範なインタープリターが登場するときに、おそらく同じことを言っていました。

結局のところ、ソフトウェアは、以前は手作業で行われていた何かを自動化することを意図した作成物です。中規模企業の経理部門では、以前は数十人が必要でしたが、今ではすべての作業を1人または2人の作業で行うことができます。その結果、目標の投稿が移動し、会計士からの追加の能力基準が期待されるようになりました。

ムービーのレンダリングにこれまでにないほど時間がかかります。コンピューティング速度が大幅に向上しているにもかかわらず、アニメータはシーンの複雑さとディテールの増加を要求しています。トイストーリーのキャリバーアニメーションは、1995年のように2010年には受け入れられません。ツールが進歩するにつれて、機能も期待も高まります。

ドラッグアンドドロップまたはその他のプログラミング方法が一般的である場合、世界はさらに困難で複雑な問題に対するソリューションを要求し、それらを解決するためにそれらの新しい派手なツールを使用するプログラマが必要になります。目標の投稿が移動します。


3

私はまだやるべきことがたくさんあると指摘する答えの大部分に同意しますが、私はあなたが考慮すべき別の答えを与えます:

はい、そうです、そうすべきです

私は他の人ができない問題の解決策を設計するためにここにいます。ツールセット内の問題を解決するのに時間を費やして、設計を実装する方法の細かい部分をすべて処理することは無駄です。

高レベルの言語や、よりシンプルでより抽象化されたツールに行くことを恐れる唯一の理由は、それらのツールがしばしば邪魔になる仮定を行い、望ましい実装を得るために仮定を回避するために時間を必要とすることです。

良い問題解決者がいるよりも、解決すべき問題が常に多くあります。開発者チェーン全体が非常にシンプルになったとしても、ほとんどの人はすべてのエッジケースの問題に対する正しい解決策を見るのが苦手なので、設計されたソリューションのほとんどは不十分であるか、人々がより良いソリューションにお金を払うほど十分に非効率です優れたソリューションを作成するために考慮する必要があるwhat-if。

私たちの仕事は、他の大部分よりも問題を解決することです。ツールチェーンの複雑さは、邪魔にならないように、あなたが構築し、何か良いものを構築できる限り、全体像ビューにはそれほど関連しません。


1

プログラミングテクノロジーは変化する可能性がありますが、ソフトウェア製品の根底にある複雑さは依然として存在しています。ダイアグラムまたはフローチャート(または他の「単純な」方法)を使用してソフトウェアを完全に作成できる場合、ソフトウェアの複雑さをすべて理解し、対処する必要があります。そのため、会社の製品を完全に知っているプログラマーを雇って、それらを更新したり新しい機能を追加したりすることが重要です。また、従業員がソフトウェア製品を習得するにはかなり時間がかかる場合があります。


1

何を自動化または棚上げすることができるかに関係なく、ほとんどのパッケージソフトウェアは2つのカテゴリに分類されます。

  1. 使い方は簡単ですが、ビジネスが本当に必要とするものとは完全には一致しません
  2. 高度にカスタマイズ可能ですが、カスタマイズを理解して活用するには専門家が必要です

標準の生産性ソフトウェア(メール、ブラウザ、ワードプロセッサなど)を忘れたのではないかと思います。カテゴリ1のソフトウェアは、市販ソフトウェアをカスタマイズするためにソフトウェア開発者を雇う企業につながります(可能な場合)。カスタマイズ可能なシステムの内部と外部をよく知っている人は(SAP、PeopleSoftなどを考えて)強く求められているか、死にかけている(SAPやPeopleSoftに似ていないシステムを考えて)同じ市場浸透がある)。

開発者には常にニーズがあります。私が見ているのは、以前は手作業で退屈で繰り返し作業だった作業の多くが自動化されたことです(O / RMを使用するよりも手作業でデータにアクセスするためのコードを書くことを考えてください)。これにより、開発者は少ない労力でより多くの価値をビジネスに提供できます。


1

私はあなたの主張を受け入れません:

  1. ベストプラクティスの実装に時間をかけない

それ以外で。

  1. 他の人のコードを可能な限り使用する(責任としてのカスタムコード)

コードの再利用はベストプラクティスです。使用済みコードがテストされます。もちろん、多くの人によって維持され使用されている優れたソースのコードを使用する必要があります。

  1. ますます高レベルの言語を使用して生産性を向上させる

生産性自体は悪くありませんか?

  1. 「プログラミング」を大幅に簡素化し、コードの背後にある配管を理解する必要のないGUIベースの開発「ツール」

ツールがジョブを実行する場合:使用します。そうでない場合:拒否します。約束が成り立ち、人々が本当にコードを理解する必要がないなら-よくやった!あなたはこれが成り立たない約束だと言っているようですか?

(ここの数字は自動的に間違って表示されます。:))


重要なのは、効果的にするために必要なスキルは少ないということです。GUIベースの開発「ツール」について本質的に悪いことは何もありません。それらの悪い点は、繰り返し使用すると、私たちがやることに必要なスキルレベルが低下することです。同じことは、他の人のコードを使用する場合にも当てはまります。最終的には、Googleプラットフォームでプログラミングを開始します。最後に、高レベルの言語は、スキルを必要とする多くの微妙な点を取り除きます。これは雇用主、プロジェクト管理の観点から悪いことではありません。しかし、それは私に職業の未来を疑問視させます。
-q303

それはすべてあなたの要求に依存します。特別に分散されたデータのために微調整された特別な目的の並べ替え手法が必要ないときは、いくつかのクイックソートアルゴリズムでライブラリを完全に使用できます。なぜ必要になる前にそれを学習する必要があるのですか?フォントカーニング、データベースアクセス、GUIデザインなど、何か他のことを学ぶ時間が必要なのかもしれません。スキルはあればいいのですが、スキルが多すぎる場合があります。時々それは言うのが正しい:YAGNI。
ユーザー不明

1

ビジュアルプログラミングは、テキストベースのプログラミングと同じくらい有効または軽orに値します。

視覚的にプログラミングする場合、特定の欠陥と課題がありますが、無視されると潜在的に危険な基礎となるコンポーネントの配管は、視覚コンポーネント、より適切には視覚デザイナーによって独占されません。基礎となる配管が無視されることは、開発のリスクです。

Labviewを試してみる機会があれば、その可能性(またはLego NXT環境の特殊なバリアント)が見つかるかもしれません。欠陥や欠点がないわけではありませんが、継承のメリットがあります。百聞は一見に如かず。


0

プログラミングの実践は、生産性を高め、特定のタイプの開発(下から下への競争)のコストを削減するだけでなく、アプリケーションの機能と顧客の期待を高めます(したがって、上への競争を促進します)。GooleとFacebookが最高の技術者を獲得するために払っているボーナスを目撃してください。


0

プログラミングと同じくらい変化に向かって努力する存在工学を扱う他の職業はありません。何かを単純化するとすぐに、新しいアイデアを生み出す新しい問題に缶を開けるだけです。

だから私は、個人の実践者の悪い慣行、悪い習慣、そしてヒューマニズムのないマナーで新しい挑戦、アイデア、ユーザー体験に向かって進むのを助けるために、コードと解決策を共有する他の人々の努力を汚しません。


-2

私たちが次の慣行をとる場合:

  • ベストプラクティスの実装に時間をかけない
  • 他の人のコードを可能な限り使用する(責任としてのカスタムコード)

WTF?このリストが矛盾しているということですか?リストは、警告なしに前後に切り替えるのではなく、各要素の同じ側から取得する必要があります。したがって、リストは次のようになります。

私たちが次の慣行をとる場合:

  • ベストプラクティスの実装に時間をかけない
  • 他人のコードを可能な限り使用しない(カスタムコードが責任を負う)


1
@NoahRoberts:編集により、2番目の箇条書きの意味が変わります。これも質問に対する適切な回答ではなく、代わりにコメントである必要があります。
アダムリア

@Anna-これはもちろん編集ではありませんでした。そのため、元の質問の変更として表示されません。それは質問の欠陥のある前提に対処するため、答えです。
エドワードストレンジ

前提は何ですか?
-q303

3
@NoahRoberts:少し奇妙な表現ですが、リストの意味は一貫していると思います-q303は、「社内でカスタムコードを書く代わりに、他の人の既存のコードを使用する」ことを支持点として議論しています。
アダムリア

@ q303-どうやら他の人のコードを可能な限り使用するのは悪い習慣だと思われます。とにかく私はあなたのリストから抜け出すだろう。
エドワードストレンジ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.