経験豊富なプログラマーのスキル:初心者に最も人気のあるヒント

プログラマーであることが呼び出しですか? おそらく。 1cloudでは、プログラマー自身が成果を評価する方法、選択した言語や専門分野に関係なく、彼らが仕事に固有と考える品質、初心者デベロッパーに与えるヒントを調べることにしました。





/写真デビッドジョイス CC



1.行のコードを測定する



ソフトウェア開発会社Kopo Koopの従業員であるGeorge Maina 氏によると、経験豊富なプログラマーなら誰でも、コードの品質はコードの長さや作成にかかった時間によって決まるわけではないことがわかっています。



さらに、理想的には、コードができるだけ明確に記述されるように努力する必要があります。これにより、コードが簡素化され、結果としてボリュームが削減されます。 2つのプログラムが同じように機能する場合、コードに含まれる行の数が少ない方が優れています。



短いコードを書く能力は、多くの場合、高レベルの作業の指標として認識されます。 スティーブウォズニアックもそう思いました。 インタビューの 1つ(14回目の回答を参照)では、Macintoshチームがプロの高い専門性の特徴の1つとして短くて高品質のコードを書くことができると述べました。 また、機能的には100行のコードと同等の10行のコードを作成できるというフレーズも認められています。



多くのiOSアプリケーションの開発者であるMatthew Fecherは、AudioKitチームの主要メンバーの1人であるDummies向けのiPhoneシリーズとMac for Dummiesのテクニカルエディターでもあり、可能な限りシンプルなソリューションに非常に感銘を受けます。コードの複雑さは、プロジェクトの時間と最終コストの増加につながるだけです。



2.学びたいという願望と間違いを認める能力



プログラミングに必要な主な特性の1つは、何か新しいことを学びたいという欲求です。 これは、あなたが間違いから学び、できるだけ多くの質問をする必要がある初期段階についてだけではありません。



開発の必要性は、アクティビティ全体を通してプログラマーの特徴である必要がある、とスケーラブルパス開発サービスの創設者であるDamien FiliatraultのDamien Filiatrault氏は述べています。



しかし、トレーニングでは、標準のテクニックだけでなく使用できます。 たとえば、コンピューターグラフィックスの主題は、チェコのフラデツクラロベ大学の強制プログラムに導入されました(カリキュラム開発者は、コンピューターグラフィックスを教えることでプログラミングの知識が大幅に深まり、その後キャリアをこの方向に関連付けることはできないと考えています) 。



アーティスト、デザイナー、およびWeb開発者であるマットミルズは、グラフィックデザインとプログラミングを組み合わせることで、専門的な活動の分野を大幅に拡大できることを自身の経験から確認しています。 同時に、彼によると、視覚芸術による創造的思考の発達は、プログラミングにおける創造的解決策の探求を促進します。 そして最年少のコーダーはダンスを介したプログラミングのフライインベースの指導にアクセスすることさえできます。 子供たちは彼らのために新しい科学の基本的な概念を学び、それらを一連の動きと比較します。



プログラミングは芸術を通して教えられる無駄ではありませんが、ドナルド・クヌースは著書「プログラミングの芸術」の序文で次のように書いています。「私たちの議論は、プログラミングが科学と芸術の両方であり、双方が互いに完全に補完することを示しています...それは、世界に蓄積された知識を使用するからです。なぜなら、それはスキルと創意工夫を必要とするからです。特に、それは美を生み出すからです。 無意識のうちにアーティストのように感じるプログラマーは、彼がしていることを楽しんで、それをより良くするでしょう。」



常に視野を広げることで、専門家は自分の間違いをより簡単に認識することができます。 米国海軍で働いていた開発者であるマット・ピカリングは、初心者からコードの作成方法をすばやく教えることを約束する短期コースの数が増えていることは、初心者にとって必ずしも良いことではないと確信しています。 このような「トピックの紹介」の後、彼らはすべてを知っていると感じ、スキルを深める必要がなくなります-資格の欠如が彼らの専門的な資質の過大評価につながるとき Dunning Krueger 効果があります。



3.費やした時間ではなく、結果に重点を置く



この作業は、要件の調査からバグの修正まで、多くの段階で構成されているため、コードを迅速に記述することは、タスクに正常に対処することを必ずしも意味しません。 したがって、主なことは依然として最終製品の品質です。



Compudivision開発スタジオの従業員であるPeter Nieropは、時間の面では、世界中のユーザーをどれだけの時間節約できるかが非常に重要だと考えています。 そして、あなたのおかげで彼らが3回クリックする回数が減るなら、3日間の仕事の価値があります(もちろん、あなたの時間は重要ですが、努力から最終結果に焦点を移すことは、初心者の専門家が複雑で複雑なタスクに簡単に対処するのに大いに役立ちます)



Imagine Communicationsのアプリケーションアーキテクチャ開発者であるScott Palmer 、今日の人気のあるオンラインテストでは、コードの品質とプロ意識を適切に測定できないと説明しています。 もちろん、プロジェクトには時間枠と期限がありますが、コードの作成にできるだけ時間をかけないようにするのは良い考えではなく、完全に不当です(結果の観点から)。



この原則は、ビデオゲーム業界で最もよく説明されています(もちろん、ゲームの作成はプログラマーやゲームデザイナーの仕事に要約されるわけではありませんが、この場合の彼らの仕事は重要です)。 たとえば、Team Fortress 2のリリースは1998年に発表され、棚にゲームが登場したのはわずか9年後です。 彼ら 2016年もそれをプレイし続けているという事実を考えると、期待は明らかに価値がありました。 Diablo IIIの開発にはさらに11年もかかりました。 同時に、リリース年(2012年)に、このゲームは予約注文の記録をすべて破りました。 そして2015年、このゲームはベストセラーゲームのランキングで10位になりました(3000万部)。



4.予備作業の必要性



インターネットプロバイダーEarthLink Telecommunicationの開発者であるAshish Chandraは、自分の経験を語り 、ほとんどの時間を費やし、個人的な時間の一部でさえ、コードについて考え、実装可能な最良のソリューションを見つけると述べています。 また、1日あたり50行のコードでさえ、非常に思慮深く書かれている場合、まったく異なる値を取ります。



たとえば、ソフトウェアを開発するときにErlang言語を作成したJoe Armstrongは、コードを直接記述し始める前に、可能なすべてのことを注意深く文書化することを好みました 。 非常に多くの場合、予備準備がかなり大きな役割を果たし、作業を促進します。MicrosoftのソフトウェアエンジニアであるRavi Sankarは、これにより後続の変換および修正を削減または完全に回避できることを確信しています。



Hacker Newsの調査による 、多くのプログラマーはノートにメモを残し、カードを使用して考えを整理し、作業を開始する前にコードを熟考します。 プロジェクトごとに個別のノートブックを持っている人もいれば、アイデアを1か所で書いたりスケッチしたりして、ノートを印刷物に翻訳する人もいます。 しかし、それらはすべて、これによりコードの記述プロセスに費やされる時間を削減し、多数のエラーを回避するのに役立つことを確信しています。



5.社交性



社交性には2つの重要な側面があります。チームで働き、顧客を理解する能力です。 しかし、情報技術およびビジネスシステムパラディンコンサルタントの分野でコンサルティング会社のジェネラルディレクターを務めるクリスケンプ(クリスケンプ)にとって、 クライアントもチームの一員です。すべての企業がこのタスクを開発者自身の肩に担っているわけではありません)。



すでに知られているMatt Pickeringは、プログラマーではない仲間との積極的なコミュニケーションがプロフェッショナリズムの発展に役立つと考えています( ここでプログラミング人気のあるいくつかの概念について説明しまし )。



そのため、Damien Filiatro 、高度なスキルを持つスペシャリストの際立った特徴のリストに、優れたコミュニケーションスキル(段落2の下)を含めています。 スティーブンワイアットブッシュは、彼の父親がテネシー工科大学で教えたプログラマーの10の教訓をブログで共有しました。 第5の戒めによれば、プログラマーのステレオタイプをサポートしないように、技術的でない専門家とのコミュニケーションには特別な忍耐が必要です。



マイケル・ライオンズとロブ・トムセットは、マイヤーズ・ブリッグスの性格類型体系(カール・ユングのアイデアに基づく)に基づいて心理学的研究を実施しました。 彼らは、意識の指向によるプログラマーの半分または3分の2は内向的であるという結論に達しました。つまり、私たちは人や物の外側の世界よりも、アイデアや精神的なプロセスの内側の世界に興味があります。



3分の2はプロセス指向よりも結果指向であるため、明確な行動計画を立てることを好みます。 プログラマの80%は感情よりも合理的です(さまざまな職業の標準サンプルでは、​​これらの品質は50から50に分散しています)。これは、ロジックに基づいて決定を下し、適切なコードを書くのに役立ちます。



英国を拠点とするWeb開発者であるKevin O'Shaughnessyは、あなたの性格タイプを特定することで、自分自身を理解し、仕事のミスを分析することさえできると確信しています。 したがって、彼はプログラマーにテスト自体を取り、すべての性格タイプの説明に精通するように提供しています-これは、同僚やクライアントとの論争やコミュニケーションに役立つことがあります。



Etsy取引プラットフォームのテクニカルディレクターであるJohn Allspaw 、彼の記事の中で、あなたがキャリアのはしごを登るほど、より多くの要求が課せられると書いています。したがって、初心者向けの普遍的なプラクティスは、経験豊富な開発者に役立つ場合があります。



PSそれでは、初心者に役立つヒントを教えてください。



PPSHabréでのその他の記述について:






All Articles