
A lower barrier is a good thing
AI coding tools can help people describe, generate and change software in natural language. GitHub’s documentation includes application building among those capabilities. Someone who would previously have stopped at an idea can now get much closer to a working prototype.
I welcome that. Useful products can come from people who understand a problem deeply without having years of programming experience. A small tool that solves an ordinary problem does not become less valuable because its creator used AI to build it.
It does raise a question for engineers: when producing code becomes easier, where does experience make the greatest difference?
A working screen leaves questions open
Consider a simple booking form. It accepts a name, a time and a service, then displays a confirmation. The demonstration works.
Now imagine two people requesting the same last appointment at almost the same time. Or someone pressing Submit again because their connection is slow. Or a member of staff needing to change a booking without exposing another customer’s details.
These are hypothetical requirements, not evidence that an AI-built form will fail. They show how much of a system can remain invisible in a successful demonstration.
Experience helps turn those possibilities into questions that can be checked. What is the source of truth for availability? Which operations must happen together? Who is allowed to see or change a record? What should happen when a request is repeated?
Judgment is a set of habits
Technical judgment can sound like something mysterious that arrives with seniority. I find it more useful to think of habits people can practise.
State the assumptions. Trace where information comes from and where it goes. Look for the smallest design that meets the actual need. Try the awkward case as well as the happy path. Ask what will be difficult to change later.
Those habits matter whether the first version was written by a person, generated by a tool, or assembled from existing code. An experienced engineer can still accept a fragile solution. A careful beginner can ask the question that reveals it.
The advantage of experience is having more situations to compare against, including changes that looked harmless until they met a real workflow.
More implementation choices need better questions
AI can propose several architectures or add another library quickly. Choosing among them still depends on the problem, the people maintaining the software and the consequences of failure.
For a small service, the sensible choice might be a familiar framework and a straightforward deployment. In another setting, a stronger separation of responsibilities may justify additional complexity. There is no useful answer without context.
Review also needs evidence. Tests can check an expectation, but someone has to decide what that expectation should be. Security and maintenance deserve attention beyond the first successful run. GitHub’s responsible-use guidance likewise calls for reviewing and testing generated work before integrating it.
Learn by taking responsibility for a change
Fundamentals help us explain why a solution behaves as it does. Practical work gives those ideas somewhere to become real.
A useful exercise is to take a small generated feature, explain its assumptions, change one requirement and predict what will break. Then test that prediction. A mentor can help by asking for the reasoning, suggesting a case the learner missed, and reviewing the next change together.
This is one motivation behind my work at Ncode. The wider point is independent of any particular service: easier implementation should give more people a route into engineering judgment.
I do not see the choice as using AI or learning to engineer. AI expands what we can attempt. Understanding, validation and responsibility help us decide whether the result is ready for someone else to rely on.