2. Big difference in working a job and doing schoolwork is that it’s a lot harder to finish “assignments”. Don’t procrastinate right up until the deadline because you WILL miss the deadline. While missing deadlines is no big deal generally, it looks a lot better if you were working continuously on the project and communicated issues/the need to revise estimates as early as possible.
2.5 Don’t do pseudo-productive stuff like fucking with vim macros or playing with a new rust package unless you actually need to do it for your job. Obviously doing this a bit is OK, but time box it, don’t spend weeks on it. I only bring this up because you mention having fun working with new stuff at work.
3 Don’t tolerate assholes. But also be honest with yourself. Nobody here has all the details to know if your managers are being reasonable or not.
4. Don’t over engineer. Do the bare minimum to get what you need to get done (so long as it’s reliable and maintainable). Use libraries. This is a big learning curve for new engineers, since writing professional software is more about getting some functionality to work than your academic assignments which were about teaching you new stuff. This is what your feedback is getting at: see how other people did something and copy it.
Another thing is that I notice you got your project done within 2 weeks of getting this negative feedback. What was the total timeline of the project? I ask because it kind of sounds like your manager “cracked the whip” / “lit a fire under your ass” and you got the project done pretty quickly after that, since two weeks is almost nothing in the software world (as I know it). In this case your manager may have done the right thing in getting you to focus on landing the project (at the expense of your happiness) assuming you weren’t working way overtime to get it done.