Senior Software Engineer - Java
Pakistan, Punjab, LahoreEngineering
Unifonic is a customer engagement platform that enables organizations to delight customers with remarkable omnichannel experiences. By unifying communication channels, messaging apps, and chatbots, Unifonic streamlines conversations at every touchpoint throughout the customer journey.
Senior Software Engineer - Java
The Engineering team at Unifonic is looking for a tech-savvy Software Engineer to join our diverse team of developers. In this role, you will be gaining command of the internal workings of Unifonic's existing products and technology, implementing enhancements, supporting bug fixes, performing data analysis, reporting key metrics for Unifonic's platform, and working on the next-generation evolution of the products while using the latest tools and technology within agile scrum teams. The successful candidate should have strong experience in Software Development. They should also have practical exposure to queuing tools and cloud hosting tools. The responsibilities of the Senior Software Engineer include, but are not limited to:
Build and maintain solutions that scale. Serving millions of users every day.
Contribute to building and maintaining the policies, procedures, and technical assets in Unifonic’s cloud infrastructure.
Support various teams with a technical vision in the core areas of interest for Unifonic's products.
Support multi-cloud-based communication products, especially as an augmentation to the internal technology team and working with partners’ software development teams.
Work on cloud-based development and deployment, including the following: AWS (EC2, SQS, S3, RDS, Aurora).
Work closely with service delivery teams to support product deployments to the cloud.
Understand and use Unifonic's technical architectures, tools, and techniques to build powerful, efficient, flexible, and scalable solutions.
Ability to perform basic database administration, performance optimization, index optimization, write advanced select queries, and replace cursor usage with relational SQL.
Collaborate with product owners, scrum masters, and other developers to deliver a quality product using tools such as JIRA and Git.
- Hands-on 3+ years of experience in developing complex projects, preferably in the communications domain, in Java (Spring Framework).
- Hands-on experience in Web Development (HTML, CSS, JS).
- Practical experience in queuing systems/message brokers like ActiveMQ, RabbitMQ, Kafka, Beanstalk, SQS, etc.
- Practical experience with cache technologies such as Memcached, Redis.
- Solid experience in managing Linux servers and applications (Nginx, apache2, etc).
- Proficiency in a Linux environment and in consuming and designing RESTful APIs.
- Solid experience with full Software Development Lifecycle, Distributed Architectures (REST, SOAP, Queue-based), and Microservices Architecture.
Nice To Have
- Bachelor’s degree in Information Technology, Software Engineering, or other related fields.
- Familiarity with software project management tools similar to Agile, Maven, and Git.
- General knowledge in telecommunications (SMSC, VOIP, SMPP, etc).
- Experienced with using cloud hosting technologies such as AWS.
- Familiar with SaaS and PaaS integration architecture and applications.
- Strong problem-solving and analytical skills.
- Excellent communication skills.