技術的な議論で優柔不断になるのをやめましょう:自分の決断に責任を負う

2025-04-14

シニアエンジニアは、技術的な議論において、しばしば決断を避ける傾向があります。著者はこれを一見慎重なアプローチに見せかけ、実際は臆病であると主張しています。この記事は、チームが決定を下す必要がある場合、たとえ55%の確信しかないとしても、最も経験豊富なエンジニアが責任を負い、判断を示すべきだと強調しています。これは、経験の浅いエンジニアが拙い解決策を提案するのを防ぎ、マネジメントの効率的な作業を可能にします。著者は、マネジメントは技術的な誤りを通常は許容するとし、意思決定には本質的に不確実性が伴うためだと説明しています。しかし、一貫して間違った判断は信頼性を損なうと指摘しています。この記事は、信頼関係のない環境では、コミットメントを避けることが正当化される場合もあるものの、ほとんどの場合、責任を負い、大胆な決定を下すことが優秀なエンジニアの特徴であると結論付けています。

続きを読む

無駄な仕事に時間を費やすのはやめましょう!

2025-04-07

多くのエンジニアは、パフォーマンスの向上やアクセシビリティなど、利益につながらない仕事に集中し、評価されずに解雇されることがあります。この記事では、テクノロジー企業は利益を追求しており、エンジニアの価値はその仕事が利益にどれだけ貢献するかによって直接的に決まる、と主張しています。著者は、エンジニアは自社のビジネスモデルを理解し、自分の仕事を収益性と結び付けることで、職を安定させるべきだとアドバイスしています。一見、利益につながらない仕事でも、大企業では規模の経済によって価値を生み出すことができます。

続きを読む

Ruby:AI革命の意外な言語?

2025-03-22

大規模言語モデル(LLM)はコード生成に優れていますが、コンテキストウィンドウの制限により、大規模なコードベースでの作業が困難です。この記事では、LLM支援プログラミングの「パワー」を探求しています。プログラムを表すのに必要なトークンの数です。著者は、簡潔さのために、LLMにはPythonがGoよりも優れていると主張しています。これにより、トークン制限内でより多くの機能を使用できます。さらに、エレガントで簡潔なことで知られるRubyは、トークンの効率的な使用により、LLMに最適な言語として提示されています。型チェックなどの課題が残っていますが、Rubyの人間中心の設計は、皮肉にも、LLMにとって潜在的なリーダーとなっています。

続きを読む
開発

黄金時代の終焉:ポストブーム時代のソフトウェアエンジニアリング

2025-03-16

10年間、ソフトウェアエンジニアリングは夢の仕事でした。高給、素晴らしい福利厚生、そして盤石な雇用保障。しかし、ここ2年間、テクノロジー業界全体で大量解雇が相次ぎ、状況は劇的に変化しました。この記事は、この変化が経済状況の変化に起因すると主張しています。低金利は贅沢な支出とエンジニアへの寛大な報酬につながりましたが、金利上昇は収益性を優先し、大規模な削減につながりました。AIがしばしば非難されますが、著者はそれが根本原因ではないと主張しています。新たな現実では、会社の目標に直接貢献することに集中することが求められます。適応できないと、雇用の安全が危険にさらされます。甘やかされていた時代は終わりましたが、価値提供に集中することで、より明確で、たとえ華やかでなくても、成功への道が開けます。

続きを読む
テクノロジー

シンプルこそ最強:優れたソフトウェア設計の真髄

2025-03-07

この記事は、優れたソフトウェア設計は複雑な言語機能や高度なアーキテクチャではなく、潜在的な障害モードの排除にあると主張しています。著者は自身の経験を例に、冗長なコンポーネントの削除、状態管理の中央集権化、堅牢なシステムの使用などによって、リスクを軽減し、信頼性を向上させる方法を示しています。優れた設計はシンプルで信頼性が高く、派手な機能を避け、問題解決に焦点を当てていることが中心的なメッセージです。Unicorn Webサーバーをこのアプローチの好例として挙げています。

続きを読む

スポットライトを制する:テクノロジーにおける優先順位

2025-03-07

テクノロジーの速いペースの世界では、すべての仕事が同じではありません。この記事は、ほとんどの優先度の高いタスクが実際にはインパクトが低いことを強調しています。成功は「スポットライト」の瞬間、つまりリーダーシップから強い注目を集めるプロジェクトを認識することにかかっています。エンジニアは、これらの機会を迅速に特定し、活用し、大きな影響を与えるプロジェクトに専念する能力を開発する必要があります。逆に、スポットライトが当たっていないときは、個人的な時間を貴重なプロジェクトに費やすことで、スキルと会社の貢献度を高めることができます。これは、判断力だけでなく、練習によって磨かれるスキルでもあります。

続きを読む
開発 優先順位

ソフトウェアエンジニアリングにおけるAI革命

2025-02-15

大規模言語モデル(LLM)はコード作成能力を急速に向上させており、純粋なAIソフトウェアエンジニアの開発が試みられています。短期的には、ソフトウェアエンジニアはAIを学習し、地位を高め、AIツールを活用すべきです。中期的には、大規模なレガシーコードベースの保守・改良に精通することがより価値のあるスキルとなります。なぜなら、LLMは複雑で検証が困難、コード量が膨大なプロジェクトにおいてはまだ限界があるからです。長期的に見ると、ソフトウェアエンジニアのコアコンピタンスは責任感と信頼性へとシフトします。これはLLMがなかなか獲得できない資質です。最終的には、AIシステムを監督し、その出力結果の信頼性を保証できるエンジニアが最後に残ることになります。

続きを読む
開発

LLM を使ってエンジニアリングワークフローを高速化する

2025-02-04

ベテランソフトウェアエンジニアが、日々のワークフローにおける大規模言語モデル(LLM)の実用的な活用方法を共有しています。コード補完、使い捨てコードの作成、新しい分野の学習、最終手段としてのバグ修正、ドキュメントの校正などにLLMを活用しています。LLM はコアロジックや正式な文書作成の代替ではないものの、特に馴染みのないコードベースの処理や新技術の学習において強力な支援ツールとなります。戦略的な活用が重要で、奇跡を期待すべきではありません。

続きを読む
開発

JIRAゾンビになるな:チケットよりインパクトを優先せよ

2025-01-25

この洞察に富む投稿は、エンジニアが学んだ貴重な教訓を共有しています。JIRAチケットの完了に時間を費やすのではなく、戦略的に重要なプロジェクトに集中しましょう。真の生産性とは、より多くのチケットを閉じることではなく、経営陣が重要とみなすものを優先することです。著者は、高視認性のインシデント、未回答の質問、プロジェクトの締め切りなどに焦点を当てるなど、高インパクトなタスクを特定する方法を概説しています。個人的な逸話は、あまり重要ではないタスクに集中することによるフラストレーションを示し、容赦ない優先順位付けと、真の価値をもたらすプロジェクトへの集中を主張しています。結果?より少ない時間でより大きなインパクト。

続きを読む
開発

オーストラリア人エンジニアによる米国企業での勤務体験:時差、文化、安定性

2025-01-12

オーストラリア人エンジニアが、米国テクノロジー企業で10年間勤務した経験を共有しています。時差のある共同作業の課題について説明しています。朝は夜間に完了した仕事に追いつくのに費やし、午後は貴重な集中作業の時間が得られます。孤独感も課題となる可能性がありますが、優れたチームワークとドキュメント文化によって軽減されます。また、海外から米国企業で働くことの固有の不安定性にも言及しており、より大規模な事業、より良い報酬、より高いブランド認知度を主な動機として強調しています。最後に、オーストラリアと米国の文化の違いについて議論しており、米国人はより熱心で、オーストラリア人はより控えめであるため、米国の職場文化に適応する必要があると述べています。

続きを読む

ラチェット効果:大企業におけるエンジニアの評判形成

2025-01-08

大企業におけるエンジニアの評判は、技術力だけでなく、段階的な積み重ねが重要です。最初は下位レベルの仕事から始め、着実に成果を上げることで、より高度なプロジェクトへの参加機会を得ます。この「ラチェット効果」により、評判は容易には変わりません。失敗しても、継続的な成果によって挽回可能です。しかし、繰り返しの失敗は悪循環に陥ります。著者は、新入社員は小さなプロジェクトに集中し、着実に評判を築くことを推奨し、いきなり大規模なプロジェクトに挑むことを避けるべきだと述べています。

続きを読む

大規模コードベースにおけるエンジニアのよくある間違い

2025-01-07

大規模で確立されたコードベースでの作業は、非常に難しいことで知られています。この記事では10年間の経験を共有し、最も一般的で致命的な間違い、つまり既存のコードベースのパターンを無視して、新しい機能のためのクリーンなコードのみに焦点を当てることを強調しています。一貫性を維持することは非常に重要です。予期せぬ問題を防ぎ、コードベースの劣化を遅らせ、将来の改善を可能にするからです。著者も、コードの運用環境への影響の理解、新しい依存関係の導入への慎重さ、冗長なコードの削除、小さなPRでの作業、そしてチームの専門知識を利用したエラー検出の重要性を強調しています。困難ではありますが、大規模コードベースの習得は非常に重要です。なぜなら、それらは通常、企業の最も価値のある製品の基盤だからです。

続きを読む

接着剤ワークは有害であると考えられる:効果的なエンジニアのためのサバイバルガイド

2025-01-02

この記事では、ソフトウェアエンジニアリングにおける「接着剤ワーク」という概念を探求しています。チームの効率性にとって非常に重要であるにもかかわらず(例:ドキュメントの更新、技術的負債の解消など)、この地味な作業はしばしば報われません。そのため、優先順位を高く設定しているエンジニアは不利になります。著者は、企業が接着剤ワークを報賞しないのは、エンジニアに全体的な効率性の向上ではなく、機能の提供に集中してもらいたいからだと主張しています。効率的な戦略は、責任を負っているプロジェクトに接着剤ワークを戦術的に適用し、成功を保証することです。これは、努力を非効率的に分散させることとは対照的です。これは、皮肉な職場政治ではありません。大企業の効率性の低さと、短期的な効率性向上よりも成長を優先することの現実を踏まえたものです。

続きを読む

スタッフエンジニアへの昇進:2度の経験から学んだこと

2025-01-01

著者は2年間にわたり2回、スタッフエンジニアに昇進した経験を共有しています。昇進の鍵は技術力ではなく、会社の目標に沿った高優先度プロジェクトの成功による価値提供でした。会社の方針を理解し、影響力の大きいプロジェクトに取り組み、経営陣やチームメンバーとの良好な関係を築くことが重要だと強調しています。サポートしてくれるマネージャーの存在も不可欠です。重要なのは、会社が優先する高インパクトなプロジェクトに集中すること、メンタリングを過大評価しないこと、そして昇進を支援してくれるマネージャーがいることです。

続きを読む

優秀なエンジニアとそうでないエンジニアの差

2024-12-27

この記事では、優秀なエンジニアと平均的なエンジニアを分ける能力について考察しています。優秀なエンジニアは、複雑なバグの解決、レガシーコードの改善、大規模なアーキテクチャの変更など、平均的なエンジニアができないタスクをこなすことができます。平均的なエンジニアは、十分な時間があってもこれらのタスクに苦労します。この記事は、優秀なエンジニアは単に効率が良いだけでなく、複雑な問題を解決する能力を持っていることを強調しています。一方、能力の低いエンジニアは、ほとんどのエンジニアリングタスクを完了することができません。また、能力の低いシニアエンジニアとの協力方法についてもアドバイスしており、親切にする一方で自分の時間を守ること、過剰な要求を避けることの重要性を強調しています。

続きを読む