CG Spectrum’s newest game programming mentor Margherita Donnici talks about the artistry of good coding techniques and how she passes them onto her students. Coming from a varied background in programming, Margherita combined her career with her love of games when she started at Ubisoft as a Software Developer. We talked to her about how it all came about.
Tell us how you began your career as a software developer. Did you start out wanting to work in gaming?
Computers, programming and video games have been part of my life since I was very young. I have two older brothers who are very passionate about them, and I was the annoying little sister who always wanted to tag along and do what they were doing. I remember being 10 and spending hours on RPG Maker trying to make my own Dink Smallwood.
When I graduated from high school I decided to pursue a degree in Computer Science as it was something that excited me and was curious about. I never really thought about working in the game industry even though, thinking back, one of the projects I was the most proud of was my Computer Graphics project. We had to develop a simple interactive 3D game from scratch. I guess I saw it as one of those things you wish for as a kid, like being a rockstar or an actress. Then one day I was looking for new opportunities and decided to apply for a position in a gaming company, “just in case". And here I am today!
You have a varied background in software design. Can you tell us about your career evolution? How have all these influences affected your approach to coding for Ubisoft?
When I started my first job as a consultant they asked me which language I preferred to work in, I said C++ because I had worked on a project for my Computer Graphics class and had enjoyed it greatly. Unknowingly, that was what would bring me to work in the gaming industry three years later! Each and every project I have worked on and professional experience I have had up until today have had an influence on how I code today.
Every project has its own unique issues and challenges. I've also had the chance to work mostly on projects that had just started when I joined the team, which means I got to follow the whole process from design, to implementation, to deployment and release and really put myself into all of the phases of the project.
Are there any major differences in working in the gaming industry compared to other disciplines?
One of the things I like the most about working in this industry is the people.
Working for a company where everyone is passionate about what they do and loves their craft is motivating in itself.
There are lots of different people with different roles and backgrounds - game designers, level artists, sound engineers, animators, writers. You can learn something from everyone and it makes for interesting conversations!
How does your certification as a Scrum Master influence the way you lead a team?
Being the Scrum Master of my team at my previous job certainly influenced the way I work now as a developer. A Scrum Master is responsible for removing impediments for the team, so it was a good exercise for my problem-solving skills for issues that weren't code-related: what is blocking us? who can help us?
It forced me to go that extra mile to find a solution (and not be afraid to bug people!). It also taught me to be attentive and listen to my teammates, to try and figure out if something was giving them trouble even if they weren't speaking up about it. And last but not least, it gave me a more broad understanding of everything that goes on behind a project and all the different people who are involved.
What do you love most about creating code?
I think the answer is in the question: a lot of people think of coding as a cold, mechanical process but coding is about problem-solving, and you have to be creative to find solutions to problems. Each project you work on is unique and has its specific needs and constraints. Often there isn't just one solution, and there isn't just one way to code a solution either: you can write bad code, you can write average code, you can write impressively smart and beautiful code.
There's a constant feeling of learning and challenging yourself - whether it's learning a new programming language, trying a new framework or optimizing the way you solve a problem. You are always stretching your mind. Just like art or music, coding can be extremely challenging but also extremely rewarding.
I love puzzles and coding just hits that spot for me - the sense of accomplishment when solving a really complicated problem cannot be beat!
Another thing I love is how versatile programming is. It can be applied in any domain and it gives you the possibility to work in a field that speaks to you. I currently work as a programmer in the game industry because I love games. But before this I was working as a programmer in the travel industry, which is also something that I am passionate about. I also love reading, so who knows - maybe someday I will work on something related to books. So not only do I get to do something that I love and that I am good at, I also do it for things that I find meaningful!
Do you have any personal projects on the go at the moment? If so, could you tell us about them.
Right now I volunteer as a code mentor for Pink Programming, a non-profit organization that organizes workshops and code events for the female, transgender, and non-binary communities. I help out during coding workshops by answering questions and supporting participants. Up until now the events were online because of Covid, but I can't wait to participate in live events now that restrictions are easing up!
What is your teaching style? How do you prepare students for their careers? What practices do you emphasize most?
I have yet to discover what my teaching style is as I haven't taught any classes so far!
Since I'm teaching the Intro to C++ course I want my students to get into good coding habits from the beginning. Writing clean, elegant code is easier for a simple program - so learning best practices at the beginning makes it easier when you get to complicated projects!
Also, I know from experience that knowing why we do things a certain way and what happens "under the hood" is important for writing good code, so curiosity is something that I would like to instill in my students.
Interested in a game programming career?
CG Spectrum was ranked by The Rookies as one of the best game development schools in the world in 2021. And with good reason. All our mentors are industry professionals, with small-scale classes conducted 100% online, ensuring specialized training and tailored career development assistance. We welcome Margherita onboard as she passes on her impeccable skills and unique teaching style to students enrolled in our Game Programming Course. Create a career as a game programmer for yourself and explore all the places it will take you!