Senior Software Engineer (Bulgaria)
Overall Job Purpose
Designs, develops, modifies, debugs and/or maintains software systems. Working on one or more specific modules within a large software system scope. Assumes ownership and accountability of specific modules within an application. Serves as an expert on specific modules, applications or technologies, and deals with complex assignments during the software development life cycle.
Software Team Lead
- Engineering – Designs, develops, modifies, debugs and/or maintains software code according to functional, non-functional and technical design specifications. Follows Epsilon software engineering standards, applicable software development methodology and release processes. Ensures code is maintainable, scalable and supportable. Presents demos of the software products to stakeholders and internal/external customers. Uses knowledge of the product/solution and technologies to influence the direction and evolution of the product/solution. Serves as an expert on specific technology.
- Investigation – Investigates issues by reviewing/debugging code and providing fixes (analyzes and fixes bugs) and workarounds, reviews changes for operability to maintain existing software solutions. Highlights risks and helps mitigate risks from technical aspects.
- Analysis – Analyzes requirement and design documents. Performs impact assessment (for example, for critical production issues) and contributes to Root Cause Analysis of issues and outlines corrective actions. Performs scoping work.
- Team Work and Collaboration – Collaborates and adds value through participation in peer code reviews, provides comments and suggestions, and works with cross-functional teams to achieve goals. Serves as the technical focal point with other teams to resolve issues related to interfacing functionalities.
- Technical Ownership – Assumes ownership and accountability of specific modules within an application and provides technical support and guidance during solution design for new requirements, problem resolution for critical / complex issues. Ensures that documentation related to specific modules / applications is correct and up to date. Performs peer code inspection and reviews developed solutions and provide relevant feedback.
- Innovation & Continuous Improvement – Brings continuous improvements/efficiencies to the software or business processes by utilizing software engineering tools and various innovative techniques and reusing existing solutions. By means of automation, reduces design complexity, reduces time to response, and simplifies the client/end-user experience.
- Quality and SLAs – Contributes to meet various SLAs and KPIs as applicable for account and unit – for example, Responsiveness, Resolution, Software Quality SLAs. Ensures assigned tasks are completed on time and delivery timelines are met as per quality targets of the organization.
- Onboarding & Knowledge Sharing – On-boards new hires and trains them on processes, shares knowledge with team members and takes an active role in technical mentoring within the team and elevating the knowledge of the team.
- Communications – Represents/leads discussions related to product/application/modules/team (for example, leads technical design reviews). Builds relationships with internal customers/stakeholders.
- 7-8 years’ experience as a software engineer
- Expert knowledge of programming concepts, patterns and anti-patterns
- Ability to code in multiple programming languages
- Scripting experience in multiple languages
- Expert knowledge of API design best practice
- Knowledge of key security concepts
- Experience working in an agile environment
- Experience of providing and/or consuming APIs
- Experience working with the following technologies is essential:
- MySQL or other relational DBs
- RESTFul APIs
- Experience working with the following is desirable: