While browsing X, I came across the beginning of a longer post by Anton Martyniuk
about Microsoft's .NET Skills for AI Agents. It sparked my curiosity, so I searched
for Microsoft's official blog to better understand the technology behind it.
Microsoft's official blog,
Extend Your Coding Agent with .NET Skills,
explains the concept in more detail and introduces the open source
dotnet/skills repository.
Microsoft Blog:
Extend Your Coding Agent with .NET Skills
After reading the official documentation, I concluded that this represents another
step in the evolution of developer tools over the past 30 years.
Simply put, it is another tool in the programmer's toolbox.
There is no doubt these skills can make developers more productive.
However, they also prompted me to reflect on a broader question:
Will AI coding assistants simply help us write code faster,
or will they improve the long term quality of software engineering?
Recently, someone shared an observation with me in a direct message
that resonated with me:
"They teach just as much as they need."
Reflecting on decades of programming and database development,
I have learned that the long term cost of software is rarely writing
the initial code. The real cost comes later because systems must be
maintained even though their data models, business rules,
ETL processes and architecture were never deeply understood.
In my experience, the real gaps often do not appear until an
application has been running for a year or two.
As the data grows, business requirements evolve and complexity increases,
the original design is placed under real pressure.
That is when manual processes, workarounds and unnecessary complexity
begin to emerge.
This is where I believe AI coding assistants still have limitations.
They can understand programming languages and frameworks exceptionally well,
but they cannot automatically understand the deeper knowledge embedded within
a project, including its business rules, relational data model,
architectural decisions and the reasoning behind them.
Those aspects still depend on human understanding.
That distinction, in my view, is the difference between
writing software and
engineering software.
Further Reading