中間プログラミングステータスに到達[終了]


32

私はソフトウェアエンジニアであり、VBA(試行錯誤でしたので、その「実際の」体験をあえて考えません!)、Perl w / CGI、C#、およびASP.NETでプログラミングを担当していました。後者の2つは学部生で、「現実の世界」への入り口があります。私は大学を2年退学し、私が言及した言語で5年の経験(合計)を経験しました。しかし、私の履歴書に関して言えば、C#の場合は2年、ASP.NETの場合は1年未満しか下がれません。

私はC#を知っているように感じますが、「この方法は何をするのですか?」前の方法。」そのため、湾があることを経験的に知っていますが、どのように橋渡しをするのか正確にはわかりません。Project Eulerでプログラミングを開始し、デザインパターンに関する本を手に入れましたが、それでも前進するのではなく、毎日水を踏むように感じています。

だからといって、自分が進歩したとは思わないということではなく、毎日来る限り、山の頂上が遠くに見えるということです。

私の質問はこれです:どのようにこの高原を克服しましたか?どのくらいかかりましたか?これを支援するためにどのような方法を提案できますか?

Code CompleteThe Mythical Man Month、およびC#経由のCLR、第2版を読みました。私の質問は次のとおりです。


編集:中級レベルのプログラマーのプロジェクトこの質問を見つけました。議論に追加されると思います(ただし、私の質問に取って代わるものではありません)。そのため、「詳細情報」として質問に追加しています。


2
私は最近Project Eulerで遊んでいますが、それはかなり限られた範囲のテクニックしかカバーしていません。メモ化または動的プログラミングによって機能を最適化することは非常にうまくいきますが、GUIやwebappを書くのには役立ちません。難しい問題は、難しいコーディングではなく、難しい数学になるように設計されています。

楽しいことです。それに反対するものは何もありません。基本的なデータ型、構造、そして私のようにいくつかの最適化手法を超えて言語を学習できるようには設計されていません。可能な場合は0.1秒。

@Gortok、スキルセットを向上させるためにできることはたくさんありますが、それは確かにあなたがどのようなプログラミングをするかにかかっています。たとえば、Windows開発者には、組み込みデバイスのプログラマとは異なるスキルが必要です。質問された質問は実際には広すぎて、良い答えを得ることができないと思います。
ネイサンフェルマン

1
2歳の頃からプログラミングをしています。私は世界トップのプログラマーになることに失敗し、今は自分の人生が嫌いです。私の目標は、代わりに世界のトップポルノスターになることでした。

あなたの直観が学問的な実践とビジネス(実世界)の実践との間のギャップをあなたに告げているので、あなたはあなたが進歩しているように感じません。そして、あなたの直感は正しいです。アカデミックプラクティスは、小さな自己完結型の問題と演習がすべてです。ビジネスは、バグを修正するか、機能/ウェブページなどを巨人に追加しています(通常)。アカデミックプラクティスは再帰です。ビジネスは読みやすさと保守性です。アカデミックプラクティスは、数学とコンピューターサイエンスの知識です。ビジネスは人材スキルであり、コーディングと同じくらい要件分析です。これを答えにしたはずですが、Qは閉じられています。
ブラッドトーマス

回答:


41

おめでとうございます!

あなたの説明から、あなた中間開発者です。

この段階は、現在の問題を超えて学習する意欲に応じて、約3〜8年続きます。

プロセスを高速化するために、読み、サーフィン、ブログ、ユーザーグループ会議に参加し、メンターを見つけ、独立した調査を行い、サイドプロジェクトをコーディングし、新しいテクノロジーに没頭します。これにより、1〜2年の時間を節約できます。

または、プログラミング以外の生活を送ることができます;-)

真剣に、最新の内観を保ちながら、#%$ @を時々オフにする

補遺:外に出るときは、ズボンを着用することを忘れないでください。


17
トールキンを引用することに注意してください、それは破るのが難しいホビットです
スティーブンA.ロウ

1
よくやった
kemiller2002 08

1
真剣に、プログラミング以外の人生を送ってください。1つ:コードよりも人生に多くのことがあります。2:他の分野から多くを学ぶことができます。
kemiller2002

1
+1-よくできました。実践に代わるものはありません(またはユーモアのセンス)。

15

山を登る最良の方法の1つは、あなたがしたいから自分で何かを書くことです。最高のプログラマーは、「暇なときに書いた最も興味深いプログラムは何ですか」という質問に対して素晴らしい答えを持っています。暇なときにコードを書いていないのなら、あなたはそれを上手く使うほどあなたのクラフトを愛していない。


8
私はこの理論が嫌いです。人々にはフルタイムの仕事があり、他の責任があります。サイドプロジェクトを持たない人が十分なプログラミングを好まなかったり、悪いプログラマーであると推測することは責任を負いません。受け入れられた答えが示すように、プログラミング以外の人生を送ってください。

10
私は同意しません---最高のプログラマーは最高の作家のようです:彼らは文字通り彼らが彼らのベストを尽くすことから自分自身を止めることができません。
ノーマンラムジー

2
彼らは自分自身を止めることができないかもしれませんが、人生はそうすることができます、そしていくらかの意志のために。
シャノン退職

@ShannonSeverance、一部の人だけなく多くの人にとってはそうなるでしょう。
Pacerier

9

幼虫期を経る必要があります。

現在はWindowsのVB.NETでプログラミングを行っていますが、Linux x86の幼虫期を経て、アセンブリを主要言語として使用しました。

しばらくの間、習得するまでクラフトに専念する必要があります。マスタープログラマーの本能と呼ばれるものは、実際に学んだ行動です。それは共有文化です。プログラマーは互いに、そしてマシンが好きに考えなければなりません。

羊は羊のようになり、羊は羊のようになりますが、どちらも世界ではあまり長くありません。[trees and] Entsを使用すると、より速く、より近くになり、年齢を一緒に歩きます。-トールキン

知って、理解してください。最大のスキルは特定の言語に縛られているスキルではありませんが、ほとんどすべての言語に適用できます。概念を知り、問題と言語の両方でそれらを探し、必要なときに新しいものを発明する準備をしてください。

これが偉大さへの道です。


2
それはどういうわけかチートを伴いますか?私の頭の中の写真にはチートが含まれています。

2
笑「安っぽいじゃない!」
ノービス

幼虫の段階ですか、それともLaravelの段階ですか?;)
ブラッドトーマス

9

私は8歳からプログラミングをしています...クリスマスイブに33歳になります。遠くに山が見えます。どんなに遠くまで来ても、学ぶべきことは常にあります。

パラダイムを身につけて、現在コーディングしている言語がどのようにそれらのパラダイムを実装しているかを理解してください。プログラミングは生涯の経験であり、常に学ぶべきことはたくさんあります。それが喜びです。あなたがどれほど上手であっても、常にそれ以上のものがあります。

普段は学べない新しいことを学ぶための方法の1つは、ここや、BytesやExperts Exchangeなど、人々が質問をする他のプログラミングフォーラムに時間を費やすことです。質問に答えることができる場合は、すぐに進み、できない場合は、自分でタスクを完了する方法を試してみてください.OPはあなたの努力と支援に感謝するだけでなく、あなたも新しいことを学びます。

他の人がまだ知らないことへの答えを見つけるのを助けることによって、私が毎日毎日行うことをプログラミングすることによって、より多くを学ぶことがわかります。


9

中間のプログラミングステータスは、コードモンキーの「タイプを早くする」メンタリティから、キャリアとして実際のシステムを構築したいという領域に移行していることを意味します。これは専門的な大きな変更であり、率直に言って、それは実際には技術的なスキルに関するものではありません。中級(別名「開発者」)レベルで作業するには、非常に高度な人材スキルが必要です。

考えられるいくつかの症状を次に示します。

  1. オンラインで戦争を編集しますか?もしそうなら、あなたはあなたが他の人の視点を理解しようとするよりもあなたの快適ゾーン内の詳細について議論したいことを示しているかもしれません。
  2. 言語は本当に違うものだと思いますか?C#とJavaはどちらも独自のプラットフォームとリソースを提供しますが、どちらも計算可能性の効果的なモデルです。仕事をするための報酬を得るのに十分な速度で新しい言語とプラットフォームを学ぶことができますか?
  3. あなたはまだソフトウェアタスクをタイピングと考えていますか?仕事で仕事を与えられた場合、なぜですか?このコードは何に使用されますか?どのシステムに含まれますか?その情報は、提案されたソリューションを劇的に変える可能性があります。
  4. あなたが残っているノウハウそれ-すべてのあなたの人生の背後の位相を?チームの他のメンバーの話を聞いていますか、それとも次のことを考えようとしていますか?
  5. 「一晩中引っ張って」バグのある土壇場のソリューションを作成することは、もはや印象的ではないことに気づきましたか?最初の8時間後、残りの時間はバグの入力に使用されたと簡単に想像できます。

私が思いつく最良の要約は、中間プログラマー(または「開発者」)が8労働時間でより生産的になり、地獄に帰って仕事以外の生活を送ることができるようになったことです。

配偶者を見つけて再生産することに成功した場合に付与されるボーナスポイント。


8

今やっていることは素晴らしいことですが、信じられないほどスピードを上げたい場合は、さらに2つのことができます。

1)「教える」-これを行う簡単な方法は、ブログを始めて、定期的に(おそらく毎週)何か役に立つものを投稿しようとすることです。最近学んだこと、またはまだ知らないことを目指してください。それは、あなたが自分で研究、理解、再説明することを強制することを意味します。

ところで、既存の開発コミュニティで無料のブログを入手できるSingingEelsアカウントに簡単にサインアップできます。

2)たくさんのミニプログラムを書く-これにより、私は週に約1を意味します。これは上記とのジャンクションで使用できます...または単に楽しみのために。若い開発者として私がやったことは、.NETフレームワークで名前空間をランダムに選択することです(冗談ではありません)。その中で、今まで見たことがなかった/使用したことがないクラスを選択し、それを使用する小さなプログラムを作成します。


8

してみてください

他の本を読む Amazonからこれらの大きなタイトルを選んで読んでください。たとえば、Code Completeの著者はソフトウェアエンジニアリングに関する優れた本を書いていました-Rapid Software Development、購入して読んでください。

別のプログラミング言語を学ぶ python / ruby​​のようなスクリプト言語は勉強する価値があります。または、おそらく関数型プログラミング言語:)これはプログラミングの考え方を変えるかもしれません。GOFパターンの一部は、この種の言語には必要ないことをご存知かもしれません。

コミュニティに参加する 人々は、他の人の意見を聞き、プレゼンテーションを行うことで、意見を交換できます。


4

優秀なプログラマを見つけて、彼らから学びましょう。それらを模倣します。彼らがあなたとは違うことをしてください。

あなたの会社はコードレビューをしていますか?それは学ぶための最良の方法の一つです。より高度なプログラマーが行う提案と、コーディング中に彼らが行うことに驚くかもしれません。


3

他の進行中のオープンソースプロジェクトに参加して、少なくとも誰かが仕事をする価値があり、実際の仕事をしている他のより高度な開発者と学び、交流できるようにしてください。

少なくとも、学習したいことややりたいプロジェクトの種類に制限はありません。それはすでにあなたが使用している無料のツールです。あなたが実際にそれを改善するのに役立つことを誇りに思うことができます。

履歴書にもよく表示されます。:)

もしそれでもまだあなたにいくらかの自由時間を残しているなら、なぜあなたの学習、経験、その他のことを記録したブログを残してはいけませんか。誰が知っている、あなたはソフトウェアまたはコーディングの恐怖の次のジョエルになる可能性があります:p


-1

C#開発者として優れているためには、次の2つをお読みください。これらの本の焦点言語にあることに注意してください、フレームワーク(.NET)ではなく(C#)にあります。

  1. Essential C#:リンクは最新版用です。私は実際に前のもの(C#4.0)を読みましたが、新しい方が良いと思います。この本にはいくつかの基本的なものもありますが、その本の表紙を読んで辛抱強く読んでください。
  2. C#の詳細:リンクは、10〜15日でリリースされる最新版のリンクです。私は本を​​ざっと読んだだけですが、それを読んだ同僚はこれを高く評価しています。

あなたはすでに読んだ C#を介してCLRを、そうでない場合は、おそらくC#開発者向けの3番目の提案です。

また、フレームワーク設計ガイドラインレガシーコードを効果的に使用することで、開発者がより優れたものになるはずです。


なぜダウン投票したのかを説明したいですか?
アシムガッファー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.