We are seeking a highly experienced and passionate Principal Software Engineer responsible for leading the design, development, and maintenance of our core server-side logic and database architecture. The ideal candidate will be pivotal in defining our technical strategy, ensuring high performance, scalability, and responsiveness of our applications, and integrating front-end elements built by co-workers. A solid understanding of front-end technologies is also necessary.
RESPONSIBILITIES
· Lead the integration of user-facing elements developed by front-end developers with server-side logic.
· Write reusable, testable, configurable and efficient code.
· Architect and implement low-latency, high-availability, and performant applications.
· Collaborate with cross-functional teams to define, design, and ship new features.
· Identify and correct bottlenecks, and fix bugs.
· Implement robust security and data protection measures.
· Integrate multiple data storage solutions.
· Mentor and guide junior engineers, fostering a culture of continuous learning and improvement.
· Lead code reviews and ensure adherence to best practices.
· Drive the adoption of new technologies and methodologies to improve the development process.
QUALIFICATIONS AND EDUCATION REQUIREMENTS
· 7+ years of experience in software development.
· BS/MS degree in Computer Science, Engineering, or a related subject.
REQUIRED SKILLS
· Strong proficiency with JavaScript/TypeScript.
· Expertise in designing and managing microservices.
· Expertise in NodeJS and its frameworks, such as Express, NestJS, GraphQL, Knexjs, Sequlize.js and Socket.io.
· Expertise in RabitMQ, Redis or Kafka.
· In-depth understanding of SQL and NoSQL databases, such as InnoDB, MongoDB, MS SQL, Postgres, etc.
· Familiarity with Docker and Kubernetes for containerization and orchestration
· Solid experience with cloud services, specifically Azure, for deploying and managing applications
· Strong understanding of writing, integrating, and unit testing using frameworks such as Mocha & Jest.
· Proficient in API documentation using tools like Swagger.
· Comprehensive understanding of accessibility and security compliance.
· Deep understanding of asynchronous programming and its quirks and workarounds.
· Expertise in user authentication and authorization between multiple systems, servers, and environments.
· Solid grasp of fundamental design principles behind scalable applications.
· Knowledge of the differences between multiple delivery platforms (mobile vs. web) and optimizing output accordingly.
· Experienced in creating database schemas that represent and support business processes.
Proficient in using code versioning tools, such as Git.