24 Jan, 2024

Software Engineering Program: Insights from Wargaming Forge Intern

Meet Ricardo Suarez Del Valle, an intern at Wargaming working as a Gameplay Developer. He’s got some awesome insights and secrets to share with you about the world of Software Engineering.

Ricardo’s expertise in the field will provide you with practical tips and strategies that can give you an edge in this competitive industry. Whether it’s mastering coding languages, understanding complex algorithms, or honing your problem-solving skills, Ricardo has got you covered.

At the end of the interview, you will find the bonus with the selection tests examples to get better prepared for the application to the Software Engineering Course (apply here by February 12).

HOW TO PREPARE FOR THE SOFTWARE ENGINEERING COURSE?

If you don’t have much experience with Python or C++, I would recommend leaning the basics of C++: loops, data structures, classes, inheritance. Once you got the basics down (don’t focus too much on this, the basics is good enough), apply the same concepts with Python, which will be substantially easier since it automates some of the pitfalls of C++. I insist, the basics is good enough, being able to solve problems is much more important than how fancy your code is. Once the problem is solved you can Google/ChatGPT your way to more readable, more efficient, more object oriented, more up to standards, better code.

Now that you have the basics down, you must apply them in practice. Pick a problem that interests you, make sure that the scope of the project is appropriate to the amount of time you have. Normally, make an honest estimate of how long it will take and then 10x the time. Carry out the project with the objective of doing things the right way, not the fast way.

You should make some plans, learn the basics of UML and class diagrams: do a simple class diagram of your project (don’t go too in depth with this (your diagram is probably wrong). Start programing, I recommend Python, it will be the most used in the course and the easiest to learn and use.

Make sure your project has some graphical part some logical part and some internet/server/data transfer/database part. If you learn how to make a simple website with a simple database, you’ll thank me later.

Once you have some minimum viable product (the simplest possible thing that can be used and works), improve the code, make it readable, use OOP principles, redo the class diagram properly, etc.

By the way, you should have been using GitHub all along and following some merge flow strategy.

Once you’re happy with your code, you must deploy it, make a Docker image and upload it. There are other ways, but this is the most useful for the course.

There’s some theory that could help understand the basics of the Internet, what a packet is, how its routed, etc. Check out AMQP, RabbitMQ and some routing algorithms, basics is good enough.

Finally, I don’t know if this was the right thing to do or not, but I put 90% of my time and effort into the group project, and here I am.

I wish you luck and hope my experience helps you find your winning strategy!!!

BONUS: test examples used for the selection to the Software Engineering Course.

Test example A

Test example B

Test example C