web-dev-qa-db-ja.com

プログラマーとして苦労しています。アドバイスが必要

私は何年も前から開発者でした。私は自分の仕事がかなり得意で、「仕事をやり遂げる」ことができます。

しかし、「仕事をやり遂げる」と「仕事をきちんとする」には違いがあります。例を使用してみましょう。

最近、ゼロからウェブサイトを開発しました。ウェブサイトは正常に動作し、問題はありませんでした。コードを見ると、もっと上手くやれると思いました。 MySQLクエリを削減できたはずです。 MVCを使用して拡張を容易にすることもできました(今は拡張する必要があります)。

CodeIgniterを使用してプロジェクトを書き直すことにしました。私はフレームワークが好きです。しかし、MySQLクエリを削減するために、高度な結合を学習する必要があったので、私は脇道に入りました。

そしてこれが問題です。私はきちんと仕事をするときはいつも、常に学習の輪にいます。また、高度なMySQL結合などのトピックを学ぶには時間がかかり、次に実装するのに時間がかかります。

私は会社で働いていません。私は一人ですべてを行います。したがって、私が会社のPHP=開発者として働いていた場合、SQLを処理する個別のチームが存在することになると思います。

一人でいるのは難しいです。そして、時々、私の知識は進んでいるものの、私は疑問を投げかけています。仕事に誇りを持っていると思います。しかし、完全なプロジェクトを扱う会社で働く必要がある場合は、自分のプライドを満たし、「正しく」行動するために、より多くのことを学ぶ必要があるため、プロジェクトに時間がかかることを想像できます。

私は年明け後に就職する予定です。仕事の保障が必要です。これが私がこの質問をしている理由です。

自己啓発と自己啓発に関してどのようなアドバイスをしていただけますか?心配しないでください。または、SQLクエリを直接処理しない場合は、PHP開発者としての仕事を探しますか?

20

アドバイス:新しいことを恐れないでください。あなたは自分がもっと上手くできることを認めて最初の一歩を踏み出し、それから学ぶ努力をしました方法あなたはもっと上手にできるでしょう。はい、前もって時間がかかりますが、通常、見返りは長期的に見れば価値があります。 CodeIgniterを理解したので、次の将来のプロジェクトにそれを使用できます。あなたはそれをあなたの履歴書に置くことができます。高度なSQLテクニックを理解したので、将来のプロジェクトwillのメリットがあります。学習をやめると停滞します。

あなたが経験していることは、私にはかなり普通のように聞こえます。これは私たちが私たちの技術に取り組み、私たちの仕事でどんどん良くなる方法です。

21
grokus

... CodeIgniterを使用してプロジェクトを書き直すことにしました。私はフレームワークが好きです。しかし、私はsidetrackedを取得しました。これは、MySQLクエリを削減するために、高度な結合を学習する必要があったためです。

そしてこれが問題です。私は適切に仕事をするたびに、常に学習の輪にいます。また、高度なMySQL結合などのトピックでは、timeを学習し、次にtimeを実装します...

上記のように、前もって計画を立て、作業キューを確立して優先順位を付け、時間を管理する能力の向上に集中することは理にかなっていると思います。

本当に、これはあなたの態度に欠けている唯一のもののようです。あなたが「サイドトラッキング」と呼ぶものは、本質的に、計画され、優先順位が付けられ、キューに入れられる必要があるもう1つの作業(「高度な結合の学習」)です。

10
gnat

この分野の専門家になることは、自分自身の不備に対して絶えず自分を打ち砕くことです。月曜日から金曜日までに8〜5回、締め切りが迫っていて、素敵な週末を過ごし、月曜日にさらに戻ってくる場合は、さらに多くしてください。それが仕事です。

ソフトウェアを作るには、ある程度の謙虚さが必要です。あなたが正しい必要がある人であり、彼らがすでにすべてを知っていることを証明しなければならない人であるなら、これはあなたのためのフィールドではないかもしれません。

毎日何かを学んでいないとは思えない。私はその仕事が欲しいとは思わない。

9
Dan Ray

一人でいるis難しい。対照的に、開発者のチームと一緒に作業している場合、全員が互いに学び合っています。チームの一員として、他の開発者と協力することで多くの知識を身に付けることができ、自分ですべてを理解しようとするよりもはるかに少ない労力で学ぶことができます。

そうは言っても、開発者として、あなたは絶えず学習することに専念しなければなりません。新しいフレームワークのドキュメントを読んでいても、開発に関する本を読んでいても、知識を最新に保ち、成長し続けるように常に努力する必要があります。ただし、チームの一員であることにより、特定の時点で最も多くのことを学ぶ必要がある分野を明確にすることができます。

古いコードを再検討して書き直すことについてのあなたのポイントについて:私は、自分のコードは常に、私がそれを書いたときに知っていたものの中で最高のものを表していることがわかりました。多くの場合、私は何年も前に書いたものに戻り、額に平手打ちをかけます。私がどれほどうまくできるかを見ると、今知っていることを考えるとです。しかし、それは経験の本質であり、必要なときに取得します...

最後に、アプリケーションを開発しているときは、常に優れたビジネスセンスを発揮し、すぐに終了するために手抜きをするのが最善である場合、およびデザインと品質を改善する新しいことを学ぶためにより多くの時間をかける必要がある場合を決定します。アプリケーションの。ソフトウェアの世界には、学ぶべきことがたくさんあります。そのような良い判断をすることなく、あなたは自分の車輪を回転させ、学び、考え、再設計し、何も成し遂げられないことに気付くでしょう。

6
Sam Goldberg

あなたの懸念は妥当だと思いますが、それ以上の睡眠を失うべきではありません。技術者であることには次のような手荷物が伴うと私は信じています。

  • 常に新しいことを学ぶ必要があります。あなたはこれを愛することを学ぶか、そうではありません。
  • マスターしたいことは、人が知り得ないほどたくさんあります。
  • あなたはプロジェクトの間にあなたが持っていたいと思っていたプロジェクトの間にスキルを開発します。
  • その結果、常にそのプロジェクトに戻ってやり直したくなるでしょう。あなたがより良いかもしれない知っている何かをリリースすることはとても難しいです。

結局のところ、質の高いソフトウェアの構築についてcareは聞こえますが、これはlearnでは不可能です。高品質のソリューションの構築と完璧なものの構築を区別する必要があることを理解してください。あなたは私のように聞こえ、完璧だと感じることはありません。 しなかった自分自身と自分の仕事を改善する機会があったような気がするなら、もっと心配になるでしょう。

すべての取引のジャック(なしのマスター)になるのは難しいですが、自分にとって最も興味深く有用なものを特定し、それらに集中する方法を理解する必要があります。他の作業を他の人に「アウトソーシング」する最善の方法、またはtoolsを見つけます。

3
Joe

「きちんとやる」ということはあまり気にする必要がないと思います。完璧を目指して努力しますが、完璧なソリューションを設計することは実際には不可能であることを認識してください。この質問をするために適切にそれを行うことについて十分に心配しているという事実は、あなたがすでに正しい軌道に乗っていることを意味します。

新しいことを学ぶことへの欲求不満については私はグループで働いていて、他のプログラマーに問題を尋ねて議論できることで、私が学ぶ必要があるものを見つけ、それを置き換えることに苦労しました新しいものを発見し、それをどのように適用するかを学ぶことの喜びで。

ソフトウェアを書くのは大好きですが、実際に何か新しいことを学ぶのではなく、実際に苦労することがありますが、やりたいことを達成するために学ぶ必要があるのは、まさにそれを見つけることです。

私が理解していることから、私はあなたと同じような立場にありました。何かをコーディングするだけでは、イライラすることも難しいこともあり、やりがいがあり、楽しいこともあります。

あなたが計画していることを正確に行い、あなたがチームの一員になる仕事を見つけてください(そして、あなたが仕事をやめられない場所に着陸させるように最善を尽くしてください)。同じテクノロジーを使用し、同じソフトウェアを設計する他の人々と協力することで、それらのテクノロジーと設計パターンの理解と適用がほぼ一晩で拡大します。

初めて何かを正しく行う方法を知ることに関して、まあ、あなたが最初に特定の方法でそれを既に行っていなかった場合を除いて、どのようにしてより良い方法があったことをどのようにして知るでしょうか?ソフトウェア設計のスキルは、多くの場合経験に大きく依存しています。 Joel Spolskyはソフトウェアの天才ですが、彼の多くの記事を読むと、それらは非常に経験と知性の両方の結果であることがわかります。

SQLの部分については、.NET開発者として、専任のデータベース開発者がいる場所でまだ働いたことがないので、私たち全員が独自のSQLを作成しますが、SQLを本当に上手に開発者が手伝ってくれることがあります。より深いもので。

あなたは賢い人のように聞こえます、あなたはあなた自身にそんなに難しいべきではないと思います。

2
333Mhz

新しいテクノロジーや問題を学ぶことは時間のシンクだと思うかもしれません。しかし、慌てる必要はありません。それは正常です。プログラマーとして学ぶことはあなたの実践の一部です...さもなければ、私たち全員がCOBOLに悩まされるでしょう。

フリーランスの専門家は、それに応じてコミッションを調整します学習期間は、時間の見積もりに考慮すべき他の多くのものの1つです。次回、新しいフレームワークを導入することを決定したときは、それを学ぶのに十分な時間内に計画するようにしてください。

1
Spoike

これはまったく正常なことであり、あまり心配する必要はありません。新しいスキルを継続的に学ぶ必要がありますが、時間の優先順位付けと管理についても学ぶ必要があります。また、不要な再開発の罠を回避する必要があります。

経験の浅いプログラマーは、再開発の罠に引き込まれることがよくあります。

私はこのプログラムを完全に書いたわけではなく、今はそれを拡張または変更する必要があります。私が書いた方法により、既存のコードを変更するのは大変な作業になります。それ以来、私は多くのことを学びましたが、プログラム全体を書き直すことが最善のことだと確信しています。今回はもっと上手く書けると思います。

このロジックには多くの問題があります。

  • 既存のコードを変更または追加するのは大変な作業ですが、多くはありませんmoreすべてを書き直す作業はありますか?
  • すべてを書き直すと、新しいバグを作成する可能性が高くなります。また、思ったよりも時間がかかります(特に、経験が浅い場合)。システムの作成に関わるすべてのことを検討していますか? (最初にかかった時間を覚えておいてください)
  • プログラムを最初に作成してから多くのことを学びました(そのため、プログラムを改善できる可能性があります)が、来月/年についてもさらに学ぶ必要があります。すべてを書き直したくないと思うのはなぜですか再度将来のある時点で?
  • プログラムの最終的なテストは、それがworksであることです。何か良いことはありませんか?

再開発を熟考して計画することは決して害にはなりません。つまり、プログラムをどのように書き直したいかを検討し、発生する問題を特定しようとします。この場合、現在必要な「高度なSQL結合」を特定し、それらがどのように機能するかを調査して、それらについて学びます。

(開発を開始せずに)計画を通じて高度な結合知識のギャップを特定できなかったと思われる場合は、計画スキルを向上させる必要があります。計画のどの部分が十分に詳細ではなかったかについて考えてみてください。システム全体が技術的に可能であることが確実になるまで、必要に応じて詳細を検討する必要があります。

このアプローチにより、学習が可能になります事前に

最後に、仕事で学ぶことはプログラミングの通常の部分です。ただし、これは、タスクを開始してから、たとえば基本的なHTMLについて学ぶために1週間停止する必要があることを意味するわけではありません。あなたは何かについて学ぶために数時間停止することができますが、あなたの雇用主は仕事を成し遂げるためにあなたにお金を払っているだけです。効率的に学ぶ-概要と歴史を読まずに、それがどのように機能し、プログラムにどのように適合するかを理解してください。プログラムの一部を完了する方法を学ぶために何日も仕事をやめなければならない場合、それは間違っています。

1
Kirk Broadhurst

しかし、「仕事をやり遂げる」と「仕事をきちんとする」には違いがあります。

いいえ、ありません。これが問題の根本だと思います。個人の開発者は、他の人がどのように動作するかを見ていないので、あなたは「正しく」物事を行うことについて心配しすぎているように思われます。しかし、誰によると正しく?あなたがしていることが「正しい」と命令する魔法の人は誰ですか?世界最高のプログラマーを100人選んでください。すべてのプログラミングトピックについて100%一致する2人はいないことを保証します。

最終的に重要なのは、顧客が満足しているかどうかです。作成したプログラムが想定されている問題を解決し、費用効果の高い方法でそれを実行している場合は、正しく実行しています。たとえば、独自のフレームワークを使用するよりもcodeigniterを使用するほうが本質的に正しいわけではありません。その当然の結果は、がらくたの山を生成する場合、プロセスや「ベストプラクティス」に関係なく、それを「間違った」ことです。

コードを再検討し、コードを改善する方法を確認することは、開発プロセスの通常の部分です。あなたが物事を「正しく」行っていないという兆候ではありません。あなたが学習と改善に専念しているというその兆候です。私があなたの投稿で見たすべてから、あなたは問題ありません。

さあ、いくつかのキック* * *

0
GrandmasterB