Job Description
- The Principal Software Engineer handles the most complex software cases, designing, developing, testing and releasing quality software, taking into account industry-level development and documentation practices.
- As a software engineer, you will be working in a team of mixed skills professionals (business analysts, system integration, QA, Ops teams) on innovative solutions for OSS/BSS.
- You will investigate issues by reviewing/debugging code, providing fixes and reviewing changes for operability to maintain existing software solutions.
- You will engage in design sessions with multi-disciplinary teams aimed at shaping the future of our systems.
- You will work in cross-organizational assignments that will include interacting with the Professional Services and Sales teams.
What will you do?
- Design and develop software solutions by studying information needs, checking with users, studying systems flow, data usage and work processes, investigating problem areas, following the software development lifecycle.
- Determine operational feasibility by evaluating analysis, problem definition, requirements, solution development and proposed solutions.
- Document and demonstrate solutions by developing documentation, flowcharts, layouts, diagrams, charts, code comments and clear code.
- Prepare and install solutions by determining and designing system specifications, standards and programming.
- Improve operations by conducting systems analysis; recommending changes in policies and procedures.
- Update job knowledge by studying state-of-the-art development tools, programming techniques and computing equipment, participating in educational opportunities, reading professional publications, maintaining personal networks, participating in professional organizations.
- Protect operations by keeping information confidential.
- Provide information by collecting, analyzing and summarizing development and service issues.
- Accomplish engineering and organization mission by completing related results as needed.
- Support and develop software engineers by providing advice, coaching and educational opportunities.
- Mentor all levels of engineers.
- First and foremost, developing software our users need.
- Collaborate with team to brainstorm and create new products.
- Grow engineering teams by interviewing, recruiting and hiring.
- Make informed decisions quickly and taking ownership of services and applications at scale.
- Work collaboratively with others to achieve goals.
- Be a persistent, creative problem solver.
- Remain cool and effective in a crisis.
- Stay on the leading edge of development practices.
- Passionate about great technologies, especially open source.
- Understand business needs and know how to create the tools to manage them.
Mandatory Qualifications:
- More than 10 years developing software using Java (Spring/Spring Boot, Microservice architectures, REST) or .NET (Dynamics CRM experience would be a plus).
- Experience working with Cloud solutions (GCP, AWS, or Azure) and Containers (Kubernetes, Docker)
- Experience designing the software architecture of mission-critical enterprise systems.
- Should possess excellent debugging skills, should be able to analyse threads dumps, GC, Memory leaks.
- DB Knowledge: Oracle, MySQL, PostgreSQL, Redis, NoSQL Engines.
- Unit and Integration tests experience.
- Excellent OOP skills.
- Experience working with CICD, GIT, Jira, Jenkins.
- Excellent communication in English.
- Knowledge of Agile methodology.
- Very good soft skills, Teamwork and adaptability to challenges.
Optional Qualifications:
- Experience in Telecom solutions (Protocol Handlers, OSS, BSS, Billing, Charging, CDR Mediation) would be a plus.
- Knowledge of 3GPP standards, 3G, 4G Architecture and Technologies.