First Internship Assignment

I applied for a game studio and I actually got an e-mail back, which took me by surprise! I was handed an assignment on the first mail I got from them.
It was a two-part assignment. One programming part and the other a "Make this a whole game in Unity". The deadline was to hand it in within 2 weeks.
First part was 12 questions in C++ and last the question in Shader Code.
Second part was to take this small Unity scene with a prototype of a Shoot-em Up game, and make it a "full game".
So I went through all the programming question, and realized that we had only studied maybe 20% of the question, so I knew from the start that this is going to be really hard for me but that I will learn a lot.
I dedicated whole 7 days to learn all the things needed, tried to answer all the questions as good as possible. I started with this since I new this is the hardest thing for me, and that I would probably have to study some full days just to be enable to grasp some of the questions.
Since I have done small games in Unity I felt more comfortable to do that later and in the meantime, I can think about how I would tackle it.
But I was under a lot of stress since I had to do this assignemt simultaneously as my Unreal 5 school assignment, and I had just said yes to participated in a game contest.
So after I felt done with the programming questions, I just jumped ahead and started doing the task that was in the assignment for the Unity game:
- The way the enemies appear is monotonous and uninteresting. Improve the enemy's movement, actions and spawning so they are more dynamic, fun and pleasing to look at and play against.
- The current movement and behavior of the player is simple and uninteresting. Please improve it. You may add some new features for this purpose.
- Please add some visual and audio effects for bullets, enemy collisions, etc.
- Please add a playable end condition to this stage. In other words, you will need to add a rule that the game ends when the player fails in some way, or when the game ends based on a time limit.
The end product completes all the tasks, but the quality of the product is really rushed.
Key takeaways:
- Always remind yourself, is there a way to actually achieve a time complexity of big O(1)? And not just assume that big O(n) is fine.
- Do more than assignment actually ask from you, do 10x on all the question.
- Instead of taking the existing code in the prototype I was given, I should just have scrapped the whole code and rebuild it from scratch, because there was some decisions made in that code that later on made some things really hard to fix, hence the clanky button layout.
- Take a step back, and analyze how I should structure the code instead of just jumping into the code and start building ontop of it.
- Ask more people for help on how I can tackle a problem, and what I need to do to make the best possible answer to a question.
- I shouldn't have applied this early, I should have applied much later when I have learned more in-depth about programming in general.
- Learning programming is fun, I learned about Barycentric Coordinates and Linear interpolation. I learned about spatial partitioning in collision detection, and what Broad-phase and Narrow-phase means.
Link to Unity Play
Link to the questions