<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Engineering-Leadership | The .NET Blog</title><link>https://thedotnetblog.com/tags/engineering-leadership/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>en</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Sun, 19 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/tags/engineering-leadership/index.xml" rel="self" type="application/rss+xml"/><item><title>.NET 8 and .NET 9 End of Support: Treat This as a Delivery Deadline</title><link>https://thedotnetblog.com/news/emiliano-montesdeoca/net-8-net-9-eos-upgrade-playbook/</link><pubDate>Sun, 19 Jul 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/news/emiliano-montesdeoca/net-8-net-9-eos-upgrade-playbook/</guid><description>November 10, 2026 is not just a support date; it is the point where postponed upgrade risk becomes explicit.</description><content:encoded>&lt;p&gt;Original source: &lt;a href="https://devblogs.microsoft.com/dotnet/dotnet-8-9-end-of-support/"&gt;.NET 8 and .NET 9 will reach End of Support on November 10, 2026&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This announcement is straightforward, and teams should respond with equal clarity: if you plan to keep shipping on .NET 8 or .NET 9 past November 10, 2026, you are making an intentional unsupported-runtime decision.&lt;/p&gt;
&lt;p&gt;Applications will keep running. That is not the point. The point is that security and servicing updates stop. Once that happens, every known vulnerability without a backport path becomes your operational liability.&lt;/p&gt;
&lt;p&gt;My opinionated take: &lt;strong&gt;organizations often treat framework upgrades as optional maintenance&lt;/strong&gt; and then pay for that decision in emergency windows, audit findings, and rushed vendor escalations. Upgrade planning should be a product roadmap item, not a side quest.&lt;/p&gt;
&lt;p&gt;A practical migration stance for .NET teams:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Set .NET 10 retargeting as a dated objective&lt;/strong&gt;, not an open-ended backlog item.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run compatibility and regression testing&lt;/strong&gt; in parallel with feature work now, not in Q4.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Track dependency and hosting readiness&lt;/strong&gt; as separate workstreams, because many failures happen outside the project file.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use Upgrade Assistant and breaking-change documentation&lt;/strong&gt; early to front-load surprises.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you own shared libraries used by multiple products, publish your .NET 10 support timeline publicly inside your org. Downstream teams need lead time.&lt;/p&gt;
&lt;p&gt;Visual Studio’s out-of-support component marking also matters operationally. It creates a clear signal that toolchain cleanup is part of staying compliant. Teams that ignore this usually drift into mixed SDK states and inconsistent build behavior.&lt;/p&gt;
&lt;p&gt;One under-discussed detail is that .NET 8 and .NET 9 converge on the same end date. This compresses upgrade windows for organizations that staggered adoption expecting more cushion. If you moved to .NET 9 for feature access, you still land on the same support cliff.&lt;/p&gt;
&lt;p&gt;For platform leads, the decision matrix is simple: &lt;strong&gt;migrate before deadline, or document and accept unsupported risk&lt;/strong&gt; with compensating controls. There is no third option where nothing changes.&lt;/p&gt;
&lt;p&gt;The good news is that .NET 10 is an LTS target through November 2028, which buys stable runway once you complete the move.&lt;/p&gt;
&lt;p&gt;Do not wait for the final Patch Tuesday to start. Treat this as a delivery deadline with security implications, because that is exactly what it is.&lt;/p&gt;</content:encoded></item></channel></rss>