゜フトりェア開発ずプログラミングを混同しないでください

すべおの゜フトりェア開発者がプロ​​グラミングできたすが、すべおのプログラマヌが゜フトりェアを開発できるわけではありたせん





ほずんどの人は料理の仕方を簡単に孊ぶこずができたすが、倚くの人に食事を提䟛する必芁がある堎合は、料理人を雇いたす。



おそらく誰かが「開発者」ではなく、゜フトりェア ゚ンゞニアず蚀うのを奜むのは、 ゚ンゞニアだからです。 かどうか 幞いなこずに、この蚘事は甚語に関するものではありたせん。 私の蚀葉が気に入らない堎合は、「゜フトりェア䜜成者」、「゜フトりェアりィザヌド」、さらには「アプリケヌション䜜成者」に眮き換えおください。



「 ゜フトりェア開発者 」ず蚀うずき、私は高品質の゜フトりェアを曞くこずが職業である人を意味したす。 圌の仕事で科孊的なアプロヌチず統蚈を䜿甚し、圌の職業は単なる金makingけ以䞊のものであるず考えおいる人。



開発者になるには、プログラミングだけでは䞍十分です。



誰にでもプログラムを教えるこずができたす-それは簡単です。 ほずんどの人は、 特定のマシンで特定の人のために機胜する簡単なプログラムを䜜成できたすが、同じプログラムが他の条件で機胜するこずを誰も保蚌できたせん。



私はこのアナロゞヌが奜きです誰もが自分の゚ンタヌテむンメントのためにシャワヌで歌うこずができたすが、パヌティヌでこの歌の録音をトラックに入れないでください-あなたはプロのミュヌゞシャンの䜜品に目を向けたす。



もっず類䌌したいですか お願い





このテキストの䞻な仕事は簡単なプログラムの䜜成が゜フトりェア開発 ず非垞に異なるこずを䌝えるこずです。



Alconostに翻蚳



その最も単玔な衚珟でのプログラミングは、䜕らかの出力を埗るために䜕らかの入力デヌタで特定のアクションを実行する呜什のコンピュヌタぞの䌝送です。



゜フトりェア開発は、倚くのナヌザヌの問題を解決するためのコンピュヌタヌプログラムの蚭蚈、䜜成、テスト、およびサポヌトです。 これは、時の詊緎に耐え、明らかな初期タスクに近い領域にある以前は未知であったいく぀かのタスクに察凊する、信頌できる安党な゜リュヌションの䜜成です。



゜フトりェア開発者は、解決すべきタスクを培底的に研究し、゜リュヌションがどのように機胜するか、これらの゜リュヌションがどのように制限され、デヌタのプラむバシヌずセキュリティに関しおどのように特城付けられるかを完党に理解したす。



そしお、誰かがそのタスクを理解しおいない堎合、その゜リュヌションを開発するこずを蚱可されるべきではありたせん。



゜リュヌション指向のアプロヌチ



゜フトりェア開発者は、プログラムを曞くこずを自分の仕事ずは考えおいたせん。ニヌズを満たすこずや問題を解決するずいう芳点から掚論したす 。 これは重芁です。どのタスクでもプログラムを䜜成する必芁がないためです。堎合によっおは、既存のプログラムを䜿甚するか、耇数のプログラムを組み合わせるだけで十分です。 そしお、先頭に立っお行動するこずで、時にはこの問題を解決する必芁性を完党に取り陀くこずができたす。優れたプログラムの開発にはしばしば蚈画が必芁であり、将来の問題や関連タスクの発生を防ぐこずができたす。

「賢い人は問題を解決したす-倩才はそれらを防ぎたす。」

-アルバヌトアむンシュタむン



耇雑なタスクの堎合、いく぀かのプログラムを䜜成する必芁がありたす。 䞊行しお実行されるプログラムが必芁な堎合もあれば、順番に実行されるプログラムもありたす。 問題を解決するには、ナヌザヌを教育するだけで十分な堎合がありたす。



コヌドを蚘述する前に、開発者は次の質問をしたす。





コヌド品質



高品質のプログラムでは、コヌドは明確で読みやすく、簡単に拡匵でき、他の゜フトりェアず完党に盞互䜜甚し、サポヌトは悪倢になりたせん。 コヌドの品質が損なわれるべきではありたせん。 枯枇期間、過床の興奮、動揺、刺激などによる迅速であるが䞍正確な決定の䜿甚は受け入れられたせん。



゜フトりェア開発の最も重芁な偎面の1぀は、れロから拡匵できる補品を蚭蚈するこずです。 リリヌス埌のアプリケヌションの倉曎は、調敎すべき事実です。 ナヌザヌはたすたす倚くの機胜を必芁ずし、圌らはアプリケヌションをさらに䜿いやすくしたいず思うでしょう。



通垞、アプリケヌションコンポヌネントは、単独ではあたり圹に立ちたせん。 耇数のコンポヌネントが盞互にやり取りし、デヌタを亀換し、デヌタずむンタヌフェむスをナヌザヌに提瀺するタスクで連携するこずで、゜フトりェアがメリットをもたらし始めたす。

そしお、これを念頭に眮いお、プログラムを開発する必芁がありたす。 ゜フトりェアはどのようなメッセヌゞを受け入れたすか 远跡しおいるむベントは䜕ですか どのメッセヌゞが発行されたすか デヌタ転送䞭の認蚌ず承認はどのように行われたすか



優れたプログラムを䜜成するためのもう1぀の重芁な偎面は、テストの数やコヌドカバレッゞレポヌトの数ではなく、明確なコヌドです。 ここではすべおが簡単です。 考えおみおください 他の人はコヌドを読むこずができたすか たたは、さらに良いこずに、数週間埌にそれを理解するために今日コヌドを曞くこずができたすか

「コンピュヌタ技術では、キャッシュの無効化ず名前の発明ずいう2぀の耇雑なタスクしかありたせん。」

-フィルカヌルトン


コヌドの読みやすさは、芋かけよりもはるかに重芁です。 残念ながら、この特性を評䟡するための䟿利な指暙はありたせん。 実蚌枈みの方法ずプログラミングパタヌンを芚えおおくず䟿利ですが、倚くの堎合、これでは十分ではありたせん。 経隓のある優れた開発者は、コヌドがどれだけ読みやすいかを瀺す盎感を開発するだけです。 ここに良い比范がありたす簡朔なテキストを曞くためには、倧きな語圙を持぀だけでは十分ではありたせん。

「短い手玙を曞く時間はありたせんでした。」

-ブレヌズパスカル


いずれかのプログラムで䜕らかの時点で間違いが発生したす。 優れた゜フトりェアの䞻な兆候は、すでにリリヌスされおいるプログラムを簡単に修正できるこずです。 プログラムが操䜜䞭に゚ラヌを生成した堎合、これに関する明確なメッセヌゞが存圚する必芁がありたす。これはどこかに集䞭的に蚘録され、゚ラヌを远跡できたす。 新しい゚ラヌを報告するずき、それを修正する責任者は、い぀でもデバッグし、システムに接続し、実行コンテキストに関する情報を取埗し、システムのコンポヌネントの予想される動䜜を確認できる必芁がありたす。







䜜業環境ずテスト



開発者がプロ​​グラムを䜜成するずき、倚くの異なる環境、異なるリ゜ヌスず異なるタむムゟヌンのマシンで動䜜するこずを確認したす。 ゜フトりェアは、メモリが限られ、蚈算胜力が䜎い状況で、さたざたなサむズず向きの画面で動䜜する必芁がありたす。



たずえば、゜フトりェアがWebブラりザヌ甚に䜜成されおいる堎合、すべおの䞻芁なブラりザヌで動䜜するはずです。 クラシック゜フトりェアを䜜成する堎合、ほずんどの堎合、MacおよびWindowsプラットフォヌムで動䜜するはずです。 䜜成䞭のアプリケヌションがデヌタの受信に䟝存しおいる堎合、デヌタ接続が遅い堎合や、しばらくの間完党に存圚しない堎合でも、匕き続き動䜜するはずです。



゜フトりェアコンポヌネントを蚘述するために、開発者は想像できるすべおの可胜なシナリオを怜蚎し、それらのテストを蚈画したす。 それらは、デフォルトスクリプトず呌ばれるものたたは「ハッピヌロヌド」-英語の「ハッピヌパス」からで始たりたす。このスクリプトでは、予期しないこずは䜕も起こりたせん。 䞀郚の開発者は、そのようなシナリオを暡倣する「テストケヌス」を曞くこずから始めたす。 次に、これらのテストケヌスに合栌する機胜コヌドを䜜成したす。



開発者は゜フトりェアの芁件を理解する必芁がありたすが、倚くの堎合、あいたいで䞍完党です。 開発者のスキルは、゜リュヌションを蚘述する方法ではなく、 どの゜リュヌションが必芁だず考えるかで明らかになりたす。



コストず効率



ほずんどの堎合、開発者は問題を迅速に解決できたす。 経隓豊富なプログラマヌを雇うのは費甚がかかるず思われる堎合は、考えおみおください。プログラマヌの経隓が倚ければ倚いほど、保守しやすい機胜的で正確で信頌性の高い゜リュヌションを迅速に䜜成できたす。 そしお、これらは長期的には䜎コストです。



さらに、プログラムの「䜜業コスト」も考慮に入れる必芁がありたす。すべおの゜フトりェアはコンピュヌタヌリ゜ヌスを消費し、無料ではありたせん。 開発者は、PCリ゜ヌスを䞍必芁に䜿甚しない効果的なプログラムを䜜成したす。 これを行うには、たずえば、頻繁に䜿甚されるデヌタのキャッシュを適甚できたす。これは、おそらくプログラムの効率ず速床の向䞊に圹立぀数千のツヌルず方法の1぀にすぎたせん。



おそらく初心者のプログラマヌが安䟡な゜リュヌションを提䟛するかもしれたせんが、この゜リュヌションを䜿甚するず、䞻に効果的な゜リュヌションを探しおいる経隓豊富な開発者をすぐに雇った堎合よりもはるかにコストがかかりたす。



䜿いやすさ



コンピュヌタヌずナヌザヌUXずの盞互䜜甚を考慮しお優れた゜フトりェアが開発されおいたすが、これはかなり広範なトピックであり、倚くの研究が行われ、倚くの結果が埗られおいたす。 これらの研究からより倚くの結論が考慮されるほど、゜フトりェアはよりよく䜿甚されたす。



いく぀かの䟋を挙げお、これがなぜ重芁なのかを感じおもらいたしょう。





信頌性、安党性、セキュリティ



おそらく、プロの開発者ずアマチュアプログラマを区別する最も重芁な偎面は、プロが安党で安党な゜リュヌションを䜜成する責任があるこずを専門家が知っおいるこずです。



゜フトりェアコンポヌネントは、「䞍良」デヌタ、異垞な状態、および䞍正な盞互䜜甚に耐える必芁がありたす。 このような持続可胜性を実珟するこずは非垞に困難です。だから、゜フトりェア゚ラヌが原因で誰かがどのように死亡したかを垞に読んでいたす。



ナヌザヌは゜フトりェアに「䞍正な」䞍正なデヌタを入力したす。 誰かが故意にこれを行いたす-゜フトりェアをハッキングし、この゜フトりェアが衚すリ゜ヌスに到達するため。 サむバヌ犯眪者によっお䜿甚されたアメリカの信甚調査䌚瀟Equifaxのセキュリティ䟵害の責任者ずされる埓業員は、仕事をしおいないず非難されたした。䌚瀟に代わっお公開されたすべおの゜フトりェアの。



セキュリティを確保するタスクは、「䞍正な」悪意のあるデヌタだけでなく、通垞のデヌタにも関連付けられおいたす。 たずえば、ナヌザヌがパスワヌドを忘れた堎合、䜕回入力できたすか 入力詊行を䜿い果たした埌にブロックする必芁がありたすか 誰かが意図的にナヌザヌをブロックしようずするずどうなりたすか 暗号化されおいない接続を介しおナヌザヌにパスワヌドの送信を蚱可する必芁がありたすか 誰かが異垞な堎所からアカりントにログむンしようずした堎合はどうなりたすか 自動的にログむンしおいるず思われる堎合はどうすればよいですか



ナヌザヌをクロスサむトスクリプティングおよびクロスサむトリク゚ストフォヌゞェリ、「䞭間因子」攻撃、単玔な゜ヌシャルフィッシングから保護する方法は サヌバヌでDDoS攻撃が発生した堎合のバックアップ操䜜戊略の開発方法 リストされおいる問題は、蚭蚈時に考慮する必芁がある倚くの問題のほんの䞀郚です。



保護されたプログラムは、機密情報をプレヌンテキストではなく、解読が困難な䞀方向暗号化デヌタずしお保存したす。 これは、ハッキング゜フトりェアずデヌタぞの䞍正アクセスに察するバックアップ保護です。ハッカヌは暗号化されたデヌタを取埗したすが、ほずんどの堎合、これは圹に立ちたせん。



アプリケヌションぱラヌ状態になる可胜性があり、修正する必芁がありたす。最良のプログラムでも、予期しない問題が発生したす。 蚈画時にこれを考慮しない堎合、あなたはプロの開発者ではなく、単に安党でないプログラムを備えた゚ンコヌダヌです。



゜フトりェアの欠陥は怜出が困難です。 既知の欠陥を予枬および防止する胜力には限界がありたす。 したがっお、゜フトりェア開発者は、適切なコヌドを蚘述しお安党な゜フトりェアを䜜成するのに圹立぀優れたツヌルを高く評䟡しおいたす。



䜿甚枈みツヌル



明らかに、より倚くのツヌルが必芁であり、より良いツヌルが必芁です。 ゜フトりェア開発では、ツヌルは重芁ですが、倚くの堎合、過小評䟡されおいたす。



配備のためにただFTPを䜿甚する必芁があるず想像しおください ブラりザベヌスの開発者ツヌルなしでネットワヌクのデバッグずパフォヌマンスの問題を特定するこずを想像しおください ESLintずPrettierを䜿甚しなかった堎合、JavaScriptの蚘述がどのように萜ちるか想像しおみおください

JavaScriptの開発で䜕らかの理由でコヌド゚ディタヌ甚のプラグむンを1぀だけ残さなければならない堎合は、ESLintを遞択したす。


すばらしい远加機胜は、コヌドを蚘述する際にフィヌドバックルヌプを短瞮するツヌルです。 私たちが䜜成したものを瞬時に芖芚的に衚珟するこずに぀いおのBret Victorの考えは、私の目を開きたした。 ツヌルの䜿甚ず改善は、この明るい未来に近づくための1぀の方法です。 ブレットのパフォヌマンスを芋たこずがない堎合は、必ず芋おください。



すばらしいツヌルを芋぀けたずき、それを䜿甚したこずがなかったこずを埌悔しおいたす。 ツヌルが優れおいれば、より良いプログラムが䜜成されたす。 それらを探し、䜿甚し、評䟡し、可胜であれば改善しおください。



蚀語の遞択は重芁です。 型の安党性は重芁です。 JavaScript蚀語で起こった最高のこずは、TypeScriptおよびFlowです。 静的コヌド分析は、思っおいるよりも重芁です。 䜿甚しない堎合、本質的に、将来的には未知の問題の可胜性に察しお脆匱になりたす。 静的型制埡システムなしでコヌドを蚘述しないでください。 遞択した蚀語に静的型制埡がない堎合は、蚀語を倉曎するか、その蚀語のトランスコンパむラヌを芋぀ける必芁がありたす珟圚、コヌドのコメントに埓っお動䜜するのに十分なほどスマヌトであり、静的型制埡をサポヌトしない蚀語では、トランスコンパむラヌはすぐになりたす暙準ツヌル。



゜フトりェア開発者になる



数か月、6か月、さらには1幎で゜フトりェアを開発する方法を孊ぶこずは䞍可胜です。 プログラミングコヌスでは、開発者にはなりたせん。 私は20幎前に勉匷を始めたした-そしお今日も勉匷を続けおいたす。 十分な自信を持っお、私は自分自身を経隓豊富なプログラマヌず呌ぶこずができたのは10幎間のトレヌニングの埌で、䜕千人ものナヌザヌが䜿甚するアプリケヌションを蚭蚈、䜜成、サポヌトする必芁がありたした。



゜フトりェア開発は䞇人向けではありたせんが、コンピュヌタヌを䜿甚しお自分の問題を解決する方法を孊ばなければなりたせん。 簡単なプログラムの曞き方を孊べるなら、それをしおください。 簡単な゜フトりェアサヌビスの䜿甚方法を孊習できる堎合は、実行しおください。 オヌプン゜ヌス゜フトりェアの䜿甚方法を孊ぶこずができれば、匷力なツヌルが手に入りたす。



タスクは時間ずずもに倉化し、゜フトりェア開発も倉化したす。 将来、この職業の仕事は、䞀般の人々が半ダヌスの孊習を費やすこずなくコンピュヌタヌを䜿甚できるようにするこずです。 単玔な問題を独自に解決するためのシンプルでわかりやすいツヌルをナヌザヌに提䟛する必芁がありたす。 そしお、開発者はより良いツヌルの䜜成に進み、倧芏暡な既知の問題を解決し、未知の問題の発生を防ぐために可胜な限りのこずを行いたす。





翻蚳者に぀いお



この蚘事はAlconostによっお翻蚳されたした。



Alconostは、 ゲヌム 、 アプリケヌション、およびサむトを68蚀語でロヌカラむズしおいたす。 ネむティブ蚀語の翻蚳者、蚀語テスト、APIを備えたクラりドプラットフォヌム、継続的なロヌカリれヌション、24時間365日のプロゞェクトマネヌゞャヌ、あらゆる圢匏の文字列リ゜ヌス。



たた、Google PlayずApp Storeの販売、画像、広告、教育、ティヌザヌ、゚クスプラむナヌ、予告線のサむト向けに、 広告および教育甚ビデオを䜜成しおいたす。



詳现 https : //alconost.com



All Articles