ジュニアソフトウェアエンジニアにどのスキルを期待し、評価しますか?[閉まっている]


64

私は最近、ソフトウェア工学の修士号を取得しました。数週間のうちに専門職を始めようとしています。私の役割は、Javaと関連技術(特にSpringとHibernate)を使用してソフトウェアを開発する会社のジュニア開発者としての役割です。正直に言うと、特にJava開発者としてのキャリアを発展させたいと思っているので、私は何が来るのか本当に興奮しています。また、この分野での経験を得ることにも非常に興味があります。また、これはプロの開発者としての最初の仕事の経験になるので、最初からベストを尽くしたいです。

ソフトとテクニカルの両方のスキルと能力が、あなたのチームの一員となりうる新しいプロフェッショナル(ジュニア開発者)で最も高く評価され、ソフトウェアとして成功するキャリアを達成するためにどのスキルに焦点を当てるべきかを知りたいエンジニア。


13
素晴らしい質問が雄弁に尋ねられました。
アダムクロスランド

2
現実世界の作業環境の中で物事があなたが想像するようにうまくいかないときのためのゲートウェイ薬/活動を見つけますが、その効果が朝にこぼれないことを確認してください。
ジョブ

詳細に注意-これ以上重要なことはありません。
11

1
あなたはJSWEだから。あなたが有能であると言った言語で有能であること。彼らは言語を知っているが1つのクラスでそれを学んだだけだと言う人を雇うのにこれほど腹立たしいことはありません。例:履歴書にC / C ++をリストしているが、どちらか一方を使用できない(神は禁止、どちらも使用できない!)
aqua

ビデオゲームを作るという夢はどうなりましたか?あなたは「Java開発者としての[あなたの]キャリアを発展させたい」と真剣に考えていますか?冗談だよ、彼自身に:)
カンブラカ

回答:


50

これらの多くは、あなたがあなたのキャリアのどこにいても真実ですが、始めたばかりの人にとって特に重要かもしれません。

  • あなたが話すよりももっと聞いてください。他の人が言っていることから学びます。
  • 謙虚になりなさい。あなたのアイデアを共有することを恐れないでください。しかし、あなたが正しいと思い、他のすべての人が間違っていると思い込まないでください。あなたが間違っていると思う何かを見たら、それについて尋ねてください、それについて宣言をしないでください。
  • 学び続けます。あなたの教育の基礎は素晴らしいはずですが、あなたは職業を学び始めたばかりです。行うことによって学びます。あなたが学んでいることを実際に練習しているのでなければ、本当に学べるとは思わない。
  • 顧客は、自分が望むものを見るまでめったに知りません。要件の変化に慣れましょう。フィードバックを得るために、顧客の前で物事を迅速に把握できる開発スタイルを採用します(可能な場合)。
  • 顧客との連携が得意な人を見つけ、顧客との関係をどのように築いていくかを指導してもらいます。
  • 十分にテストされた堅牢なコードを記述します。それを達成することは目標ではありません。それを正しく行うことです。あなたがそれが得意であれば、速度は時間とともに来るでしょう。
  • 頑張ってください。何かするように頼まれるのを待ってはいけません。やることを探したり、求めたりします。
  • あなたの間違いやあなたのチームの間違いに専念してください。チームメンバーを顧客の前でバスに放り込むのではなく、コードの問題がある場合は正直になります。
  • あなたのチームメイトはあなたを素晴らしいコーダーにしたいと思うかもしれません。それは素晴らしいことですが、あなたのチームメイトは本当にあなたが有能であり、ジャークではないことを望んでいます。あなたがジャークになるつもりなら、あなたは素晴らしい方が良いでしょう。

3
+1「顧客は、自分が望むものを、それを見るまでめったに知りません...」
FrustratedWithFormsDesigner

1
「学習を続ける」ための+1。それはおそらく、私が中級レベルのプログラマーに求める最も重要なことです
レイチェル

+「達成することは目標ではなく、正しく達成することが目的です」コードが機能するだけでなく、厳密にテストされていることを確認することは非常に重要です。また、適切に実行することは、別の開発者がコードを見て、理解し、コメントを読んで、そのコードを維持できることを意味します。
ジェレミー

61

ここに私の頭の上の簡単なリストがあります:

  • フォロースルー(開始したものを仕上げる)
  • 正直(行き詰まったら教えてください)
  • 好奇心(物事を行うより良い方法を見つける)
  • 偏見のないこと(批判と、あなたのものではないアイデアの両方)
  • 寛大さ(学んだことを共有し、次世代を訓練する)

1
リストされているすべての品質に同意します。そのような若手プログラマーを指導するように頼まれたら、そうすることを嬉しく思います。そして、それは私の仕事の日をずっと楽しいものにします。
アダムクロスランド

3
このリストはそれをかなり要約していると思います。追加できるのはコミュニケーションだけです。有望な若い開発者の多くは、チームメンバーとコミュニケーションを取りたくないために取り残されているのを見てきました。コーディングだけでは、最近ではそれを削減できません。ユーザー、チームメンバーと話し、関与する必要があります。また、あなたが思っていたよりも多くのことをするので、うまく書く方法を学びましょう。
ノードノーノードガイ

14
+1正直:「これは理解できません。」と言うことを学ぶ。-最初に自分自身、次に同僚に-本当に重要です。コミュニケーションと学習への扉を開きます。私は自分のエゴが彼らの心を広げる方法を邪魔することを許した多くのプログラマを見てきました。私はこの業界で40年以上働いてきましたが、それでも毎日、私には理解できないことがあります。だから私はグーグル、読んで、練習コードを書いて、それからもう1つのスキルをテーブルに持ってくることができます。
ピーター・ロウェル

オープンマインドについて-これには特にルールブックの例外が含まれます。私はこの点で失敗しました。経験の一部は、いつルールを破るかを学ぶことです。時には、すべてを理想に合わせるように強制すると、すべてが複雑になります。大藤、...すべてのルールブックを知らない
Steve314

1
正直なところ:私のために働いている人々に私が言うことは、自分でそれを理解しようとして30分を費やしてから、助けやポインタを私に尋ねることです。すぐに答えが得られない場合は、それ以上かかることを知らせる前に、4時間ほど強打してください。そのとき、私たちは他のタスクから人々を引きずり出して助けます。最近では、検索するように助言し、そのプロセスの早い段階でStack Overflowで、そして一般的にはgoogleで尋ねます。ここでの私の目標は、あなたの周りの人々の生産性を損なう可能性のある即時の割り込み応答を防ぐことです。
ハックソー


4

好奇心、熱意は、自分自身に高い基準を設定し、学習意欲、知らないことを認める意思、ビジネスが何をするのか、そしてそれがあなたの制作にどのように影響するのかへの関心を持ちます。(20年の経験があっても、すべての良い品質)

優れた技術知識は素晴らしいものですが、この知識をどのように適用するかを示す必要があります。

何よりも、インタビュアーは、あなたがそこで働いて貢献し続けたいと思っているのを見ることができなければなりません。あなたがあまりにも優れている場合、それは平均以下であるよりも速く一部の人々を先送りにすることができます。;)


4

動機。自分をやる気にさせる方法を知っていますか?他の戦略よりも効果的な戦術を知っていますか?これは自己認識についてであり、一部の人々は、あなたがこれを側で見つけたためにあなたがしたすべての教育からあなたが知ることを期待するかもしれません。

基本的なテストとデバッグのスキル。ユニットテストとは何ですか?問題をデバッグするいくつかの方法を知っていますか?これは、環境で何をすべきかを具体的に知ることではなく、最も基本的なテストが何であるか、問題を調べる際にどのような戦略をとるかの一般的な考え方です。

コミュニケーション能力。あなたは言語についてどれくらい正確ですか?技術的なものから非技術的なものにどれくらいうまくいくことができますか?これは開発すべきことですが、注意すべきことであり、場合によっては、主張する内容の意味を理解しないことで問題を起こす可能性のある人を救うことです。あなたは人とどのくらいうまくやっていますか?これは厳密な要件ではありませんが、同僚と良好な関係を築くことができれば、一部の仕事が少し簡単になります。正直さと誠実さもこのスキルグループに該当します。一般に、あなたが何を言い、何を言っているのかをどれだけうまく言っているかについての質問があるかもしれません。 "オフィススペース" コミュニケーション不足の例がたくさんあり、仕事は架空のものですが、オフィス環境で働くという点で一部の人々にとって現実に非常に近いシーンがたくさんあったかもしれません。

汎用性。チームの新しい人々は幅広い責任を負う可能性があるため、小さな会社ではデータベース、ネットワーク、Webサーバー、および開発外のその他のものをセットアップする必要があります。チームが締め切りに間に合うように支援することは、ここの別の例です。


1
+1:コミュニケーションスキルセクションに誠実さを加えたい。何かに完全に不慣れな場合、または問題に困惑している場合は、上級の同僚やチームリーダーに早期に伝えることで、後で深刻な問題を回避できます。
-oosterwal

2
待ってください...「オフィススペース」は架空のものです???
PSU

3

私にとって、学位を持たない若手開発者として、一生懸命仕事をして自分自身を改善したいという私の意欲は、私のキャリアに大いに役立ちました。また、いくつかの批判(肯定的かどうか)に対処することができ、それをフォローアップできることは、上司から高く評価されていることに気付きました。

新しい環境については、最初の1週間程度はフローを使用することをお勧めします。私は一生懸命努力するという過ちを犯しましたが、それは高く評価されませんでした


はい。批判を受け入れるということは、「批判者」をより快適にするために、多くのフォローアップの質問をすることを意味します。もっと良くするために他に何を変えることができるか尋ねてください。同じ問題を抱えた次の例を示してください-今回はもっとうまくやれましたか 改善していますか?誰も建設的な批判に本当に慣れると、楽しみが始まります。ただし、ビジネス製品の人々はこのように考えていないかもしれません;)
マイケルデュラント

3

すでに述べたすべてのことに同意しますが、技術の専門家である代わりに、これらの一般的な(およびソフトな)スキルを決して忘れてはならないことを強調したいと思います。両方に取り組む必要がありますが、自分が知っていることを伝えることができる中間者がいて、一人で働くことを望んでいるマスターがいます。

また、本であなたの鼻とあまり時間を費やさないでください。書籍は優れていますが、ほとんどの時間を読書に費やし、仕事に費やす時間が少ない場合、それらの書籍の半分を手に入れることはできません。


++良い点、ウェス、私は疑問に思うべきですが。最近このようなことを読んだかどうかを人々に尋ねると、答えは通常-読む?
マイクダンラベイ

2

素晴らしい答えです。私の限られた飛行経験から追加するだけです-彼らはパイロットのライセンスと呼んでいるものを知っていますか?

学ぶためのライセンス。


2

たくさんの素晴らしい答え。

「大物」のために働いておらず、第一人者でもない場合でも、2セントを加算します。

人に優しくしてください

同僚との付き合いを心がけ、可能な場合は少し時間をかけて毎日同僚と時間を過ごしてください。時々彼らと夕食に行き、彼らと大笑いします。

言い換えると、「コミュニティ」が存在しない場合はそれを構築し、存在する場合はその一部になるようにしてください。

同僚と知り合うことは、同僚と簡単に仲良くするのに役立ちます。さらに、あなたがそれを楽しんでいる確率は良いです。


2

コミュニティから提出されたすべての優れたもの(上記)に加えて、ハードスキルの証拠も見られると思います。完全さやユーバーギークの力ではなく、基本と基本的な概念に関する実用的な知識。あなたはすでに仕事を得ています(ところでおめでとうございます!)、あなたはほとんどそこにいます。

しかし、知識を更新したり、会社で使用しているツール、言語、技術を理解したりすることで、着実に実行し、良い第一印象を与えることができます。

架空の完璧なジュニア開発者は、次のようなものの基礎を知っています。

  • 言語。
  • I / O
  • 継承のようなオブジェクト指向の概念
  • オブジェクトインターフェース
  • データベースアクセス(特に、新しいコードショップでのアクセス方法に関して)
  • HTTPモデル
  • CSS
  • JavaScript / JQuery
  • データベース設計
  • SQLおよびストアドプロシージャ
  • 使用するIDE
  • 関連するフレームワーク(Springに言及)

等々。彼は、基本をやめずに新しいスキルを習得することに集中できます。(できるだけ多く求めて彼が上でゆっくりと歩くことができるようになります賢明な -ほとんどのシニア開発者、彼が好きなような質問を大好き頼まれて賢明なオンラインフォーム、多くの後輩が、最初の数ヶ月のために直面して管理ページのルーチンの運賃との技術的な質問を)。信頼できるジュニア開発者になることは、最初のチーム開始テストかもしれません;-)

私が大企業のウェブチームのジュニアとして始めたとき、私に割り当てられた最初の仕事の大部分はやや意欲的ではなかったが、私が毎晩本を打つ点まで私に負担をかけたので、私は何をしようとしていたのか理解できた翌日しなければならない。私はそれを乗り越えましたが、それは私のマスターコースの比較的贅沢の後の5、6ヶ月のストレスでした;-)

基本的なことをすべて効率的に行うことができれば、もっと面白いことがすぐにできるようになります。これはもちろんあなたのキャリアアップに役立ちます。

上記の多くの人が言ったことを反映して、コンピューターとコードの世界は絶えず進化しています。あなたは一日おきに新しいものを学ぶ必要があります。あなたの心を大きく開いて、あなたが最初にこれに着手した理由を試してみてください-あなたはそれを<3です。これからの数年間、これがあなたの心の最前線にない時があるかもしれません。熱意は、ほとんどの衝突やハードルを乗り越えます。

そうは言っても、私の過去12年程度の経験から、ほとんどのジュニアは最初の会社に永遠に留まることはないので、「完璧」であることにこだわらないでください。間違いを犯すことは、後輩から最終的にどこへでも行けるようになるプロセスの一部です。私はこれをしばらくの間行ってきましたが、実稼働データベースは少なくとも年に数回はほぼ削除します。

あなたのキャリアで頑張ってください。


1
+1は、プログラミングに固有の何かについて言及しているため、編集せずにボーイスカウトマニュアルに移動することはできません。
psr

笑。はい、この質問には多くの
称賛があり

1

(1)開かれた心。すべてのプロジェクトで言語Xと環境Yを使用するよう制度化された人はいらないでしょう。特定の技術では問題をきれいに解決できず、適切な代替手段を提供できない場合に、認識できる人が必要です。それに加えて、従来の考え方に挑戦し、ビジネスを動機付けるソリューションを思い付くことができる人が必要です。あなたはこれを自分で経験するかもしれませんが、私は人々がプロセスにあまり慣れていないので、それを変えないことを発見しました。通常、到着したら、それを改善し、マネージャーに解決策を提供する方法を検討します。今、私はまた、個人は彼/彼女の提案について「外交的」であるべきだと言います:)

(2)優れたドメインモデリングスキル。これはかなり大きなもので、見落としている人もいます。私が働いたいくつかの場所では、ビジネスについて学ぶことは「あなたの手を汚す」ことであり、人々はスペルチェッカーをバージョン管理などに統合するなどの純粋に技術的な問題に恥ずかしがり、彼らは改善に多くの時間を費やしませんビジネス。ビジネスを見て、そこからモデル(単純化)を作成し、話している人、視覚的な人(UML、SSADMなど)、またはその両方をさまざまな視聴者に伝えることができるのであれば、そのようなメンタリティを持つ人が必要です。

このテーマに関して私がお勧めできる2冊の本は、The Passionate ProgrammerThe Pragmatic Programmerです。どちらの本も、ジュニアプログラマーとシニアプログラマーに良いアドバイスを提供します。


書籍の推奨については+1。OTOHドメインモデリングスキルは成熟するのに時間がかかるため、これらのスキルは後輩には期待できません。しかし、ビジネスの観点を理解し、ユーザーの実際の問題を解決するよう努めることは、あらゆるレベルで確かに重要です。
ペテルトレック

ピーター、大学を通じて(少なくとも私が見たものから)、開発者は強力な分析スキルを構築します。これは、モデリング、専門知識の抽出、および他の人が学習できるようにすることの目標です。したがって、これはほとんどの開発者に期待される基本的なスキルだと思います。マイクロ/マルコレベルで特定の問題を組み立て、それを説明して金融トレーダーに伝え、フィードバックを得て、チームメイトにそれを伝えることができる。でもそれは私の考えです。
荒涼とした惑星

1

イニシアチブを取ります。私はこれをまったく行わず、何をすべきか正確に言われるのを常に待っている多くの人々がいました。改善すべき点があれば、それを実行してください。何か改善するアイデアがありますか?それを前面に出します。何かを改善するために別のスキルが必要ですか?勉強しなさい。

自分が何をしていて改善したいことを気にしていることを示します。


1

あなたを怖がらせることはありませんが、私が働いたすべての会社で警告する1つのことは、大きく汚い巨大なスクロール方法と、ひどくソースファイルを開くことを恐れさせる名前の悪いオブジェクトですそのような混乱のショックと恐怖。通常、これらの場所は、ダイアログの[OK]ボタンのイベントハンドラー、またはWebページの[Submit]ボタンにあります。

心からお願いします。メンタルアラームベルをインストールしてください。メソッドが大きく見えるようになったら、10行以上を意味します。別のメソッドを作成することを検討してください。開発中のオブジェクトがあります。

私がお勧めする次の警告音は、メソッドの最大2〜3パラ​​メーターです。約10個の入力パラメーターを持つメソッドが表示された場合、OO言語の関数型プログラミングに挨拶してください...

この応答で表明されたわずかなフラストレーションは申し訳ありませんが、クリーンなコードの書き方を学ぶことがどれほど有益であるかを十分に叫ぶことはできません。

ロバートのコピーを手に入れてくださいC Martins Clean Code。毎週読んで、夕食のためにそれを取り出して、枕の下で寝て、トイレでそれをコピーして、数ページ印刷して天井に貼り付けて、寝るときに前に読むことができますあなたはうなずく;)。

みなさんのキャリアが最高であることを願っています。この時点でのあなたの情熱は、あなたが素晴らしいことをすることをすでに示しています。


1

私が提供できる唯一のアドバイスは、学習を止めないことです。ロックスターの開発者がそこに着いたのは、時間をかけて新しい技術と言語を学ぶことであり、それは彼ら自身の自由時間です。そこに10年間滞在するのは素晴らしいことですが、出てきたときは、Java + Spring + Hibernateしか知りません。これが、空き時間に.NETプラットフォーム、Python、および随時アクティブなC ++コードを見る理由です。info secでMSに取り組んでいる誰かとして、時間は貴重であり、賢明に費やす必要があります。


1

グーグルを使用する機能。本当に。

誰も、特に後輩の同僚を助けることは決してありません。しかし、継続的に問題を解決するために誰かがデューデリジェンスを行わないのは、イライラすることはありません。

ジュニアソフトへの私のアドバイス。エンジニアは問題を解決するためにデューデリジェンスを行うことです。何かわからないときは、グーグル、ウィキペディア、またはStackoverflowを熱心にかつ系統的に使用してください。

より多くの上級同僚に助けを求める前に、あまり長く待たないでください。それは、組織のタイプによって異なります。人々が互いに助け合う良い会社では、答えを見つけるために半日以上費やしているなら、助けを求めるためにあなた自身の研究をやめることをheしないでください。

人々がいつもお互いに意地悪である他の組織では、助けを求める前に、自分で何日か(あなたがしたことや研究したことをすべて文書化する)をしなければならないかもしれません。そのような会社では、あなたがしたことを文書化することは、彼らがあなたに投げかける最初のレトルトであるため、「あなたはグーグルでやった」ことを彼らに示すことができるように役立ちます。

とはいえ、私がジュニアエンジニアに求めるのは、常に答えを期待するのではなく、問題を解決するためにデューデリジェンスを行うことです。一言で言えば、Googleを使用できることを教えてください。



1

ここでの素晴らしい答えは、人々がここで言うことすべてに従うなら、誰もが彼/彼女がしていることを上手にできると確信しています。

いくつかの点を強調したいだけです。

  • 謙虚に、あなたの意見を述べることを恐れてはいけませんが、意見が共有されたら、それを保持しないで、他の人から学ぶ準備をしてください。
  • チームメンバーとの関係を構築します。私たちはスマートで定評のあるプログラマーと仕事をしたいだけでなく、会話できる人がまだ必要です。
  • 積極的に働き、仕事を与えられるのを待たず、仕事を見つけ、環境に新しいアイデアを提案します。たとえ受け入れられなくても、これは会社にとっての価値を高めます。
  • あなたが学んだことを他の人と共有してください。これはあなたの理解のレベルを高め、会社とコミュニティに対するあなたの価値を高めます。
  • あなたが始めるものを終えてください、コミットメントは持つべき素晴らしい品質です。
  • 物事が計画どおりに進まない場合、幸福を保ち、落胆しないでください、浮き沈みがありますが、そこに固執します

仕事で最高


1

多くのJrプログラマーが持っているとは思いませんが、本当に優れたスキル、つまり独自のツールを作成する能力です。いくつかの優れたカスタムツールを使用すると、時間と労力を大幅に節約できます。また、それらは派手なものである必要はありません。私のほとんどは3行のシェルスクリプトですが、いくつかはもっと長いものです。

しかし、物事を自動化することを学ぶことはあなたの人生を楽にします。(そして、あなたが物事をうまく成し遂げることができるとき、あなたの同僚に印象づけてください)


-3
  • JavaとC ++に対する強い嫌悪。
  • オペレーティングシステムの内部、アルゴリズム、データ構造の基本的な理解。
  • Cの優れた能力、および少なくとも1つのスクリプト言語。
  • 1つのメインストリームVCS(Mercurial、SubversionまたはGit)の実用的な知識。
  • コマンドラインで上手く機能する能力。
  • Windowsが嫌いで、LinuxやBSD、SolarisなどのUnixから派生したOSを開発や一般的な用途で使用することもあります。

私は、Java / C#/ C ++に対する強い嫌悪は、世界がそれらで始まったり終わらないことを理解することほど重要ではないと思います。Javaには用途がありますが、Ruby、PHP、Erlang、Lispなども同様です。
Zachary K

メインストリームVCSの実用的な知識を開発するのにどれくらい時間がかかりますか?
アンドリューM

@Andrew M:VCSを取り巻く多くのツールに習熟するには数週間かかる場合があります。差分、ブランチ、パッチ適用、マージ。次に、各VCSの制限または過度の複雑化を回避します。
マットジョイナー

@マット:なるほど、ありがとう。では、これを自分で行う最善の方法は何ですか?あなた自身のペットプロジェクトにそれを使用するだけで十分な実践でしょうか?
アンドリューM

2
最初と最後の箇条書きは、開発や学習が上手であることとはほとんど関係がありません(新しい開発者が必要とする主なことです)。誰もがそうしなければ、それは亀裂を引き起こすだけです。Windows嫌いとLinux嫌いの違いはありませんが、どちらも嫌いです。一方、個人的な経験に基づいて何かを嫌う理由を持つ人は、テーブルに持っていくものがあることを意味します-それは価値があります...しかし、自宅でSuseを使用しても賢くなりません。
corsiKa
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.