Tips for student software engineers
IDE, Source Control, Debugging and more to learn...
In 2022, I have been tasked to review internship applications, I was shocked to see that the things I wanted my younger self to learn still apply today to these applicants. So if you are a student and you stumbled on this article, I hope it helps!
Tools
IDE
IDE (integrated development environment) is simply the editor you use to write, build and launch your code. In my case, my school teachers suggested using IDEs that I later deemed as outdated: CodeBlocks for C & C++, Eclipse or Netbeans for Java... Nowadays, Visual Studio Community handles everything you through at it. If you prefer a "lighter" IDE, you have two great options Visual Studio Code or Jetbrains IntelliJ Idea.
Source Control
This is a no-brainer: you should use Git for your school projects instead of sharing code with teammates via e-mail or flash drives and integrating it manually.
Git will make teamwork a lot easier and you will have a clear history of code changes. Another advantage is that you can add your public Git repositories to your resumé for a better chance at an internship or a junior developer job application.
Debugging
In every software development job, debugging is a task every developer will have to do. And every IDE will have a debugger that you can use instead of adding Traces in the code and then removing them!
With debugging, you can add Breakpoints on the lines of code where you want your program to pause while you hover over the variables and see what their values are at that moment.
Task board
If you work on a school project with classmates, you can use a task board to create tasks, assign them to team members and track their progress. GitHub ships with a board you can use for free.
Cloud experience (optional)
I recently passed the AWS Certified Developer Associate and through the whole preparation process, I kept saying I wish I have done this when I was a student: cloud certifications modules include Security, Networking, Compute, and Data Stores... A lot of these modules help make sense of what you are studying in school and understand the software lifecycle.
If you don't have the time, money or peace of mind to prepare and pass the exam, you can create a free-tier account (on AWS for instance) and start exploring.
Unit Testing (optional)
How many times do you work on a project and at some point, you discover that a feature you developed earlier no longer works? You would've detected this regression with unit tests.
As the name implies, unit testing is programmatically testing your code as small units, so basically you write extra code (preferably in a separate project) that calls you methods/functions with predefined inputs and validates the results.
Conclusion - Learn by doing
This article intends to help students find the right tools they can start using earlier in their learning and will later have to use for work. However, I will state the obvious here, what you learn in school is essential to your success and, in my opinion, practice is an important step of learning. For instance, you must practice Object-Oriented Programming (OOP) by writing your code (not just reading what is given to you).
I hope you've found this article helpful. If you have any questions, please let me know in the comments below.