English Русский 中文 Español Deutsch Português 한국어 Français Italiano Türkçe
より優れたプログラマー(第05部): より速い開発者になる方法

より優れたプログラマー(第05部): より速い開発者になる方法

MetaTrader 5 | 16 11月 2021, 13:54
780 0
Omega J Msigwa
Omega J Msigwa


はじめに

開発者として、私たちは常にプログラムをより高速に構築し、より高品質で提供できるようにしたいと考えています。この能力は、コーディングの経験、計算能力、ワークスペースのツール、キーボードのタイピングスピードに関係なく、すべての開発者が習得できます。

この記事は前の部分を拡張するものです。まだお読みでない場合は、まずお読みになってください。

         より速くコーディングする方法


内容:

  1. 作業を計画する
  2. 車輪は再発明しない
  3. 必要なことだけを行う
  4. より大きなことに挑戦する
  5. 健康に暮らす
  6. 今でしょ
  7. 過労にならない
  8. 品質は一定でない
  9. 常に締め切りを設ける
  10. 自分のピーク時間を知る
  11. 鍵は思案
  12. 客観的に測定する
  13. 仕事以外で探求する
  14. より高速なテスト


01: 作業を計画する

「計画を立てないことは失敗する計画を立てることである」 — ベンジャミン・フランクリン

開発者として、私たちにはキーボードに向かって急いでコードをより高速で書き始めればプロジェクトをより早く完了することができると考える傾向がありますが、この考えは非常に間違っています。遅さの大きな理由の1つはコードを入力する速度ではなく、ほとんどの場合、プロジェクトに対する計画がないか不十分であることです。


作業の計画がとても重要な理由

  1. 集中力を得る - 集中しなければ、単純なプロジェクトでも完了するのに非常に長い時間がかかります。プロジェクトに集中すればするほど、プロジェクトをより早く完了することができます。
  2. 明快さを与える - 自分が何をするべきかそしてどれほど緊急であるかについてのより良い理解を得られます。
  3. あいまいな思考を最小限に抑える - 私達はほとんどの場合、予測するのが世界で最も難しいものの1つである外国為替市場のプログラムを作成しているため、最初に使用しようとしたアイデアが失敗すると、常にさまざまなアイデアに悩まされるようになります。プロジェクトをより早く終わらせたいのであれば、早期に計画したことに固執することは本質的に良いことです。

旅を始める前には、行き先を知る必要があります。他に何かを見逃していないことを確認するために、プロジェクトに準備のための十分な時間を与えてください。必要なものが明確になって初めて、キーボードでコードを入力し始めます。


02: 車輪は再発明しない

大規模なプロジェクトを一から始めようとするのは困難でもどかしいことがあります。始めるための最良の方法の1つは、コードベースやマーケットなどの場所で他の人の過去の作品を使用することを検討することです。

あなたがやろうとしているのと同じプロジェクトはおそらく他の誰かがすでに行っています。それらを出発点として使用すれば、始まりが非常に迅速になり、一から始めた場合よりも一歩先を行くのに役立つかもしれません。

注: これまでのすべての作品が適切に使用できるわけではありません。適切なプロジェクトを選択する必要があります。

適切なプロジェクトを選択して使用するための考慮事項

使用するのに適切な作品を選択すれば物事を迅速に機能させるのに役立ちますが、間違った作品を選択すれば悲惨になる可能性があります。以下に考慮すべき事項の一部を示します。

  • バグが少ないかまったくないことを確認します。初めからバグのあるプロジェクトを始めたくはありません(チェック/デバッグ)。
  • 選択した作品のほとんどすべてを理解する必要があるため、明確で十分に説明されたドキュメントが必要です。初心者のときにMQL5の基本情報を読んだように、読むことができる優れたドキュメントが必要です。
  • コードが最新である - MQL5言語は何度も更新されます。昨年コンパイルされて機能していたメソッドと実装の一部は、おそらく今年は同じように機能しないでしょう。これは、言語の更新が原因です。したがって、プロジェクトで使用されているコードが最新であることを常に確認してください。これを確認する最善の方法は、MetaEditorでコードをコンパイルして、エラーなしで実行されるかどうかを確認することです。

たとえば、移動平均の計算やその他の計算に基づいて線を引くインジケーターを作成するとします。コードベースから移動平均インジケーターをダウンロードし、それを変更するか、バッファーを追加して、希望どおりの形にすることができます。

コードベースには、実行する可能性のあるほとんどすべての基本的なタスク用のほぼコードがすべてのあります。ご自分にぴったりのものを選んでください。


03: 必要なことだけを行う

開発者として、私たちはプロジェクトで何をすべきかを忘れがちです。私たちには、プロジェクトから主に達成したいことに直接影響しないコーディングを優先する傾向があります。

例は、エキスパートアドバイザーの派手なチャートアニメーション、チャートオブジェクト、ボタンです。

ご覧のとおり、上にあげたすべてのアイテムは取引活動に直接的な影響を与えることはなく、ほとんどの場合、EAにそれらがない方が良いでしょう。

オブジェクトはObjectCreate()組み込みメソッドで作成されるため、すべてがチャート上に適切に表示されるように配置することは言うまでもなく、オブジェクトのコーディングに時間がかかる場合があります。このプロセスは私たちの多くの時間を必要とします

トレードアシスタントを作成する場合を除いて、エキスパートアドバイザーでのチャートオブジェクトや派手なアニメーションは正直お勧めしません(より速く開発したい場合)。

たとえば、フリーランスの顧客に、トレーリングストップなどの他の機能を使用してボリンジャーバンドエキスパートアドバイザーをコーディングするよう依頼されたとします。正確にそれだけを行います

すべてのエネルギーを使って重要性の低いものをコーディングしているうちに締め切りになり、プログラムがゴミだらけで時間を無駄にしていたことに気付くのは賢明ではありません。

最初に頭が興奮して創造的なときに重要性の低いものを始めてから疲れたときに重要なものを始めること、また、最後に始めるか、締め切りが過ぎたかもうすぐであるためにプロジェクトを急いで終了することは賢明ではありません。

「重要なこととそうでないことを分けることを学びなさい。多くの人がうまくいかないのは、重要でないことを重要にするからです」— ジム・ローン

常に、自分が望むものに直接影響を与える主要で時には複雑なタスクから始めてください。その後、まだ締め切りでなければすべての重要度の低い、クールなことを始めればいいのです。


04: より大きなことに挑戦する

私の最初の記事で述べたように、より速い開発者は自分がしていることに対して柔軟で快適です。この点で重要なのは、より速くなることができるためには、開発者として快適になる必要があるということです。

では、どうすれば快適になれるのでしょうか。

おそらくビデオゲームをプレイしたことがおありかと思います。その特定のゲームで最も難しいレベルをプレイして成功するか最も難しいプレーヤーを倒すかすると、中級レベルのプレイが簡単になり、平均的なプレーヤーを倒しやすくなります。

この原則は素晴らしく、ビデオゲームのプレイだけでなく、コーディングにも当てはまります。

自分が得意になりたい分野を選択して、これまでに行ったことのない複雑なプログラムを計画します。たとえば、EAを得意にするには、複数のストラテジー、複数のインジケーター、多数のチャートオブジェクト、複数の取引の変更など、複数の機能を計画します。その筋金入りのプロジェクトの計画を終えた直後に、厳しい締め切りを設定し、その前に完成するよう試みます。

これに成功すれば、将来直面する可能性のある多くのプロジェクトが簡単かつ快適になり、その結果、プロジェクトの開発速度が向上します。

「最も難しい挑戦に挑戦すれば、残りは簡単になります」- スティーブ・チャンドラー

ここでの目的は、自分自身を傷つけることではなく、自分のキャリアで経験する可能性のある困難な課題に対して自分自身を脆弱にすることです。


05: 健康に暮らす

このキャリアで生産的になりたいのであれば、健康は大事なことの1つです。

コーディングのキャリアには、コードの学習、記憶、創造性、集中力の維持など、多くの精神的な作業が必要です。

  • 学んだことを思い出さずに学ぶことは何もしないことと同じ
  • 集中しないでコーディングするのは時間の無駄
  • 創造性がなければ、イノベーションや差別化、機会はなく、複雑な問題を解決するのは困難

私は健康の専門家ではありません。このテーマについて深く掘り下げたい方は、このブログ投稿をお読みになるようお勧めします。

以下は、より速い開発につながる生産性を向上させるための私の健康上のヒントです。

コードから離れることの価値を知る

私たちが24時間年中無休でコーディングに固執していると、常には創造的で集中してはいないことに気付かないかもしれません。21世紀の平均的な人間にとって、集中は大きな問題だからです。

1990年代にさかのぼるいくつかの研究は、覚醒のサイクルの自然な変化のために、集中できるのは90分間以内で、15分の休憩が必要になることを示唆しています。

健康の専門家は、90分のコーディングセッションを行うことを勧めていますが、

私は、その時の生産性に応じて、ランダムセッション内でコーディングします。休憩せずに何時間もコーディングすることもありますが、集中力が足りず、心をリフレッシュするためにランダムな休憩が必要になる日もあります。集中力が続く時間は人によって違うと思いますので、自分に合った適切なコーディングセッションを計画して設定してください。

脳を最大限に機能させるのに十分な睡眠をとる

少なくとも1日7時間の睡眠が必要です。

食生活に気を使い、運動する

朝一番にランニングに行くのが一日中気分を良くする最良の方法です。まだの場合はお試しになって、生産性が1日中どのように向上するかを確認してください。

死人はコードを書かず、病人は悪いコードを書きます。ご自愛ください。


06今でしょ

次の大きなプロジェクトでアイデアがわいたらいつでも、それを延期しないでください。最初のポイントで述べたように、計画を立てることから始めてください。それよりも重要なことがない限り、すぐにやり始める必要があります。

今すぐやってください。「後で」は「やらない」を意味します。

すぐに開始すれば、締め切りに間に合うのに役立つだけでなく、重要ではない不要な遅延を回避し、その遅延時間枠の間にアイデアを再生し始める可能性があります。

「時間は止まりません。自分がやろうとしていることは何でも、今するべきです」ロバート・デ・ニーロ

開発に関しては、遅延は悪い結果をもたらします。最初にアイデアがわいたときに何をしようとしていたかを忘れがちです(特に書き留めなかった場合)。また、製品の使用と改善が遅れます。


07: 過労にならない

コーディングのキャリアは、学ぶ必要のあるさまざまな種類のものと無限のことでいっぱいです。正直なところ、数が多すぎて、それらすべてで例外的に優れることはありません。

プロジェクトのすべての分野が得意ではない場合でも、開発を迅速化するための鍵は、すべてを自分でやろうとしないことです。これには第3部の、人々がその特定のプロジェクトについての意見を共有できるようにあなたのプロジェクトをオープンソースにすることについてのポイント#05で触れました。

しかし、そのプロセス自体は露出を必要とし(一部の人々はそれを必要としないかもしれません)、特にそれに遭遇した人々があまり興味を持っていない場合、人々が貢献し始めるのに少し時間がかかるかもしれません。

非常に早く終了したい場合は、フリーランスで誰かを雇うのが最善の方法です。ここでのポイントは、パートナーとして働くために誰かを雇うことです(自分の専門分野以外で手を貸してもらうために)。

例:

私は個人的にインジケーターの分野が苦手です。インジケーターのファンではないので、バッファーやその他の種類のインジケーターに関することはほとんど理解していません(個人的な問題のため)が、エキスパートアドバイザー、スクリプト、その他多くが専門です。私のプロジェクトでインジケーターが必要だと感じた場合は、それを行うために誰かを雇り、残りは私が行います。

プロジェクトが大きい場合は、セクションに分割して、より多くの開発者を雇います。関与するフリーランス開発者が多ければ多いほど、それをより早く終わらせることができます。

この方法はかなり高価になりますが、それだけの価値があります。私はそれがおそらくすべての中で最速の方法だと信じています。これが、テクノロジー企業や革新的な企業がこの原則を理解しているため、プログラマーを1人も雇わない(場合によっては1000人以上)理由です。


08: 品質は一定でない

プロジェクトを急いで終了するのではなく、1日の終わりに必要なのは品質の高い製品であることを考慮する必要があります。

品質の低い製品は作業の終わりではありません。時間が経つにつれて常にいくつかの改善を行う必要があり、したがって作業に終わりがありません。

次のステップに進む前に、より良いコードとアイデアの実装、優れたアーキテクチャ、設計、バグのないコードなどを作成していることを確認してください。一度終わったら、後戻りすることはありません。

高品質の製品を作成するプロセスは遅いように見えるかもしれませんがそうではなく、ほとんどの開発者が気付いていないのは、貧弱なコードや悪いアーキテクチャが常に私たちにそれを改善したいと思わせることです。

高品質の製品は、それが聖杯であることを意味するのではなく、簡単に言うと次を意味します。

  • 計画どおりに完了
  • バグがない
  • 適切に設計され、構造化され、明確に説明されている
  • 使いやすく、他の人に簡単に渡すことができる

「ロバート・C.ボブおじさん」が言った

「速く行く唯一の方法はうまくいくことです。品質とスピードを交換したいという誘惑に負けるたびに、速度が低下します。毎回です。」という言葉に、私はまったく賛成します。


09: 常に締め切りを設ける

サッカーの試合に終わりがなかったら、プレーヤーはどうなるでしょうか。

そこには熱意も努力もなく、ゲームは面白くなく、それよりゲームはまったくなくなります

真剣に取り組むことができるためには、私たちが人生で行っているすべてのことは終わる必要があります。

作業の計画を立てたら、プロジェクトの準備を整える締め切りを設定します。この締め切りは、プロジェクトの最後に到達した後のコーディング速度の測定にも使用されます。

また、締め切りを設定することは、成熟した開発者であることの表れであり、その特定のプロジェクトを完了することにどれほど真剣に取り組んでいるかを示すものです。

フリーランスではどのような仕事にも締め切りがあります(厳密には強制されていません)。自分のプロジェクトでも同じことをしなければなりません。完璧である必要はありませんが、 改善する時間があります。

覚えておいてください。

プロジェクトに締め切りがなければ、終わりもありません。


10: ピーク時間を知る

ピーク時間は誰にでもあります。これは、 生産性と学習が高レベルにある瞬間で、特定の曜日または特定の時間帯かもしれません。これは、私たちの脳がさまざまな状態にあるためです。たとえば、私の最も生産的な時間は、目覚めた午前4時から午前7時または8時頃までです。これらは、私が新しいことを学び、難しいタスクを実行するために使用する時間です。

他の人にとっては、それは朝、午後、真夜中などかもしれません。生産的な時間を見つけて、それらを効果的に使用してプロジェクトを前進させます。

これらの最も生産的な時間に作業することは、仕事に行くなどの他のことをするのに忙しく、プログラミングプロジェクトに取り組む時間がほとんどない人にとっては素晴らしいことです。


11: 鍵は思案

コードを検査するためには時間をかける必要があります。これを行う目的は、間違いから確実に学ぶことです。そうすることで、次回、以前に発生して正常に解決されたのと同じエラーで立ち往生して時間を浪費することがなくなります。

アプリケーションの範囲内の死角を排除します。 時々直感を信頼しなければなりません。 何かを実装したときに理解できないと感じた場合は、それが本当かどうかまたは何かを実装したが、それが実装するのに最適な方法ではないと感じているかを調査する必要があります。


12: 客観的に測定する

数日間作業してから詳細な自己検査を行い、活動を分析し、自分の時間がどこに行くのかを自分に尋ることを検討してください。

時間のほとんどがコードを書くのではなくコードを読むことに費やされていることに気付いたとしましょう。その場合、コードをより速く読み取る方法を学ぶ必要があります。


13: 仕事以外で探求する

これをウォームアップと呼びたいと思います。スポーツ選手はキャリアでそれを行いますし、私たちも行うことができます。

プロジェクトに取り組んでいないときは、生産性を向上させるのに役立つ新しいライブラリ、インジケーター、スクリプト、ツール、技法を調べてください。

プロジェクトに何となく似ているか、似た側面がいくつかあるオープンソースプロジェクトに取り組むことができます。

これにより、実際のプロジェクトの準備が整います。うまく行けば、プロジェクトが以前よりも簡単になり、必然的に速度が上がることに気付くでしょう。


4: より高速なテスト

すべてが期待どおりに機能することを確認するためにいくつかの新しいコードブロックを記述した後に多くのテストを行うため、テストは得意である必要のある極めて重要な領域の1つです。

コードの記述と読み取りは別として、テストは、間違えがない限り、ほとんどの時間が無駄になる領域です。

プログラムのテストはPCのハードウェアリソースといくつかのソフトウェアセットアップに何らかの形で依存している可能性があります。

たとえば、(特定の設定で)CPUに5コアがある場合、7コアまたは9コアの人ほど速くテストすることは期待しないでください。メモリ、ストラテジーテスターの設定、エージェントの構成、テストするプログラムなどの他の要素は言うまでもありません。

これは、この記事のすべてをカバーする大きなトピックです。以下のすべてのソースから学ぶことをお勧めします。

以下に、より速くテストする方法に関するいくつかの簡単なヒントを示します。

表示チャートインジケーターと取引チェックボックスでビジュアルモードを選択解除する

注: このチェックボックスをオフにすると、テスト時にチャートに表示するために使用するすべての操作が非表示になります。プログラムがバックグラウンドでどのように機能しているかについてすでに確信している(知っている)場合は、これを実行してください。

始値のみモデリングオプションを選択する

注: この方法は、バーの開口部を明示的に制御するEA用です。何らかの理由で、この方法は、EAを抽出する複数銘柄および複数時間枠シグナルでは機能しません。始値モードのエラーでは、CopyRatesエラーと誤った時間枠リクエストが発生する可能性があります。

ピップ単位の利益によって計算を高速化チェックボックス選択する

: すべての取引の利益/損失は、金銭ではなく実際のピップになります。

まとめてみると。

より高速なMT5テスト

セットアップの手間をかけずに、PCのハードウェアリソースを気にすることなく、強力なマシンでストラテジーをテスト/最適化する最も速い方法は、 MQL5クラウドネットワークを使用することです。


終わりに

良い開発者になるための旅の中で、皆さんのご多幸をお祈りします。これでこの記事は終わりです。私や他の人と共有したいヒントがある場合は、この記事のディスカッションセクションに自由に追加してください。

ご精読ありがとうございました。


MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/9840

多層パーセプトロンとバックプロパゲーションアルゴリズム(第II部): Pythonでの実装とMQL5との統合 多層パーセプトロンとバックプロパゲーションアルゴリズム(第II部): Pythonでの実装とMQL5との統合
MQLとの統合を開発するために利用できるPythonパッケージが存在し、データの探索、作成、機械学習モデルの使用などのさまざまな機会がもたらされます。MQL5に組み込まれているPython統合により、単純な線形回帰から深層学習モデルまで、さまざまなソリューションを作成できます。開発環境を設定して準備する方法と、いくつかの機械学習ライブラリを使用する方法を見てみましょう。
DoEasyライブラリのグラフィックス(第85部): グラフィカルオブジェクトコレクション - 新規作成オブジェクトの追加 DoEasyライブラリのグラフィックス(第85部): グラフィカルオブジェクトコレクション - 新規作成オブジェクトの追加
本稿では、抽象グラフィカルオブジェクトクラスの子孫クラスの開発を完了し、これらのオブジェクトをコレクションクラスに格納する機能の実装を開始します。特に、新しく作成した標準のグラフィカルオブジェクトをコレクションクラスに追加する機能を作成します。
DoEasyライブラリのグラフィックス(第86部): グラフィカルオブジェクトコレクション - プロパティ変更の管理 DoEasyライブラリのグラフィックス(第86部): グラフィカルオブジェクトコレクション - プロパティ変更の管理
本稿では、ライブラリ内のグラフィカルオブジェクトのプロパティ値の変更の追跡とともに、削除と名前変更を検討します。
DoEasyライブラリのグラフィックス(第84部): 抽象標準グラフィカルオブジェクトの子孫クラス DoEasyライブラリのグラフィックス(第84部): 抽象標準グラフィカルオブジェクトの子孫クラス
本稿では、ターミナル抽象標準グラフィカルオブジェクトの子孫オブジェクトの作成について検討します。クラスオブジェクトでは、すべてのグラフィカルオブジェクトに共通のプロパティを記述します。つまり、それは単にある種のグラフィカルオブジェクトです。実際のグラフィカルオブジェクトとの関係を明確にするには、この特定のグラフィカルオブジェクトに固有のプロパティを子孫オブジェクトクラスに設定する必要があります。