正しい技術を選択することは、上級開発者になるための必須条件です。なぜなら、アプリケーションの現在の技術的な状態、開発上の方向性、現在のチームの知識、求人市場で一般的な知識、各技術のコスト、運用にもたらすリスク、技術の安全性と安定性、そして最後に、例えば5年後に現在のチームの80%が交代したときに、開発者が何に興味を持つかなどを考慮しなければならないからです。 PHPで開発している大企業6社を経験しました。長い目で見て他の技術に乗り換えようとしているのは2人だけで、他の人はそのままです。それはそれでいろいろと問題がありますね。例えば、現在O2社で開発している企業向けプロジェクトで、プラハのオフィ…
あなたは大規模なレガシーアプリケーションの開発者であり、そこにPHPStanを徐々に導入しています。レベル0からスタートするので、かなり難易度が高いですが、最終的にはうまくいきます。次のレベルに進むと、コードの一部が未使用の$lock変数を報告し始め、それを削除する必要があります。 コードは次のようになります。 public function processOrder(int $orderId): void { $lock = Lock::createLock('じゅんじょせい' . $orderId); // ここには論理がある... } 変数にロックがかかっていて、誰かが後で解除するのを忘…
2016年末、文字通り同僚に助けられた時の話:PHPアプリケーションで、プロキシスクリプトを介して画像をチェックインすることにした。プロキシスクリプトは、とりわけ、送られてくるリクエストに応じて寸法やその他のパラメータを調整することができる。最適化の一環として、生成されたバリアントをディスクに物理的に保存することもできます。 しかし、本番運用では、突然大きな負荷がかかり始め、何千ものリクエストがキューに並ぶことになります。画像は、ユーザーごとに1枚ずつ順次読み込まれます。ページの更新やリンクのクリックがうまくいかない。アプリケーションは完全にフリーズしているようです。すべてが処理されるのを待つ…
外部の監視ツールから、監視対象の5つのURLの平均応答時間が過去30分間で2倍になったことが報告されます。このプロジェクトは、あなたの管理下にない、データセンターのどこかで稼働している1台の物理サーバーで実行されています。SSHで接続してhtopを起動すると、CPU負荷は95%、メモリはとっくにオーバーフローしていることがわかります。 gitによると、1週間ほど前に新しいテーブル構造へのデータベース移行を行ったのですが、同僚がチャットに、列とインデックスの再計算に5時間ほどかかり、その間ほぼ全てのデータベースがロックされ、INSERTもSELECTも効かなかったので、移行を夜間に実行しなければ…
2017年の話ですが、あなたはある代理店でリードデベロッパーとして働いていて、その間に会社が開発した大小約300のプロジェクトを管理していますね。その多くは、最大10個のテンプレートと数個のフォーム、データベース・テーブルを持つシンプルなネッテ・アプリケーションです。派手さはない。プロジェクトはそれぞれ微妙に違うベンダーが開発し、人も入れ替わり立ち替わりで、なんとかやり遂げたいと思っているわけですから、そんなに詳しいことはわからないですよね。この会社はコストの最適化をよく行うので、一度に1台のサーバーで50プロジェクトほどをホストしています。 突然、プロジェクトマネージャーが「重要なクライアン…
私がこれまでの人生で恐ろしく勘違いしていたことのひとつに、マイクロソフトに対する評価があります。 若い頃は古いデスクトップパソコンでWindows XPを使っていましたが、Windowsがユーザーやパフォーマンスの面で自分に合わなかったので、最初のお金でLinuxのノートパソコン(Ubuntu)を買いました。しかしその後、ADログイン、Office、Outlook、Teamsといったビジネス向けの他のアプリケーションや完全なソリューションを発見し、後にMSはGitHubを買収して大きく改善し、素晴らしいTypeScript言語を設計して強化し、他にも多くの分野を見つけることができました。 チー…
後輩が、一緒に開発しているシステムの既存機能をリファクタリング/改善する方法について、あなたのところにアイデアを持ち込んできました。彼がいろいろ考えようとしていることはとても嬉しいし、絶対に褒めて、その可能性を試してみるんだ。 分析中に、提案されたソリューションが既存のソリューションより優れていないこと、さらには設計上の問題があることが判明します。しかし、残念ながら、これらは直接指摘できないほど厄介な問題で、どちらかというと直感や他のシステムを動かしてきた経験に基づくものなのです。例えば、新しく提案されたソリューションは、ある確率で運用コストを30%程度増加させる可能性があり、既存のチームを部…
3年後、ホスティングプロバイダーから突然、エネルギーコストの上昇を理由に来月から50%値上げすると告げられる。電話で交渉しても、相手の上司は「新しい条件を受け入れるか、さよならを言うか」と言うだけ。 自分のプロジェクトだけなら、どうにかして作り上げることができるだろう。数年間面倒を見てきたクライアントサーバーで、クライアントと良い関係を築きたい場合は、もっと大変です。 比較的収益性の悪いプロジェクトですが、すでに運営に必要なコストや要求が比較的高いのです。 どのように決めるのですか? クライアントに値上げを知らせるだけでなく、… 1.クライアントに判断を委ね、気にしていない。 2.サーバーを他…
あなたと同僚は、FTFP(固定価格、固定時間)の仕事としてカスタムeショップを開発しています。 あなたは、すべてのテンプレートグラフィックス、コード化されたホームページと製品の詳細の準備ができています。後輩はネットとラテしか使えず、コーディングの知識も平均的なレベルです。 しかし、週末にしか遊ばないReactを1ヶ月前に知り、学ぼうとしているのですね。本番環境での動作、ルーティングやサーバーサイドレンダリングの処理方法、必要なサーバーの種類など、まだよく分かっていないのです。 どのように決めるのですか? 1.リスクを取って、現代の(より良い可能性のある)技術を使おうとするか? 2.伝統的なルー…
PHP mám opravdu rád, protože umožňuje velmi rychle dosáhnout cíle a udržovat elegantní kód. První PHP aplikaci jsem naprogramoval před více než 10 lety, a od té doby se PHP stalo jedním z mých nejoblíbenějších jazyků.
Za tu spoustu let se PHP hodně posunulo, proto na tomto webu najdete spoustu postřehů a triků, jak řešit problémy elegantně. Taky si můžete pročíst série článků, zkušeností a dobře míněných rad, které pomohou zásadně zlepšit Vaše webové aplikace.
Poslední 3 roky kariéry se věnuji převážně návrhu softwaru, architektuře, tréninku vývojářů, konzultacím a školení s cílem zlepšit návrhové vzory aplikací a odhalit úzká hrdla konkrétního projektu.