At Freddie Mac, our mission of Making Home Possible is what motivates us, and it's at the core of everything we do. Since our charter in 1970, we have made home possible for more than 90 million families across the country. Join an organization where your work contributes to a greater purpose.
Are you interested in using your software engineering skills to build a system to enable massively parallel computations in a cloud environment? We are seeking an Entry Level (Associate) Software Engineer to work on our cloud-based distributed computing system. We are looking for a creative and talented individual who loves to develop and operate systems. Apply now and learn why there is #MoreAtFreddieMac!
Our team is responsible for the distributing computing platform that is used by all the firm's quantitative model and analytic systems. These systems use Monte-Carlo simulations to value financial instruments such as loans, mortgage-backed security and collateralized mortgage obligations.
We work with other teams within our department to help them effectively leverage parallel compute in the cloud.
We ensure that our systems are robust, scalable, fault-tolerant and cost effective.
Design, develop and support a custom-built AWS native solution for distributed computing. The current system is written in Python and uses EC2 (Spot Fleet), S3, SQS, Lambda, DynamoDB and API Gateway
Design and develop new code, review existing code changes, and implement automated tests
Actively seek opportunities to continuously improve the technical quality and architecture to improve the product's business value
Improve the product's test automation and deployment practices to enable the team to deliver features more efficiently
Provide production support for the product
BS in Computer Science or equivalent experience preferred
Up to two years of professional exposure to Python
Preferred: Exposure to AWS
Passionate about hands-on software development
A desire to work on all aspects of the software development lifecycle: requirements gathering, design, development, testing and operations
Strong collaboration and communication skills (both written and verbal)
Desire to continuously improve the team's technical practices
Ability to quickly learn, apply and deploy new technologies to solve emerging problems