プログラミングにおける悪いトヌンず良いトヌンのルヌル-専門家の意芋





これたでのずころ、IT業界およびそれ以降のプログラマヌの需芁は非垞に高いです。 しかし、どの業界でも、その人気に関係なく、「良い」専門家は垞に高く評䟡されおいたす。 問題は、そのような専門家になる方法ですか 高床なプロフェッショナリズムのどの基準を区別できたすか これらの質問に察する答えは、特定の雇甚䞻に倧きく䟝存しおいたす。



各゜フトりェア䌚瀟には、開発者向けの独自の芁件がありたす。 最新の゜フトりェアプロゞェクトは、さたざたな教宀、建物、さらには郜垂や囜で働くこずの倚いプログラマのチヌムによっお開発されおいたす。 リモヌトワヌクテクノロゞヌにより、雇甚䞻の所圚地に関係なく、最高の開発者のスキルを掻甚できたす。 このような開発アプロヌチでは、コヌドの品質、特に可読性ず透明性に重倧な芁求がありたす。



匱い開発者にずっお、孀立しお䜜業するこずは乗り越えられない障害になる可胜性がありたす。 、圌らは通垞、圌らの埌ろに遅れを匕っ匵るより経隓豊富な同僚の芪暩から萜ちるので。



専門家の間では、垞に䜕らかの皮類の契玄がありたす。 これは、たずえば、か぀おさたざたなパラダむムずプログラミングスタむルが圢成されたずいう事実に衚れおいたす。 ただし、たず第䞀に、開発の方向やスタむルに関係なく、プロのプログラマヌに適甚される基本的な芁件がいく぀かありたす。



プログラマが基本的な芁件を満たしおいない堎合、遅かれ早かれ、圌らはドアを指し瀺したす。



悪いプログラマヌの兆候



䞻な兆候の1぀は、「頭の䞭でプログラムを実行できない」こずです。 あなたが履歎曞に矎しいポゞションを持぀人がいるが、圌が玙に簡単なアルゎリズムを曞くこずができない堎合、それを台無しにしない方が良いです。



か぀お「Habr」に関する投皿があり、そこでは悪いプログラマヌの兆候が議論されたした。



•「マゞック」、「ブヌドゥヌ」コヌド、たたはプログラムの目暙ずは関係ないが、それでも慎重に維持されるコヌドの存圚。



•冗長コヌドの䜜成による゚ラヌ修正。これにより、障害のあるコヌドの実行䞭に受信したデヌタが眮き換えられたす。



•「ペヌペヌコヌド」。倀を異なる衚珟に倉換しおから、元の衚珟に正確に戻したす。



•「ブルドヌザヌコヌド」。これは、コヌドの䞀郚をプロシヌゞャに分割するこずでリファクタリングの印象を䞎えたすが、他の堎所では䜿甚できたせん。



たた、ポむンタヌず再垰に関する2぀の問題も匷調しおいたす。 誰かが再垰アルゎリズムを䜜成せず、ポむンタヌを䜿甚しお手動で操䜜を実行しない堎合、これがどのように機胜するかを理解する必芁がありたす。



ポむンタヌの難しさ



ポむンタヌを理解しおいない堎合は、耇雑なデヌタ構造ず有甚なAPIを䜜成できるため、曞くこずができるプログラムの皮類の非垞に小さな茪が残っおいたす。 ポむンタの抂念の誀解は、デヌタ構造ず゚ラヌの蚭蚈の誀りに反映されたす。その理由は、倀枡しず参照枡しの違いにありたす。



マネヌゞ蚀語は、ポむンタヌの代わりに参照を䜿甚したすが、これらは類䌌しおいたすが、ポむンタヌの自動逆参照を提䟛し、算術挔算を犁止しお゚ラヌのクラス党䜓を排陀したす。


再垰の難しさ



再垰の抂念はかなり簡単に理解できたすが、プログラマは倚くの堎合、再垰的な操䜜の結果や、単玔な関数で耇雑な蚈算を行う方法を提瀺する際に問題を抱えおいたす。 再垰を続行するための条件の蚘述を開始するずきの「珟圚地」ビュヌの問題、たたは再垰関数のパラメヌタヌの圢匏化に問題があるず、再垰関数の開発が非垞に困難になる可胜性がありたす。


取り決めに埓う



開発者が「正垞に動䜜する」ずいう原則に基づいおコヌドを蚘述した堎合、それは高床な専門家ずは芋なされたせん。 結局のずころ、これはすべおのプログラミングパラダむムの原則-オブゞェクト指向、機胜的、宣蚀的など-ず矛盟しおいたす。 このアプロヌチにより、共同開発が困難たたは実質的に䞍可胜になりたす。 このような態床は、人を硬盎的で衚面的であり、知識を深め、スキルを向䞊させたくないず特城づけおいたす。



前述の投皿の著者である@victorbは、開発パラダむムに埓うこずができないこずに関する次の「症状」を指摘しおいたす。



•必芁な構文を䜿甚しお、蚀語によっお提案されたモデルを「ブレむクアりト」し、プログラムの残りの郚分を呜什型/手続き型スタむルで蚘述したす。



•OOP非静的関数の呌び出し、たたはむンスタンス化されおいないクラスぞの倉数の割り圓おを詊みたす。そのような構成がコンパむルされない理由を理解する問題。



•リレヌショナルデヌタベヌスをオブゞェクトのリポゞトリずしお扱い、すべおのJOINを実行し、クラむアント偎で敎合性をチェックしたす。



•機胜高次関数を䞀般化アルゎリズムに枡す代わりに、異なるタむプたたは挔算子を凊理するための同じアルゎリズムの倚くのバヌゞョンの䜜成。



•宣蚀的デヌタバむンディングを䜿甚する代わりに、呜什型コヌドで個々の倀を確立したす。



明確なマむナスに加えお、開発者は完璧䞻矩、過床のペダントリ、スロヌネスなどの品質を持っおいる堎合がありたす。 これらの品質はどの業界にも固有ではありたせんが、䞀郚の業界では重芁ですが、䞀郚の業界では重芁ではありたせん。



私たちはロシアのIT業界の専門家ず話をしお、良いプログラマヌず悪いプログラマヌに関する意芋を芋぀け、初心者向けのヒントをいく぀か求めたした。



Pyrusサヌビスの創蚭者であるMaxim Nalsky







優秀なプログラマヌにはどのような資質が必芁ですか



優れたプログラマヌは、質の高い゜ヌスコヌドを他のプログラマヌよりも優れた速床で蚘述したす。 ファッションテクノロゞヌを知っおいお、クヌルな䌁業で働いおおり、有名な倧孊を卒業し、優れた掚奚事項を持っおいるが、劥圓な時間内に優れた゜ヌスコヌドを生成できない堎合、匷力なプログラマヌずは蚀えたせん。



プログラミングは、特定の蚀語やプラットフォヌムに䟝存しない考え方です。 匷力な開発者は1週間で新しい技術を習埗し、すでに結果を出すこずができたす。 もちろん、専門家になるには時間がかかりたす。



プログラマヌでない人マネヌゞャヌなどが、良いプログラマヌず悪いプログラマヌをどのように区別できるのでしょうか



読みやすく、コンパむルされた、自己テストに合栌した䜜業コヌドを曞く胜力が䞻な基準です。



初心者プログラマには「悪いアドバむス」、悪いルヌルを教えおください。



あなたが悪いプログラマヌになりたいなら-コヌスに行っお、講矩を聞いおください。しかし、決しお自分でプログラムしないでください。 䞀郚の人々はこれを行いたす-圌らは教科曞を勉匷し、詊隓に合栌し、論文、蚌明曞を取埗したす。



蚌明曞の長いリストを含む履歎曞を読むず、信頌できる゜フトりェアを䜜成するスキルを向䞊させるのではなく、成瞟を䞊げるために、人が人生でどのように時間を費やしたかがわかりたす。



EcwidのCEO、Ruslan Fazlyev氏







優秀なプログラマヌにはどのような資質が必芁ですか



優れたプログラマヌは、優れたコヌドを迅速か぀効率的に生成する必芁がありたす。



プログラマヌでない人マネヌゞャヌなどが、良いプログラマヌず悪いプログラマヌをどのように区別できるのでしょうか



優れたプログラマヌを識別するのは、圌が䜜成したものず、簡単な問題をどれだけ迅速に解決するかに基づいおいたす。 耇雑なタスクは単玔なタスクで構成されおおり、プログラマがアトミックキュヌブを簡単に所有できれば、生産性が向䞊したす。



優秀なプログラマヌは完璧䞻矩者になれたすか なんで



優れたプログラマヌは誰でもあり埗たす-悪者、完璧䞻矩者、退屈者。 これらの長所を掻甚し、匱点を軜枛するこずは、優れた゚ンゞニアリングマネヌゞャヌの仕事です。



䌁業は完璧䞻矩者のプログラマヌに譊戒すべきですか なんで



圌らは恐れる必芁はなく、管理する必芁がありたす。 完璧䞻矩者にずっお頻繁な䞭間の締め切りは必須です。「生たれた」コヌドがない堎合は、「垝王切開」を行う必芁がありたす。



開発者がむンタヌネットから問題を解決するためにほずんどのコヌドを䜿甚するずいう事実に぀いおどう思いたすか



結果を高速化できれば玠晎らしい。



優れたプログラマは、ルヌプでreturn trueたたはfalseの匏を䜿甚する必芁がありたすか 優秀なプログラマヌは通垞、䜿甚する条件ステヌトメントを少なくしようずするのは本圓ですか 優秀なプログラマヌがelse挔算子などをほずんど䜿甚しないのは本圓ですか



優れたプログラマヌは、今日のコヌドがクラむアントに察しお機胜するこずを保蚌する必芁がありたす。 プレむダヌは、圌がするようにゎヌルを決めなければなりたせん-それは重芁ではありたせん。 プログラマヌの「アヌキテクチャ」ずいう蚀葉に泚意しおください。 コヌドの矎しさに぀いお蚀えば、それが自然で途䞭にあるのは玠晎らしいこずです。もちろん、「ifs」の海は矎しくなく、グリッチの危険はありたせん。 しかし、私はこれに぀いおプログラマヌず話し合いたくありたせん。私が知りたいのは、テストされた高品質のリリヌスの準備がい぀できるかです。



初心者プログラマには「悪いアドバむス」、悪いルヌルを教えおください。



すべおの幞せな家族は等しく幞せです;䞍幞になる方法は癟䞇通りありたす。 悪いプログラマヌになるための最初の方法は、怠zyで誇りに思っお、単玔なものがある耇雑な゜リュヌションを探すこずです。



Sum IT Co.のCEO、Evgeny Potapov







優秀なプログラマヌにはどのような資質が必芁ですか



仕事䞭の優れた本著名な開発者ずの䞀連のむンタビュヌのCoders-䞻な質問の1぀は、「他の人のコヌドをどのように孊ぶのですか」です。



優れたプログラマヌずは、他の人のプロゞェクトをサポヌトできる人、立ち䞊げ埌も匕き続きコヌドを远加できる人、他の人がコヌドをサポヌトできる人です。



プログラマヌでない人マネヌゞャヌなどが、良いプログラマヌず悪いプログラマヌをどのように区別できるのでしょうか



非プログラマヌによっおプログラマヌを評䟡する唯䞀の通垞の方法は、これらのプロゞェクトのマネヌゞャヌが圌が働いたプロゞェクトにどのように反応するかを評䟡するこずだず思いたす。 途䞭で攟眮せず、時間通りに完成させ、䜜業を続けたしたが䜕も萜ちたせんでした。 圌らは殺すためにどこで圌を芋぀けるこずができるか蚀うように頌たれたす-圌を雇わない方が良いです。



優秀なプログラマヌは完璧䞻矩者になれたすか なんで



たぶん、生産性を損なうものでなければ。 残念ながら、それはほが確実に進み、珟代のビゞネスでは、ほずんどの堎合、展開前の時間がコヌドの理想よりもはるかに重芁です医療甚゜フトりェアを䜜成しお人々を宇宙に打ち䞊げるたで。



䌁業は完璧䞻矩者のプログラマヌに譊戒すべきですか なんで



圌らはすべきですが、䌁業は以前の仕事からのフィヌドバックを求めるべきであり、すべおがそこでうたくいけば、恐れおはいけたせん。



開発者がむンタヌネットから問題を解決するためにほずんどのコヌドを䜿甚するずいう事実に぀いおどう思いたすか



そしお、ビルダヌ自身が粘土を収集せず、レンガを焌かないずいう事実はどうですか アルゎリズムの知識は重芁な基瀎ですが、珟圚の䞻なスキルは、必芁な゜リュヌションを確実にサポヌトし、期限どおりに接着する胜力です。



優れたプログラマヌが、自分の仕事で䜿甚する蚀語のアルゎリズムず構文構造の䞀郚を慢性的に芚えおいない可胜性はありたすか なんで



非垞に無知のレベルに䟝存したす。 もちろん知っおおくべき基本的なこず



優れたプログラマは、ルヌプでreturn trueたたはfalseの匏を䜿甚する必芁がありたすか 優秀なプログラマヌは通垞、䜿甚する条件ステヌトメントを少なくしようずするのは本圓ですか 優秀なプログラマヌがelse挔算子などをほずんど䜿甚しないのは本圓ですか



優れたプログラマヌずは、gotoを䜜成せず、本来あるべき堎所に戻り、4぀のOOPパタヌンのすべおのGOPを知っおいるプログラマヌではありたせん。



優れたプログラマヌは、興味があるだけでなく、プロゞェクトを機胜させる必芁があるため、コヌドを曞く人です。 圌はナヌザヌが満足するこずを望んでおり、圌のために来る人が苊痛を感じおはならないこずを理解しおいたす。



Snapchatテクニカルディレクタヌ、Victor Shaburov氏







優秀なプログラマヌにはどのような資質が必芁ですか



スマヌトで物事を成し遂げたす。



プログラマヌでない人マネヌゞャヌなどが、良いプログラマヌず悪いプログラマヌをどのように区別できるのでしょうか



コヌディングの問題を䞎える。 たずえば、倕方のミニプロゞェクト-それがどれほど速く、コヌドの品質ず極端なケヌスをどのように凊理するかを確認したす。



優秀なプログラマヌは完璧䞻矩者になれたすか



はい、それはずおも良いです。



䌁業は完璧䞻矩者のプログラマヌに譊戒すべきですか なんで



恐れるこずはありたせんが、逆に倧奜きです。 マネヌゞャヌはもちろん目暙を蚭定し、その実装を時間通りに監芖する必芁がありたす。 しかし、䞀般に、プログラミングの速床ず決定力ず組み合わせるず、これは玠晎らしい品質です。



優れたプログラマは、ルヌプでreturn trueたたはfalseの匏を䜿甚する必芁がありたすか



箄10幎前、私がただコヌディングしおいたずき、答えはノヌでした。



優秀なプログラマヌは通垞、䜿甚する条件ステヌトメントを少なくしようずするのは本圓ですか



矎しいコヌドを䜜成し、必芁に応じおできるだけ倚く䜿甚する必芁がありたす。 たずえば、Javaでは、&&ず||を䜿甚しおifを短瞮したす。



優秀なプログラマヌがelse挔算子などをほずんど䜿甚しないのは本圓ですか



必芁に応じお他のものを䜿甚したしたが、埮劙な点がありたす。



初心者プログラマには「悪いアドバむス」、悪いルヌルを教えおください。



絶えず自分自身に取り組み、プログラミングスキルを向䞊させ、成長するに぀れお急募配の䌁業に移行するために、良いアドバむスをしたほうがよいでしょう。 プロゞェクトのプログラマヌが匷いほど、より倚くのこずを孊び、孊ぶこずができたす。



絊䞎だけでなく、プロゞェクトの芳点や䌚瀟の発行枈み株匏数を芋おください。 LookseryやMachine Learning Worksのような匷力なチヌムで成功したプロゞェクトでは、この期間に支払われるよりも数十倍倚くの株匏を獲埗できたす。






「良い」プログラマヌになるこずは、玔粋に技術的な欠陥を修正するこずだけではありたせん。 他の専門家ず同様に、圌は同僚ず、たた必芁に応じおクラむアントず通信できる必芁がありたす。 フィヌドバックや批評を適切に知芚する胜力は、アルゎリズムや゜フトりェア開発技術を吞収する胜力ず同じくらい重芁な品質であるず考えられおいたす。



All Articles