Software Engineering virtual experience program on Forage
In this job simulation, I experienced what life as a Software Engineer at EA would be like.
This simulation comprised 4 Task to be completed at my own pace.
Task One
Scenario
You work as a Junior Software Engineer at Electronic Arts. You are on the team responsible for developing the Sims series. The Sims 4 has already been released, but your team is still issuing updates which add content to the game and squash newly discovered bugs.
You are responsible for thinking of and building a new feature for the game.
What is a Feature Proposal
A Feature Proposal is a document which describes a new feature you’d like to add to an application. When you have a great idea, you need some way to communicate it to your team. Feature proposals provide a handy format for conveying these ideas and recording them for posterity.
My Feature Proposal
Quick Hairstyle Switch
Overview:
The Quick Hairstyle Switch feature allows Sims to save multiple hairstyle looks that can be easily switched at mirrors and dressers. This feature enhances the realism of daily life by enabling Sims to change their hairstyles without entering the Create-A-Sim (CAS) mode, similar to how a user might quickly restyle their hair in real life.
Value Statement:
Introducing the Quick Hairstyle Switch feature would enhance gameplay by making it more dynamic and user-friendly. Players can express their Sims' personalities more fully by easily changing hairstyles to match different activities or moods. This addition would reduce repetitive trips to CAS for minor adjustments, providing a smoother and more immersive experience.
Solution:
The Quick Hairstyle Switch feature integrates with existing game mechanics by extending the current CAS system. Players can save multiple hairstyles for each Sim in CAS, which will be accessible through a new "Hairstyle Favorites" menu when interacting with mirrors and dressers. This feature will use a similar interface to the outfit management system, making it intuitive for players. Hairstyles will be independent of the Sim's current outfit, allowing for a variety of style-hairstyle combinations with greater ease. Selecting a saved hairstyle will instantly update the Sim's appearance without leaving the active gameplay mode, allowing for quick and seamless changes. Additionally, special hairstyling animations may be introduced to improve the user experience and make hairstyle transitions smoother.
Evaluation Statement:
Moving forward with the Quick Hairstyle Switch feature would provide numerous benefits and some challenges. On the positive side, this feature would enhance realism by allowing quick hairstyle changes that reflect real-life routines, adding depth to daily interactions. It would also improve user experience by streamlining gameplay, reducing the need to frequently enter CAS, thus saving time and maintaining immersion. Furthermore, increased customization options would allow players to better express their Sims' individuality and adapt their looks to different situations, enhancing overall player satisfaction. However, introducing more customization options may initially overwhelm new players, increasing the complexity of the game. While the development effort required is significant, the potential to enhance player satisfaction and retention justifies the investment. Overall, the Quick Hairstyle Switch feature would significantly enrich the game by offering players a practical and enjoyable way to manage their Sims' appearances, enhancing both realism and gameplay enjoyment.
Task Two
Scenario
Your proposal was a hit! Everyone on your team is excited to include the new feature in the next Sims 4 update. Your project manager has split the rather large job of developing the entire feature into several more granular coding tasks (tickets) that can be accomplished by individual developers.
The first order of business is to figure out how to break the behavior described in the ticket into a collection of objects. Once you have an idea of what sort of objects you’re going to be working with and how they relate, you can move on to their implementation.
In this case, you figure it would be helpful to use a Class Diagram to visualize the subsystem. This will help you reason about how the objects are related to one another, and help you catch caveats and edge cases you might otherwise miss.
Class Diagram
The intention of the exercice was not to capture the entire system but rather to visuale the implementation needed for the feature proposed. Therefore I imagined some parts of the current Sims 4 code base, building upon it and create this class diagram for my proposal.
Task Three
Scenario
It’s time to write some actual code! All of the objects you outlined in the previous step need to be implemented in C++, a high performance coding language. In this task, you will be defining several classes in a single header file, without including their implementations.
QuickHairstyle.h
Task Four
Scenario
You’ve wrapped up work on the last ticket - those classes were quick to implement once you had their definitions mapped out. Another one down, it feels good to knock these out. You’ve submitted a pull request with your changes to the relevant git repo.
Soon, another engineer will review your changes and give you feedback, after which they’ll be merged in. It’s always better to have more eyes on a given piece of code.
You rummage through the sticky notes which briefly outline each ticket. A yellow one catches your eye - looks like a bugfix for the inventory system. Apparently items aren’t actually going anywhere when they’re removed. Can’t have that. Time to make a patch!
Task description
The current version of the inventory system does not fully implement item removal. An object removed from the inventory is left in the item list with a quantity of 0. Implement a way to fully remove an item from the inventory when its quantity reaches 0. While reviewing the code, consider whether there are data structures more appropriate for item storage, or if there is code that can be streamlined and condensed.
Inventory patch
Want to know more?
Checkout the simulation here: