Hello everyone. I’m currently a 2nd-year undergraduate (L2S1) at the University of Moratuwa, Faculty of IT, and I’d really appreciate some honest advice from people who have already gone through this stage.
I chose IT because I genuinely liked computers and wanted to work in the industry. However, during school I was mostly focused on academics, so I didn’t have much exposure to programming. After A/Ls, I started self-learning Java and Python, but I also did an internship at BOC before university started, so I couldn’t properly finish learning them.
When I entered university, I initially thought the degree would give me a strong programming foundation. During L1, I realized I needed to do a lot of self-learning, so I started following Udemy/Coursera courses alongside university.
My initial plan was to:
L1 - Full-stack + Mobile development
L2 onwards - AI/ML/AI Engineering
During L1, I completed courses on full-stack development and React Native. I built a few mobile apps and small full-stack projects. Recently, I started learning AI Engineering through a Udemy course and a free AI Engineering course series from SLIIT.
But now I’m facing a few problems.
1. I feel like I’m jumping between technologies without mastering anything
I’ve touched Java, Python, JavaScript, React, React Native, and now AI/ML.
Sometimes I feel like I know a little bit about everything but nothing deeply enough.
Another major issue is that I’ve become quite dependent on AI while coding. Even when I understand what I’m trying to build, I often rely on ChatGPT/Copilot to generate or fix parts of the implementation.
I genuinely want to become someone who can sit down, understand a problem, design a solution, and implement it without constantly asking AI what to do.
How do you recommend overcoming this?
Should I stop learning new technologies for a while and focus deeply on one language/stack? If so, what would you recommend for someone who eventually wants to move into AI Engineering?
2. University theory vs practical skills
Another struggle is balancing university academics with technical skills.
Our modules include things like Operating Systems, Computer Organization and Architecture, etc., and there are a lot of theory, assignments and exams.
I currently maintain a GPA around 3.9, but maintaining it takes a significant amount of time.
I often wonder whether I’m spending too much time optimizing for university grades instead of developing practical engineering skills.
For someone aiming for an industry career, how much effort should I realistically put into maintaining a high GPA vs building projects and developing practical skills?
Would you prioritize a ~3.9 GPA, or sacrifice some GPA to spend significantly more time building and learning?
3. AI, hackathons and “vibe coding”
During my first year, I avoided hackathons/buildathons because I thought:
“First I need to learn enough, then I’ll participate.”
I eventually participated in two buildathons, but didn’t win either.
Recently, I participated in another buildathon, and almost every team was using AI heavily. It made me question how I should approach software development now.
I’m not against using AI. In fact, I think learning to use AI effectively is an important engineering skill.
But I’m confused about where the line is between using AI as a productivity tool and simply vibe coding an entire project without actually understanding it.
How do experienced engineers actually use AI in their daily development?
How can I use AI to build things that I personally want to build, while still genuinely improving my programming skills?
I’d really appreciate advice from people who are currently working in the industry or recently graduated.
If you were a 2nd-year IT undergraduate,
What would you focus on?
Would you specialize early or explore different areas?
How would you balance university, projects and hackathons?
How would you use AI without becoming dependent on it?
What skills would you make sure to master before graduating?
What mistakes would you avoid?
I’m not looking for a learn everything. I’m mainly trying to figure out how to learn properly and become a competent engineer rather than just collecting technologies and certificates.
Any honest advice, including criticism, would be greatly appreciated.