自分はあまり経験がないと思いますが、なんとかリーダーとして就職し続けています(現在は会社の技術責任者で、以前は研究開発責任者でした)。
なぜこれが起こるのか理解しています(私には特定のスキルがあり、いくつかの珍しいプログラミング言語を使用しています)、私の問題は次のとおりです:メンターが見つからない...
私は学ぶべきことがあるはずだと知っており、年を重ねるにつれて、次第にゆっくりと学習していることに気づきますが、コーディングするよりもはるかに速く改善する方法があると思います...
では、社内に教えたり、コードを読んだりする人がいない場合、どうすれば改善できるでしょうか。 (または、コードを修正する...)
私は本を超えていると思いますが、「マスター」レベルをはるかに下回っているので、どこでもっと学ぶべきか分かりません。
いくつかのヒント:
他の言語を学ぶ。次に、それらをすでに知っている言語と比較し、他の言語から学んだことを使用して、それらの言語でのコーディングスキルを向上させる方法を見てみましょう。これらの新しい言語を学ぶ前に「心を解放」してください 単純にある概念を別の概念に複製しようとしないでください 。
コードを読み取ります。あなたの仕事で正確に使用している一般的でない言語はわかりませんが、非常に熟練した開発者がこれらの言語で記述した高品質のオープンソースコードを見つけることができると確信しています。
コミュニティと一緒にいてください。職場で自分の言語を使用している同僚がいない場合でも、非常に一般的でない言語でも質問と回答があるStack OverflowなどのWebサイトを通じて知識を共有しないことの言い訳にはなりません。これらの質問をタグで検索して、すべての回答を理解しているかどうかを確認してください。質問に答えられない場合は、答えてください。
教える。同僚に教える。ブログを書く。なんでも。他の人に何かを説明することで、あなたはそれをよりよく学ぶでしょう。
過去2年間の私の主な解決策は次のとおりです。
ソーシャルネットワーキング:私は特に、meetup.comがあなたの地域のプログラミンググループを見つけるための素晴らしい方法であることを発見しました。 Twitterもこれに最適です。あなたが好きで尊敬する人を見つけたら、彼らに従ってください。
http://www.stackoverflow.com を使用して、私は時々質問にそれを最初に使用しました。今では、アドバイスを与えたり受けたりするための私の毎日の仲間です。 https://codereview.stackexchange.com/ のような姉妹サイトも使用してください
働くこと:おそらくあなたには当てはまらないでしょう(しかし他の人には良い一般的なアドバイスです)あなたが望む領域である種の仕事を得るのに十分なら、高齢者を探し、彼らに優しくして彼らを指導するようにしてください。
本。 O'Reilly、Pragmatic Programmerや他の人はまだ優れた本を持っているので、紙版やデジタル版を選択できます。ここに本当に素晴らしいリストがあります: https://stackoverflow.com/questions/1711/what-is-the-single-most-influential-book-every-programmer-should-read あなたがまだそれらを読んでいない場合に備えて、そこにある最高の「クラシック」。クリーンなコードと完全なコードをお勧めします。
チュートリアル。次のようなネット上にいくつかの素晴らしいサイトがあります
http://www.codeschool.com 、
http://www.codeacademy.com
http://code.google.com/edu/
私があなたの質問のかなりの階層を読んでいるからといって:
あなたの下にいる人々から学びましょう。ソフトウェア開発は、人間同士の通信であり、多くの場合、コードの媒体を介します。優れたコミュニケーションは両方の方向に進む必要があるため、プログラムの相手から学びます。 (私の仮定は、あなたが1人の会社にいないことです)
私はあなたがあなたが導くものを教えることによって多くを学ぶと信じています。なぜ/どのように簡単なことが機能するのかを考えざるを得なくなるため、教える内容をよりしっかりと理解できるようになります(機能を望んでいたので、最初はやめたのでしょう)。
メンタリングは部門横断的である場合があります
メンターは、常にあなたが焦点を当てていることに精通している必要はありません。通常とは異なるプログラミング言語を使用している場合でも、ソフトウェア開発に約99の言語以外のトピックが残り、指導を受けることができます。最近のメンターの一部は、主にビジネス開発、ハードウェア、またはシステムエンジニアリングに携わっていますソフトウェアに関わる。
多くの種類の人々があなたのメンターになることができます
探すのに良いのは、5年後の自分になりたい人です。このようなメンターは常に利用できるとは限らないため、他の代替手段としては、経験は豊富ですが正式なリーダーシップの役割を果たさないセージ、経験が少ない(天国ではない、より若い)が、見通しのあるリバースメンターが含まれます有益になり得るツールとテクニックについて。
あなたのメンターはあなたのスポンサーでもありますか?
メンターに加えて、時にはスポンサーを持つことが重要です。組織で上に移動しようとしている場合、優れたアドバイスを提供するが、あなたの指揮系統には影響を及ぼさないメンターがいる場合、リードとして彼らを後援するメンターがいる人に比べて、不利になる可能性があります。プロジェクトオーナー、またはより影響力のある役割やプロモーションを獲得するプロジェクトのマネージャー。
クロスカンパニーメンターおよびネットワーキング
すでにテクニカルディレクターである場合は、メンターを社外で探す必要があるかもしれません。数には長所があるため、浅い方法で多くの人々とネットワークを構築することは、驚くほど価値があります。私は一般に、他の専門家とのあなたの関与が価値あるものになるためには、一緒に働くことから、または広範囲、頻繁、または長期にわたる協会からもたらされる深さを持つ必要があると思っていました。
池の大きさは?
あなたはR&Dの責任者で技術ディレクターを務めてきたと言いますが、あなたはそのような経験があるとは感じていません。告白は、評判ではないとしても、魂にとって良いことです。私も同様の自白があります。
あるとき、私のキャリアは2つの部分に分かれていると思いました。最初は、私が唯一のソフトウェア開発者であるか、大学が最も多い開発者である多くのチームで働いていました。 2つ目は、私がFortune 100の会社に雇用し、明らかにより高いグレードの開発者と一緒に働いたときに始まりました。対照的に、小さな池で大きな魚になり、大きな池で小さな魚になるような対照がありました。
取引
独立した小さな会社からの変更は、私が組織での地位をはるかに少なくすることを意味しました。しかし、まだいくつかのステータスがありました。開発者たちは依然として、より高い給与と、仕事に対するかなり高度な制御の両方で評価されました。チームメンバーに影響を与えることもできます(ただし、上からではありません)。ロールモデルがたくさんありました。たくさんの競争があったので、技術的に強化し、私が何をしたことが組織と私のチームにどのように価値を提供したかを理解することを余儀なくされました。
私は以前、役割とメンターについての直感を無視し、代償を払いました。直感は、経験の合成から生じる感情である場合があります。私の投票は、それが間違っていると感じた場合、おそらく間違っていて、注意深い調査に値するということです。あなたは自分の経験とメンターの不足を心配しているようです。オプションを調べてください。
より大きく、より攻撃的な会社に移行することで、成長、満足、その他のメリットを見つけますか?大きい方が良いとは限りませんが、多様な人間関係の利点や、多様な仕事上の関係、多様なプロジェクトの経験が得られる場合があります。シリコンバレーの著名人の多くは、成功への道をより迅速かつ効率的に示すことができる人々のメンターを務めてきました。大学院のクラスメートの1人がLinked Inへの参加を求めて電話をかけ、その文化を体験し、はるかに高いレベルのゲームをプレイしています。
メンター特典
メンターは教授のようにすることもできますが、仕事の成果を頻繁に見たり、マスター/見習いの関係でマスターのように仕える人がいない限り、スキルトレーニングと専門教育は二次的だと思います。メンターが共有する最大の事柄には、成長に関するアドバイス、適切な意思決定のロールモデリング、職場の価値観のバランス、危機時の安定した客観的で健全な判断が含まれると思います。
私の祖父が私に何度も与えたアドバイスの一部は、人々は彼らが謙虚であるときだけ教えることができるということでした。 「私は本をはるかに超えています」などの発言に注意し、みんなから学ぶようにしてください。メンターとの関係を築くために、あなたが敬意と受容力を持ち、感謝を示すようにしてください。彼らは非常に辛抱強くない限り、彼らは通常、行動に移される時間を費やすので、彼らのアドバイスに従うことも重要です。
私の親愛なる友人
誰かがプログラミングのニュアンスを他の人に教えているのは非常にまれであるとはめったにありません。プログラミングは自分で学ばなければならないものです。単一のトピックに集中してそれを試してみて、そのトピックをサポートするさまざまなフォーラムに参加すると、遅かれ早かれ、そのトピックのマスターになります。親切にあなた自身があなたがどれだけ上手になったかを知るのに最適な人であることを忘れないでください。私たちがそうであるような業界と世界では、私たちは自分自身の指導者になる必要があります。
社内に教えたり、コードを読んだりする人がいない場合、どのように改善すればよいですか?
非常に「特定のツールまたは一般的でないプログラミング言語/フレームワーク」を使用している場合は、いくつかの特別な関心グループを探します。もちろん、現在使用されているほとんどのテクノロジー/フレームワークのオンラインコミュニティがあります。したがって、私はオンライン通信のあらゆる手段を使用して、以下の最新の投稿と連絡を取り続けます。
「一般的でないプログラミング言語」の優れた実践を学ぶための最良のアプローチの1つは、いくつかの開発者ブログ(できれば4-5)を見つけて購読することです。
私の問題は次のとおりです。メンターを見つけることができません...私は本を超えていると思いますが、「マスター」レベルをはるかに下回っているので、どこでもっと学ぶべきかわかりません。
どの地域で?プログラミングスキル、ソフトウェアエンジニアリングスキル、プロジェクト管理スキルなどを向上させたいですか?質問では指定していません。
自分でプログラムの作成、ソフトウェアプロジェクトの設計、プロジェクトの管理を学んだことがあれば、本を読むことはできません。また、学校に戻ることもできます。高度な学位のために学校に戻ること、または少なくともいくつかの大学院レベルのクラスを取ることは、あなたが除外してはならないオプションの1つです。どのエリア?それはあなたがあなたのキャリアをどこで見るか、あなたが改善したいものに依存します。たとえば、MBAを取得するために言うべきことがたくさんあります。技術的にもビジネス的にも精通している人は、とても価値があります。たくさん。私の以前の同僚の何人かはMBAに行きました。彼らが働いていないとき、彼らは熱帯の楽園に出かけているので、私はそれらを頻繁に見ません。またはサファリ。または週末のアルプスへの旅。または南アメリカへの夏のスキー旅行。
別のオプションは、専門知識を持っているがまだ改善したい分野の技術社会に参加することです。さらにもう1つは、雇用主にあなたを学び、ネットワークを築くことができるいくつかの大胆な会議に連れて行くようにすることです。