Senior Software Engineer - JAVA
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.
Engineering principle: We ship robust, high-quality code, written for humans to read and maintain!
Senior Software Engineer
The Engineering team at Unifonic is looking for an outstanding Senior Software Engineer - JAVA 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 solid experience in Software Development. They should also have practical exposure to queuing tools and cloud hosting tools. The responsibilities of the Staff 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.
- Bachelor’s degree in a related field.
- Hands-on 9+ years of experience in developing complex projects, preferably in the communications domain by using 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.
- Familiarity with software project management tools similar to Agile, Maven, and Git.
- Experienced with using cloud hosting technologies such as AWS.
- Familiar with SaaS and PaaS integration architecture and applications.
- General knowledge in telecommunications (SMSC, VOIP, SMPP, etc...).
- Excellent communication skills.
- Strong problem-solving and analytical skills.