Associate Software Engineer - Curo Core (Remote - Work from Home)

USA
Interactions
ago
remote fulltime ASR Dev NLP

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.

As an associate software engineer on the Curo Engineering team you will have the opportunity to learn, maintain, and extend a robust software platform for speech and natural language processing. With roots reaching to the original speech recognition systems and innovations to the present day, the Curo NLP system is a highly scalable, customizable processing engine for natural language that processes millions of utterances per day. Your responsibilities will include implementation of new NLP features in C++ and python, performing unit and integration testing, testing for performance, building releases and providing support to the users of the Curo system. This role provides an excellent opportunity to learn and understand machine learning algorithms and concepts and to implement high efficiency code in an elegant architecture.

Job Responsibilities

  • Understanding of operating system facilities such as processes and threads, inter-process communication, memory management, file systems, networking with common protocols (TCP/IP, UDP), etc.
  • Understanding of Python and C++ as well as procedural languages like C.
  • Build and deployment concepts like continuous integration and testing, compilation, libraries, cross-platform compilers, dynamically loaded libraries and shared object libraries.
  • Optimization of software including code profilers, cache systems, memory mapping, and analysis of software system metrics.
  • Software data structures and algorithms: how to implement them, when to use various approaches, leveraging libraries for reuse.
  • Software architecture: maintaining logical breakdowns of subsystems and components, ensuring consistency layers of software, encapsulating subsystems in documented API’s or access points, choosing and adhering to consistent behavioral choices as dictated by the needs of the intended deployment environments.
  • Software configuration management: bundling features in logical units for release, continuous builds/integration and testing, use of version control with tags and branches, release and installation mechanisms, documentation releases and updates, ticket systems for changes.
  • Software integration: specification of interfaces between software subsystems, testing of external interfaces and testing against remote interfaces. Design of data payloads and responses. Knowledge and adherence to standards for data interchange.
  • investigate problems between systems or within systems using experience with diagnostic logs and tools and skills for isolating problem

Qualifications

Required

  • Bachelor degree in computer science or software engineering disciplines
  • Understanding of Linux systems, networking, and system architecture
  • Understanding of operating systems, multiprocessing, asynchronous programming
  • Software design and implementation: C++ and python language programming.

Preferred

  • Experience using git and CI/CD for projects
  • Experience with speech recognition and natural language processing systems
  • Experience with media streaming protocols for audio, video, or chat systems
  • telephony protocols, MRCP, SIP, and media streaming protocols.
  • Experience using testing frameworks to express and execute unit tests and integration tests and to diagnose and fix problems in complex system architectures.
  • Experience implementing and testing distributed systems and multi-site fault tolerant solutions
  • Experience building real-time processing systems
  • Experience with securing software endpoints using SSL, certificates, tokens and other standard techniques
  • Familiarity with construction and deployment or usage of docker containers