より自律的で自給自足のプログラマになるにはどうすればよいですか?[閉まっている]


13

優れた開発者であることを妨げている最大の要因は、他者に依存していることです。私はすべてを壊し、みんなを引き留めることの結果を恐れているので、あまりにも多くの質問をしているように感じます。だから、私はあまりにも多くの質問をすることによって過度に用心しているので、基本的には十分な質問の後に答えを得ます。私はそれが悪いことを認識しましたが、それを止めたいです。その一部は、単にコードを知らないことがあるということです(これは、私が一度も作業したことのないブランチであるか、まったく新しい製品であるかのどちらかです)。はじめに、これらの種類の質問は、一般的なパターンや言語に関するものではありません。通常、私の質問は、会社でのコードの実行方法と、エコシステムでの作業方法に関するものです。あらゆる段階で助けが必要だと感じることなく、仕様を取得し、仕様を順守できるようにしたいと考えています。これは正常ですか?あなたはこれを経験しましたか?もしそうなら、どのように乗り越えましたか?


1
たぶんこれは文化的/言語的なことだけかもしれません...しかし、どうしてあなたがこれまでにない素晴らしい開発者になると思いますか?他の新しい開発者の99%よりも優れている点は何ですか?
スティーブンC

5
私は今は一人ではありませんが、私はなりたいです。私は常に学び、改善するよう努めています。ほとんどの人は、自分に問題があることを認めることすら恐れています。私は自分の問題を見つけ、それを認め、それに取り組みたいと思っています。あらゆる分野で最高のものが継続的な改善に努めており、同じことを目指しています。
アコンラッド

回答:


24

いくつかの新しい開発者が仕事に就き、すぐに不十分だと感じています。私はキャリアの早い段階で同じことをしました。ほとんどの賢い人が克服しなければならない少なくとも2つの主要な問題があると思う:時間の知覚と彼ら自身の自然な能力。

時間の認識
スマートな人は、比較的迅速に問題を解決するために使用されます。単一の微積分問題に1時間を費やさなければならなかったとき、私はgh然としていました。問題に60分を費やすことはもう何もありません。それらの日は終わった...それらを埋め、さよならを言う。今日のほとんどのソフトウェアの複雑さとサイズはとてつもないです。人々は、もはや物事を成し遂げるために使用しなければならないすべてのツールを理解していません。JavaScript言語の重要人物の1人であるダグラス・クロックフォードは、

"Misapplication of standard tools...is the new standard."

開発ツールをすべて学ぶのに十分な時間は世界にはありません。

自然な能力
あなたの知性、問題解決能力、および自然なスキルは、そもそも開発者全体のギグにあなたを引き入れました。この分野には、それ以下のものはありません。100,000行のコード、かろうじて知っている言語、フレームワーク、人々があなたに押し付けているデザインパターンとパラダイム、手の甲のようなもののほとんどを知っている人、昨日それを欲している顧客、そして上司で何をしますか誰があなたの世界を期待していますか?あなたの自然な能力が失敗したときに気を散らしてください。

ええ、それは正常です。私は自分のやり方で投げられるもののいくつかにまだ驚いています。

何ができますか?

古き良きハードワークでそれらの自然な能力を改善するための時間。問題を小さな部品に分解する作業を行います。そして、あなたが過去にした多くのこととは異なり、これらの問題は解決するのに多くの時間がかかることを理解してください。そのため、複雑な問題を15分調べただけでgiveめないでください。代わりに、問題を分析し、時計の監視を停止します。しばらくして、問題を処理する30分間は、以前のようにはなりませんでした。

自信は、自己統治する能力において大きな役割を果たします。チーム、特に経験豊富なシニアも同様です。物事を壊さないように注意するのは良いことですが、だからと言って一定の質問をする必要があるわけではありません。

代わりに、ソース管理を利用してください。変更をチェックインしない限り、メイン製品を壊して他の開発者を怒らせることはできません。また、理解してテストできる変更を加え、チェックインする前に十分にテストしてください。

私は、1回限りの単純なプログラムを作成するために使用する小さなテストプロジェクトも持っているので、メインアプリケーションでのすべての進行を心配する必要はありません。

最後に、すべての決定にはある程度のギブアンドテイクが伴うことを忘れないでください。何らかのレベルで何らかの犠牲を払わなければ、前進することはできません。完璧を求めて努力するのではなく、素晴らしさを求めて努力し、行動に留意してください。あなたは常に批判を取り、あなたのアイデアとそれをなぜ作ったのかを説明する準備が必要だからです。あなたが下した決定を誇りに思う。それらが間違っていても、学ぶべきことがたくさんあります。


2
あきらめるまで+1します。1 つの問題を解決するのに2、3日費やしたことがあります。破壊に関しては、TDDを試すか、少なくとも単体テストを作成します。
ashes999

12

まず、質問することを恐れないでください。上級アーキテクトでさえコードについて質問するのを見てきました。彼らはすべてを知っているとは期待されていません。彼らは仕事を成し遂げるのに十分な知識があり、残りを理解できることが期待されています。

おそらく、最良の戦術は次のとおりです。

  • Googleで調査する方法をご覧ください。少しの調査作業で、ほとんどすべての答えを見つけることができます。スタックオーバーフローは、これらの解決が難しい問題に対して驚くべき効果を発揮します。
  • デバッグ方法を学びます。変数Xが7ではなく3だけであることに気付くために、私は風変わりで深層のエンタープライズコードに足を踏み入れることに何時間も費やしました。

私は特別な花ではありませんが、私の問題は言語にありません。私の言語で物事を行う方法ではありません。私の質問のほとんどは非常に企業中心です。それは、職場の環境に固有のドメインで物事を行う方法に関するものです。あなたがそうするなら、彼らはあなたがグーグルにできないものです。
アコンラッド

3
私は完全に理解しています。私は3年間同じ状況にありました。箇条書き#2が答えです:デバッグを学ぶ。人々は詳細を頻繁に覚えていません。デバッグが重要です。
ashes999

1
同意する。あなたがあなたの周りの人々より多くの答えを知るまで、質問をしてください。バグを発見して修正できるまで、下に行き、QAチームと話します。Googleはあなたの専門家です。彼を広範囲に使用します。いつか、返信メールが返ってくる前に、質問メールを送信し、自分で答えを見つけます。
アンディキャンフィールド

5

「全体像」の質問をすることを恐れないでください

私は、他の誰もが答えを知っていると思われる広範な質問をした場合、私は無能であると恐れられるので、私が尋ねることができ、私の仕事を続けることができる最も小さな質問を見つけようとしました。無知と無能の違いを理解できませんでした。無知とは、まだ何も学んでいないことを意味し、それが持続しない限り、完全に受け入れられます。無知でないふりをするのはもっと悪い。

他の魚を渡すのではなく、人々の答えが今のところあなたを連れて行っているだけであることに気付いたら、魚を教えるように彼らに頼む必要があります。あなたの部分が全体にどのように適合するかを尋ねてください。あなたの質問が「とにかくSQLとは何か」と同じくらい基本的なものであると思われる場合は、後でではなく早く質問してください。少し愚かに見えるかもしれませんが、後でもっと愚かに見えるでしょう。

待ってください

すぐに質問をしないでください。複雑さにもよりますが、30分から1日のどこかに身を置いて、自分で考えてみてください。多くの場合、自分で解決します。そうでない場合は、うまくいかなかったことを同僚に伝えることができます。これにより、同僚はより良い答えを得ることができます。

また、あなたの同僚が頭の上の答えを知らない場合、彼がそれにどのように到着するかに注意を払ってください。多くの場合、あなたはあなたが思うほど多くの助けを必要としません。質問の時間がない場合、誰かをあいまいな方向に向けて、1分が来たらフォローアップするように指示することがよくあります。

いくつかの下書きを捨てる

座って、頭に入ってくるものをすべて置いて、それからあなたは作家です。しかし、著者とは、同情せずに自分のものの価値を判断し、そのほとんどを破壊することができる人です。
-シドニー・ガブリエル・コレット

決してリリースにならないコードを書くことを恐れないでください。経験が多ければ多いほど、間違った道を進んでいるとすぐにわかるようになりますが、間違った道を進んで行くことは依然として起こります。多くの場合、ソリューションの価値は、最初に間違った方法で行われるのを見るまで明らかになりません。


1

自給自足は来る

  • ドメインでの経験と露出の増加。
  • 既存のシステムとその動作、依存関係を理解するための観察スキルと分析スキルの向上。

頻繁に質問すると、これらの両方がないことを示すリスクがあります。

ドメイン、テクノロジー、プラットフォーム、言語を変更すると、元の状態に戻ります(ほぼ同様の問題や移転可能な知識に取り組む能力の向上は考慮されません)

本当に必要なときに質問をしないと、貴重な生産時間を浪費することになります。

あなたが間違っている場合、起こりうる損害の程度についてのあなたの仮定についての言葉を落とすのにあなたの好意に役立つかもしれません。または、あなたが考えるものがあなたの仮定の実際の評価を得るために壊れるかもしれません。多くの場合、それはあなたが逃したポイントと角度を明らかにすることを可能にするかもしれません。

慎重であることは良いことですが、そのベストはあなたの質問の性質を決定し始めることです。紙に書き留めて、その難しさ/価値を調べるのが最善です。

  1. それはあなたがグーグル/フォーラムで理解することができるか、より長い時間それに取り組んでいますか?
  2. あなたが台無しにした場合、それはあなたが逃げるか、多くの費用なしで修正できるものですか?

0

私はあなたが取り組んでいるものを見て、自分で決定を始めることを言うでしょう(もちろん、アプリケーションの仕様の範囲内で)。今までに、何が大きな変化であり、何が単純な変化であるかについて、あなたは良い気持ちを持つはずです。シンプルなものから始めます。あなたがしていることが正しいと思うなら、それをしてください。

あなたはWILLミスをすると、それらは非常に貴重です。彼らがあなたが次回より良い仕事をするようにするものであるので、彼らが起こるとき、彼らからあなたができるすべてを学んでください。

小さい決定に慣れたら、大きい決定を開始します。プロジェクト/環境/チームに基づいて、これをどこまで進めるかを決める必要があります。

それが意思決定側です。あなたがする必要がある他のことは、あなたの決定を導くのを助けることができるように、あなたの脳に栄養を与え続けることです。テクノロジーをカバーするサイトをフォローしてください。単純なものから奇妙な複雑なものまですべてをカバーする、ほぼすべてのオンラインチュートリアルがあります。人々が特定の決定を下す理由を尋ねることを恐れないでください-情報探索者として、対立的ではない。ほとんどの人は物事を説明することに満足しており、それらから多くを学ぶことができます。

技術的な知識が得られると、残りは知恵と自信になり、それらは経験とともにもたらされます。


0

私が質問をする初心者のときは、利用可能なツールを使用して、自分自身に対して常に部分的な回答を取得しようとします。そして、できるだけ遠くまで来たら、助けを求めている人が忙しかったという仮定の下で、できるだけ明確で簡潔になるように質問を正確に表現する方法を見つけました。このちょっとした準備で、質問することを気にかけている人はいないと思います。実際、彼らはそれを楽しんでいるという印象を受けました。その後、ドメインの専門家になったとき、自分の時間を尊重していることを明確にした人々を助けることも楽しみました。

私がやった他のことは、毎日、システムのアーキテクチャを選択することでした。他のポスターは、現代システムの大規模な取り組みとは何か、どのように対処するのが難しいかについてコメントしています。だから私はコードのツアーに行きます:賢明なエントリーポイントから始めて、それをトレースし、それがどのように機能したかについて自分にメモを書き留め、時々自分のために答える質問を尋ね、時には他の人に尋ねます。このような包括的な知識とドメインの能力には時間がかかりますが、スピードアップできます。そして、あなたがやればやるほど、あなたは望むように早く自給自足するでしょう。

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