When students start a project, the first conversation is often about technology.
Which programming language should we use?
Should we use React or Angular?
Which database is better?
Can we add AI?
Which framework will make the project look more impressive?
These are valid questions. But after spending years teaching and observing students, I have realised something important:
A good project is not defined by how many technologies it uses. It is defined by how well the student understands the problem and builds a solution.
Today, students have access to almost everything they need to build a project.
There are tutorials, documentation, GitHub repositories, online courses, AI tools and countless examples available within seconds.
That has changed the learning environment completely.
Earlier, students struggled to find information.
Today, the bigger challenge is knowing what information to use, why to use it, and how to apply it.
This is where project-based learning becomes important.
A project gives students an opportunity to move beyond simply learning a programming language or completing an assignment.
It asks them to think.
Before asking a student about the technology stack, I often feel we should ask a much simpler question:
“What problem are you trying to solve?”
A student may say:
“We are developing a React application with a Python backend and MySQL database.”
That sounds technically impressive.
But if the student cannot clearly explain the problem, the target users, the workflow or why the proposed solution is needed, then the technology becomes more of a decoration than a solution.
A project should begin with the problem—not the programming language.
There is another important difference.
A student can make an application work without necessarily understanding how it works.
With today’s AI tools, generating code has become easier than ever.
That is not necessarily a bad thing.
AI can help students learn, experiment, debug and explore ideas.
But there is a difference between using AI to learn and using AI to avoid learning.
If AI generates a piece of code, the student should still be able to explain:
What does this code do?
Why is it required?
What happens if we change it?
How does it connect with the rest of the application?
What problem does it solve?
That understanding is far more valuable than simply having working code.
Interestingly, some of the most valuable learning happens when the project does not work.
The database connection fails.
The API returns an error.
The application crashes.
The UI does not behave as expected.
The model gives unexpected results.
The team disagrees about the approach.
These moments may feel frustrating to students, but they are actually learning opportunities.
Because real-world technology is rarely about following a perfect sequence of instructions.
It is about identifying a problem, investigating it, trying possible solutions, making mistakes and improving the solution.
That is where problem-solving begins.
One aspect of projects that is sometimes underestimated is communication.
A student may build an excellent application but struggle to explain it.
That can become a serious limitation.
In an academic environment, students may present their project to teachers.
In the professional world, they may have to explain it to a client, manager, colleague or business stakeholder.
They need to communicate:
What is the problem?
What is the solution?
How does it work?
Why did we choose this approach?
What challenges did we face?
What can be improved?
These questions have very little to do with syntax.
They are about clarity of thought.
Most real software projects are not built by one person working alone.
They involve developers, designers, testers, analysts, managers and users.
Students therefore need opportunities to work together.
They need to learn how to divide responsibilities, discuss different opinions, meet deadlines and handle disagreements.
Sometimes the most important outcome of a project is not the application itself.
It is the ability to work with people.
For me, a meaningful student project has several characteristics.
1. Understanding of the problem
The student should know what problem the project is solving.
2. Understanding of the implementation
The student should be able to explain how the system works.
3. Appropriate use of technology
The latest technology is not always the best technology. The choice should depend on the problem.
4. Problem-solving ability
Students should be able to identify errors, investigate them and find solutions.
5. Communication
They should be able to explain their project clearly.
6. Scope for improvement
A good project should also make students think about what could be done next.
I don’t think students should be discouraged from using AI.
The reality is that AI is already becoming part of how technology is developed.
The important question is not:
“Did the student use AI?”
The better question is:
“Does the student understand what AI helped them create?”
That distinction matters.
AI can accelerate development.
But it cannot replace curiosity, understanding, judgement and responsibility.
The future will not belong to students who simply know how to generate code.
It will belong to students who can understand a problem, use technology intelligently, evaluate the result and explain their decisions.
Perhaps we need to rethink what we expect from student projects.
A project should not simply be something submitted at the end of a semester.
It should be a small opportunity to experience the way real-world problem solving works.
Students should experience the complete journey:
Problem → Understanding → Planning → Technology Selection → Development → Testing → Presentation → Feedback → Improvement
That journey teaches much more than programming.
It teaches students how to think.
As educators, our responsibility is not simply to teach students how to use technology.
Technology will continue to change.
The programming languages students learn today may be different tomorrow. Frameworks will evolve. AI tools will become more capable.
But the ability to understand a problem, ask the right questions, think critically, work with others and communicate clearly will remain valuable.
So when we evaluate a student project, perhaps we should look beyond the final application.
Look at the thinking behind it.
Look at the questions the student asked.
Look at the problems they faced.
Look at how they solved them.
And most importantly, ask:
“Does the student understand what they have built?”
Because ultimately, a project is not just about the code. It is about the learning that happens while building it.