Personal Projects are Important
In January, I landed an interview for an internship at Lenovo for a Java Engineering position. My confidence was super high because I've been coding in Java for 3 years and I knew there was no question that I could not answer confidently. Ironicaly enough, that was not true. What I didn't expect was the interviewer asking me about my personal projects. I didn't have any.
Almost nothing was listed on my GitHub profile. I started talking to him about some of the projects I had done and not uploaded but this was to no avail. After my explanation he replied, "You really should put your projects on your GitHub, because it's the first thing I looked at on your resume." In the moment I did not take his words to heart and just nodded along.
I did not end up getting the internship. Ultimately I was given the harshest punshiment of all, getting ghosted.
Reflections
At first, I was sad and confused why I did not advance to the second interview. I thought that I failed the interview or answered a behavioral question wrong.
All the sudden one day it hit me 🤦. I imagined myself as the interviewer and if a freshmen college student told me they had three years of experience with nothing to show for it, I would never hire them.
Revelation
Traditional education only takes you so far in the competitive job market for software engineering. To stand out, you need to have an edge over other applicants and the best way to do that is with projects. Unfortunately, so many schools overlook the importance of completing projects outside of the classroom so it's almost never encouraged. These projects are key to landing a job or internship.
Projects
After my interview with Lenovo, I committed to working on projects to not only demonstrate my skills but also to continue learning and growing as a developer.
cameron.rs
Web development was never my forte as a developer. Since I was used to lwjgl, I always hated the way CSS was done. Lacking web development skills as a software engineer is not a good thing. However, I was determined to learn and start my journey with building my own personal website.
Initially, I struggled a lot with CSS and HTML, but through trial and error (many, many hours), I began to grasp the basics. Simply editing values and experimenting with different elements helped a lot for me to gain a clear understanding of why CSS is the way it is. Looking back, avoiding web development for so long was such a huge mistake. I was able to pick up HTML and CSS within 2 months and I'm still getting better every day.
stats-on-discord
After my unsuccessful interview with Lenovo, I knew I needed a Java project to showcase my skills. Who would hire someone for a language that does not code in that language.
The idea came to me when I was playing Minecraft and realized how difficult it was to view the server statistics for all players. I wanted to see how much time I spent on the Minecraft server and how far I've walked. The only way to do this was to search through a file on the server. This inconvenience sparked an idea for my next project.
I had never created a Minecraft plugin before so with the help of some YouTube tutorials I was able to get started right away. In the past, I had created Discord Bots so I had a very good understanding of the Discord API and how I could integrate a bot into the plugin. Now, all I had to do is make the bot continually edit an embed message with the statistics of the Minecraft server.
I added settings for people to configure the plugin for specific statistics. I just needed something to show people how to setup the plugin and configure it. Cue, my next idea 💡.
docs.cameron.rs
Developing documentation for my projects was a new challenge. This would require much more CSS than the previous one page personal website I had made. Most of my time was spent writing CSS and then figuring out a better way to do things and having to restart. Because of this, I spent a significant amount of time working on the documentation and eventually I finished.
sudoku-solver
Near Spring break, I was scrolling through TikTok and I found a video that gave ideas about coding projects. The video had a terrible lofi soundtrack but the projects were very good ideas. The minute I saw Sudoku Solver though I knew that is what I wanted to make. I was so excited because this was such an interesting challenge and this was a perfect way for me to get comfortable with my newfound language, Rust.
This sudoku solver had to have a GUI with it because what person wants to type numbers into a command line. This brought along some very big obstacles though. I had been using egui and many parts of the library were not expansive enough. I actually ended up creating a pull request to add a feature. Once again, I'm doing and learning new things through my projects.
Eventually, I was able to create the GUI, but then I had to figure out how to solve the Sudoku puzzle itself. I researched various approaches to solving Sudoku puzzles, and I was fascinated by the solutions that used bitwise operations. This project turned almost into two. Creating the algorithm to solve the puzzle was difficult, but man, I felt so good when it actually worked. I was able to explain this seemingly complicated algorithm in a very elementary way.
Conclusion
I just wanted to share my thought process after an interview gone wrong and my actions to make sure that never happens again.
I hope that by sharing my experiences, I've inspired you to start your own journey of programming outside the classroom. As you can see, inspiration can come from anywhere. The most important thing is to find something that excites you and challenges you to learn new things.