Job Description
As a member of one of our Technology teams, you will contribute to building solutions that use natural language processing, cognitive computing, and artificial intelligence applications or the frameworks and infrastructure that support them.
The Principle Software Engineer plays a key role in designing and implementing components and features of the Core platform. The Principle Software Engineer has a leadership role on the Platform team and must work in close collaboration with QA, Research, DevOps, Product Owners, Professional Services, and in some cases third party software vendors. In this role you will be at the center of our
state-of-the-art and patented technology suite where we combine our best of breed AI technologies with human intelligence in real time and in scale.Essential Job Functions*:
- Be a key contributor of a technical team responsible for a massively scalable, highly available SaaS platform.
- Design and develop high-volume, high-performance, high-availability, concurrent Java applications using proven Java, Javascript and Python frameworks and technologies.
- Responsible for troubleshooting and fixing issues.
- Bring new technical ideas, in keeping with latest industry trends, to fruition by prototyping and then incorporating it into the Platform.
- Provide technical leadership for more Jr. level members of the team.
- Participate Lead and participate in daily Scrum activities to closely monitor work against schedules and deliverables, providing progress updates and reporting any issues or technical difficulties.
- Must be able to Participate in on-call rotations.
Preparation, Knowledge, Skills and Abilities:
Required:
- Bachelor’s Degree in Computer Science or similar field.
- Ten to fourteen years of relevant, demonstrable experience including hands-on coding in backend Java and other JVM based languages.
- Must have exposure to Node and Python related technologies.
- Must have experience with designing, building and troubleshooting large scale highly concurrent and multi-threaded/multi-process systems.
- Minimum of six years working on mission critical, 24x7, high performance and scalable systems.
- Minimum of six years working on J2EE and asynchronous messaging based technologies and distributed systems.
- Minimum of four years working on SQL, databases and other persistence technologies using Java.
- Experience working with all phases of the Software Development Lifecycle – ranging from architecture and design to implementatiion and testing.
- Significant and demonstrable experience with test-driven development alongside use of automated test frameworks including Unit and Integration testing.
- Experience working in an environment where products/features/components are delivered within specific time-scales.
- Prior experience with architecture and design of components and features that are part of large enterprise architectures.
- Experience/ability to rapidly and effectively understand and translate product/feature requirements into technical solutions and deliverables.
- Experience with profiling and troubleshooting large scale, concurrent and multi-threaded JVM based languages (Java).
- Must have strong testing, debugging and problem solvingproblem-solving skills.
- Must be able to write concise yet comprehensive and clear technical documentation.
- Strong Must have strong communication skills and the ability to motivate, collaborate and potentially lead a large team with a variety of skills and experience. collaborative and teaming