私は6歳のときにCommodore 64でプログラミングを始めました。現在は28歳で、コンピュータサイエンスの1学位から4つのコースを完了する必要があります。
私はこれらすべての年の後で、コードを書くことに飽き始めています。私は理論的なコンピュータ言語でコンピュータサイエンスのコースを受講し、ネットワークセキュリティの分野でCシステムコーディングを10年間受けましたが、コードを書くことに刺激を受けていません。
C、C++、Python、または任意の言語でコードを書くことができますが、自分がやっていることに興奮することはできません。チャレンジすることはできません。私は特定のアルゴリズムスキルを必要とせずに、マルチスレッドコード、HTTPS MITMプロキシ、およびWSGIアプリケーションを記述しました。
この新しいものはすべて同じで、抽象化または自動化が単純化(またはそれ以上)しているように感じますが、すべて同じように聞こえます。何度も何度も。計算可能言語はすべてチューリング計算可能であるため、コーディングは、部分関数のこのサブセット内の類似パターンの複製にすぎません。
毎日の作業で、バグの検索、コードのベンチマーク、またはライブラリX、Y、Zの問題の修正にさえ退屈しています。
私はとても好奇心旺盛な人です。いつも何か刺激を受けます。でも、素晴らしいコードを見てもわかりません。私は物事がどのように機能するかについてより快適に感じます。
自分のキャリアを前進させる時ですか?それともコンピュータサイエンスでより挑戦的なものを得るためですか?多分CSの学位を取得しますか?
プロジェクト管理に関する最初の本「Peopleware」を読み始めており、ソフトウェア開発ライフサイクルにもっと興味を持っています。何をすることをお勧めしますか?
おそらく、GoogleやMicrosoftに侵入したり、Apple=私の友人がやったように。あるいは、より管理職のキャリアパスになっているかもしれません。通信ルールと「人々パーソナリティ」で経営に入る可能性に備えてくれます。
助言がありますか?
PS:私は多くの興味を持っています私は落ち込んでいません :)私は山が好きで、トレッキング、写真撮影をします、そして私はスポーツクライマーです、私は水泳とスポーツ全般が好きです、時々私は走っています。実際には、ACから今日までの国(イタリア)の話を読んでいます。旅行が大好きです(この夏、4000Kmでスペインのたくさんの場所を見て、そこに登りました。たった3週間で終わりました。 、休日ではなくマラソン、24 kmのトレッキングでヘルニアが負傷しました)、私は劇場と生活全般が大好きです。
すべてのおかげで、すべての答えについて考えることは、私の道をより明確にする機会を私に与えてくれます。
要約のために、最も投票された回答について一般化することができます。
まず、すべての人々が必要性に投票して、私たちの仕事をあなたの人生のサポートにし、人生にとどまる唯一の理由ではないようにします(これは私の場合ではありません)。あなたが働いているなら、あなたは本当に憂鬱な状況に素早く来ます。 Peoplewareが言うように、ウィーンはあなたを待っていません:)
このリマインダーの後、人々は以下を提案します:
私の目的にとって正しい答えは、コンピューターサイエンスを進歩させることです。私の考えでは、プログラミングがコンピューターサイエンスの唯一の方法ではなく、ソフトウェアエンジニアリングのキャリアとは異なるコンピューターサイエンスの別の道を歩む方が良いと感じています。
それは必ず起こることでした。
あなたの主な関心がコードにある場合、それはあなたを夢中にさせ、イライラさせ、時々永久に落ち込んでしまいます。
製品の開発に興味を持って、人々がそれらを使用するのを楽しんでください。それがコードを書く究極の目標ですよね?コードは、より大きなことを行うためのツールにすぎません。
私はあなたの質問に質問で答えます...
あなたは、コードを書くことは以前にやったことのように見えるので、退屈だと言っています。
しかし、どのようにしてそのコードを記述すべきコードであるという結論に至ったのですか?ほとんどの問題にはそれを解決するための何百もの方法がありますが、bestの方法は1つだけです。
解決策を見つけることに、または問題を解決することに挑戦、好奇心、または興味が本当に見つからない場合、あなたは本当に変化の当然のことです。それがソフトウェア開発管理になるかどうかはわかりませんが。問題解決について無関心であると感じたソフトウェアマネージャーには働きたくありません。それはおそらく、異なる業界の問題であり、問題のセットも異なります。
問題解決は好きだが、コーディングは好きではない場合、解決するのに十分な問題を見つけていない可能性があります。私の仕事が退屈になったときはいつでも、解決すべき問題があると思います。なぜ忙しい仕事をしているのですか?忙しい仕事を自分の仕事から取り除く、どのような解決策を思いつくことができますか?それがプログラミングの美しさです。
手続き型プログラミングの[〜#〜]ロット[〜#〜]をやって、うんざりしているように聞こえます-私は完全に理解しています。ステップごとの指定は、すべての手続き型言語でほとんど同じです。
あなたは仕事以外の活動をたくさん持っているように聞こえるので、私はあなたが今知っているものと似ていない概念のいくつかを学ぶことを提案します-はい-たくさんありますが、始めるために私はHaskellをお勧めします
これが完全なソート関数です:
qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)
(説明については http://www.haskell.org/haskellwiki/Introduction#Ease_of_understanding を参照してください)
これらのいずれかが初めての場合は、冒険を始めることをお勧めします。
がんばって-楽しんでください。
コンピュータは退屈な消費者です。マシン間の相互作用を一日中コーディングしている場合、マシンは毎回同じように反応します。プロジェクトを完了するのは良いですが、しばらくすると退屈です。これは、機械に直接関連しないもので単調さを解消するのに役立ちます。
写真とユーザーエクスペリエンスの研究の両方からインスピレーションを得ました。考えてみてください、Appleは、他のベンダーが温かい反応をしているときに、次のものがサンタクララから出てくるために唾液を垂らしている人々の塊を手に入れることができますか?本気で考えていますか= Android AppleがVerizonでiPhoneをリリースすることに長い間抵抗していなかったとしたら、大きな反響がありますか?私はあなたに大きなヒントを与えます:それはそうではありません必然的にこれらの製品は非常に技術的に進歩しているということですマニアには大きな心理的要素があります。
製品デザインとユーザーエクスペリエンスを理解することは、私たちの多くが多くを学ぶ必要があることです。何が誰かを動かしますか?人々が確立されたソリューションを離れるのに十分なクールなものをどのように設計しますか? Apple(私があなたにカルトのリーダーになることを望んでいるわけではありません)のような独自のテクノロジーカルトをどのように作成しますか?)これらはすべて非常に興味深く刺激的な質問です。ソフトウェア開発にフィードバックします-しかし、今は焦点が異なります。
おそらくあなたは十分な技術的挑戦を受けていないのですか?
もちろん、退屈なことではなく、やりがいのある分野で最初に稼ぐ準備をしてください。
「正しい」解決策のない分野に移動することで動機を見つけ、編集ツールを書いています。私の仕事は、ユーザーがそれを役にたてるのと同じくらい優れています。多くの非技術者に会うことができ、一緒に彼らが一緒に働く必要があるソフトウェアを改善する方法を調理しようとしています、私は人間の相互作用を見つけ、常に完全に楽しい視点を切り替える必要があり、突然コーディングは必要ではありませんもう退屈です。
私はそれがすべての人に当てはまるわけではないことを知っていますが、あなたの仕事の品質を客観的に測定できないという不安を他の人よりも厳しく扱う人もいます。
しかし、それは検討する価値があるオプションかもしれません。
はい、実際には同じ種類のコードを何度も何度も書いているような気がします。しかし、いや、私はまだそれに飽きていません。何故ですか?
私は基本的に、コーディングの新しい方法と、コードで何かを表現する新しい簡潔でエレガントな方法を発見することを楽しんでいるからです。これに対処する方法は2つあります。新しいプログラミング言語を学ぶか、新しいライブラリやフレームワークを学ぶかです。
私が試した言語ごとに、新しいプログラミング言語を学ぶのが簡単になりました。そしてしばらくして、それはとても面白くなくなりました。しかし、それから1、2年ほど前にようやく関数型プログラミングにたどり着きました。プログラミングパラダイムとしてOOPとは十分に異なり、新たな課題となるでしょう。これはプログラミング機能を本当に充実させて、プログラミングの問題を見ることができる新しい視点を与えてくれました。今では、異なるプログラミング言語だけでなく、異なるプログラミングパラダイムを発見しようとしています。それは大きな課題です。
第二に、新しいライブラリ、フレームワーク、またはAPIを学ぶ:正しく言ったように、新しいフレームワークは多くの場合、新しい問題を解決しません。彼らはそれを別の方法で解決します。抽象化の層を追加します。今日のコンピュータは以前のマシンよりも強力であるため、これはおそらく可能です。または、おそらく、私たちが全体としてソフトウェアを書くことに上達しているためです。
この最後のビットはおそらく説明が必要です。例を挙げましょう:長い間、プログラミングスキルを練習している間、自分が書いていたコードの保守について真剣に考えたことはありません。仕事のプログラミングを始めて以来、私の見方は変わりました。保守可能なコードを書くことは、企業環境では非常に重要です。なぜなら、コーディングに費やす1時間ごとに実質的なお金がかかるため、企業は、可能であれば既存のコードを保持しようとし、最終的には見過ごさなければならない可能性があるためです。後継者へのコード。
保守可能なコードを書くことは、実際には大きな課題であることがわかりました。多くの場合、非常に賢く、高度に最適化されたアセンブリコードを記述しないことを意味します( The Story of Mel – A Real Programmer だれか?;-)代わりに、利用する可能性が高くなります。抽象化の。コードをいくつかのビジネスルールと問題のドメインに近づけることができれば、それだけ優れています。そこで新しいライブラリが登場します。クリーンで明確、簡潔、そして理解しやすいようにコードを書き留めることができれば、それは良いことです。
この回答がやや長い場合は申し訳ありません。私のプログラミングのモチベーションがどこから来たのかを見せようとしました...いつかあなたが同じように感じたのかどうか、そしてとにかくあなたのモチベーションが最終的に残ったかどうか(そしてなぜか)を知りたいです。
コードを書くことにうんざりしている場合、それがあなたを興奮させない場合、それが退屈な場合は、変更の時期かもしれません。管理職への移行を検討し、長年の経験で他のコーダーを管理および指導することができます。または、システムアーキテクチャに横に移動してみてください。システムを設計および計画でき、他の人々がほとんどの実装を行います。
または、キャリアをコンピュータとはまったく関係のないものに完全に切り替えることもできます。誰かがあなたにそれを与えることができるならば、あなたはあなたの夢の仕事が何であるかを自問しましたか?
マイクロコントローラーで遊んでみましょう。それは私が考えることができるプログラミングの才能の最も新鮮でエキサイティングなアプリケーションです。
私たちの背景の出発点は似ていますが、私たちは同じようなマシンで6歳頃にプログラミングを開始し、さまざまな理由でプログラミングに出入りしています。私の学位はプログラミングとは何の関係もありません-私はすべての音楽学位を持っています-私はいくつかの大学院レベルのコンピュータサイエンスコースを受講しましたが。
プログラマは同じ問題を繰り返し解決することが多く、「新しい」はすべて「古い」に基づいていることに気付いたと思います。この事実はあなたの功績だと気づくでしょう。あまりに多くの開発者やビジネスマンが、新しいテクノロジーを古いテクノロジーから完全に切り離されていると考えています。
そのため、これらの種類の問題を解決することは、あなたにとって興味のないことです。何が面白いでしょうか?一般的に問題解決は好きですか?多分「ビジネス」ソフトウェア開発者としての生活はあなたのためではありません。
回答よりも多くの質問を提供したことは知っていますが、これらの質問に回答することで、取るべき方向性についての洞察が得られることを願っています。
行き詰まっているように聞こえます。あなたは入りたくない状況にあり、そこから抜け出す方法がわかりません。私のアドバイスは単純です。何か違うことをするためだけに何か違うことをしてください。それで問題が解決しない場合でも、おそらく行き詰まってしまいます。
C、C++、Python、または任意の言語でコードを書くことができますが、自分がやっていることに興奮することはできません。チャレンジすることはできません。私は特定のアルゴリズムスキルを必要とせずに、マルチスレッドコード、HTTPS MITMプロキシ、およびWSGIアプリケーションを記述しました。
これを間違った方法でとらないでください(これらはまともな成果です)が、これはプログラミングにおける困難でエキサイティングな問題すべての包括的なリストではありません。解決すべき課題はまだたくさんあります。最も困難な問題は、大規模な作業です。 WSGIアプリケーションを作成しましたが、1日に10億ページビューを処理できるアプリケーションを作成しましたか?マルチスレッドコードを記述しましたが、マルチコンピュータコード(数百のコンピュータを含む)を記述しましたか?
要するに、技術的でないことをやってみたい場合は、それを試してください。しかし、そうしないでください。そうでないと、解決すべき問題がすべて解決されたと感じているからです。