Engineer / Senior Engineer, TSG Software Engineering
Description & Requirements
Company Overview
Bain & Company is a global consultancy that helps the world’s most ambitious change-makers define the future. Across 65 cities in 40 countries, we work alongside our clients as one team with a shared ambition to achieve extraordinary results, outperform the competition, and redefine industries. We complement our tailored, integrated expertise with a vibrant ecosystem of digital innovators to deliver better, faster, and more enduring outcomes. Our 10-year commitment to invest more than $1 billion in pro bono services brings our talent, expertise, and insight to organizations tackling today’s urgent challenges in education, racial equity, social justice, economic development, and the environment. Since our founding in 1973, we have measured our success by the success of our clients, and we proudly maintain the highest level of client advocacy in the industry.
Position Summary
A senior engineer is a senior role in Software Agile delivery team. The person is responsible for managing and executing the complex software modules almost independently. Additionally, the individual is responsible of guiding and mentoring junior engineers in the team from technology standpoint. This position works as a member of an Agile/scrum software development team focused exclusively on building and supporting Bain’s most strategic internal software systems. Team members work collaboratively to design, build and implement new features and functionality in their systems aimed at delivering the most value to Bain’s global users and supporting key business initiatives. Systems developed are primarily enterprise-scale browser based or mobile applications developed with current Microsoft development languages and technologies, with a global user base and integration points with one or more other internal Bain systems.
Essential Functions
Technical Delivery (75%)
• Work with teams developing and updating enterprise applications.
• Work as a member of an agile software development team with full participation in all Agile team events and activities.
• Work on tasks supporting the development of more complex components or functions with special requirements within a sprint. Understand the technical interdependencies between stories and support Engineering Manager and Product Owner with sequencing.
• Demonstrate working knowledge of business and domain. Supports Engineering Manager and Product Owner in defining product roadmap and backlog by providing technical input.
• Work in collaboration with other team members on an agile team to analyze user stories, perform task breakdown, and define technical approach and complete committed tasks as per sprint schedule.
• Demonstrate good understanding of using the underlying application development infrastructure and suggest improvements to optimize the infrastructure.
• Participate in the design, architecting and prototyping of applications and significant application upgrades working with more senior agile team members and Engineering Manager.
• Prepare work estimates for committed components with minimal support from senior team members.
• Write unit test plans for committed components. Execute and confirm successful completion of unit tests as part of the criteria for completion. In addition, support unit testing by other team members.
• Contribute to planning and participate in the testing and release of application releases.
• Provide ongoing support for applications already in use. This includes problem diagnosis and resolution, ad hoc reporting support and database administration
• Demonstrate ability to acquire new skills e.g. creating automation tests using selenium, creating UX designs, DevOps, performing functional/ load testing etc. through internal/ external trainings to be a T-Shaped team member helping the team in achieving sprint goals.
• Follow Bain development project process and standards in completing committed tasks and modules and contribute to the continual evolution of processes and standards.
• Write technical documentation as required.
Research(10%)
• Contribute to evaluating and employing new and/or supplemental technologies necessary to deliver functionality for a given software application.
• Contribute to the research and evaluation of new tools and technologies beyond current product requirements that are likely to be used in future initiatives. Help and possibly lead the presentation of findings and recommendations to the full Software Development team.
• Participate in internal skill development by sharing concepts and technologies with the full Software Development team.
Communication (10%)
• Ability to present the technical findings and recommendations to the leadership and Software Development team in general.
• Clearly communicates impediments to completing a story and ensures clear understanding of definition of ‘done’.
• Provide input during sprint retrospective to improve team experience.
• Demonstrate assertion in communication while working with team and stakeholders during crucial conversations.
Technical mentoring (5%)
• Provide technical guidance to junior members. Help create a culture of transparency and sustainability.
Knowledge, Skills, and Abilities
- Frameworks: .NET & .NET Core
- Languages: C#, Python, T-SQL
- Web frameworks/ Lib: Angular, React, JavaScript, HTML, CSS, Bootstrap, etc.
- RDBMS: Microsoft SQL Server
- Cloud: Microsoft Azure Services
- Unit testing: XUnit, Jasmine, etc.
- DevOps: GitActions
- Search engine: Elasticsearch, Coveo, etc.
- NoSQL databases: MongoDB, Cosmos, etc.
- Caching: Redis, MemCache
- Additional experience in GenAI/OpenAI is a plus
Experience & Qualifications
- Bachelor’s or equivalent degree
- 2-7 years of experience
- Demonstrated knowledge of agile software development methodologies and processes
- Understanding of core architecture of the product and ability to suggest new technologies and approaches as per the product vision.
- Ability to deliver the assigned work independently with Zero D.
- Demonstrated record of strong performance in prior software development positions,
- Strong communication and customer service skills
- Strong analytic and problem-solving skills