About the Position
Appko is seeking a highly talented and self-driven C++ Senior Python Engineer to spearhead the transformation of our client's operational efficiency. The ability to build full stack applications / tools for internal software engineering teams. This is an exceptional opportunity for an experienced C++ and Python expert to independently architect and develop innovative internal tools. You will be instrumental in automating and visualizing currently manual processes, directly driving significant gains in team output and providing critical, actionable insights across the organization. As a key contributor to our Software Engineering team, you will be empowered to deliver impactful solutions with minimal oversight.
As a Senior Python Engineer on the Appko team, you will be instrumental in the success of a key client by focusing on a specific, high-impact project. You'll be responsible for developing critical tools and automation that directly address their evolving needs.
Desired Skills
C++ Python
Potential Responsibilities:
A software developer with C++ and Python skills might be involved in a variety of tasks, including:
- Developing high-performance backend systems using C++.
- Building web applications and APIs using Python frameworks.
- Implementing data analysis and machine learning models in Python.
- Creating cross-platform applications leveraging the strengths of both languages (potentially using tools like Pybind11 to bridge C++ and Python code).
- Optimizing existing software for performance and efficiency, potentially identifying bottlenecks in Python and rewriting critical sections in C++.
- Working on embedded systems or IoT devices where C++ is often used for low-level control and Python for higher-level logic or scripting.
- Developing tools and automation scripts in Python to support development and deployment processes.
- Contributing to the design and architecture of software systems.
Core Python & Backend Expertise:
- Advanced Python Proficiency: Demonstrated mastery of Pythonic principles, design patterns, concurrency (asyncio, threading, multiprocessing), and metaprogramming. Comfortable utilizing advanced features such as decorators, context managers, and generators to write elegant and efficient code.
- Strong Backend Framework Knowledge: Extensive experience with at least one major Python web framework (Django or Flask), including a thorough understanding of its architecture, ORM, routing, middleware, and templating systems. Proficiency in both frameworks is highly valued.
- Database Mastery: Proven ability to design, implement, and effectively interact with diverse database systems (e.g., PostgreSQL, MySQL, MongoDB, Redis). Expertise in writing optimized SQL queries, designing robust database schemas, implementing indexing strategies, and managing data migrations. Experience with NoSQL databases is crucial.
- API Design & Development: Expertise in designing and building scalable RESTful and/or GraphQL APIs, adhering to best practices. Proficient in API versioning, authentication (OAuth 2.0, JWT), and authorization mechanisms.
- Testing Prowess: Deep commitment to writing comprehensive unit, integration, and end-to-end tests using frameworks like pytest, unittest, Selenium, and Playwright. A strong understanding of Test-Driven Development (TDD) principles is essential.
- Containerization & Orchestration: Hands-on experience with Docker and container orchestration tools (Kubernetes or Docker Compose) for building, deploying, and managing containerized applications.
- Cloud Platforms: Solid understanding of at least one major cloud platform (AWS, GCP, Azure) and its relevant services (compute, storage, databases, serverless functions).
- Security Best Practices: Comprehensive knowledge of web security vulnerabilities (OWASP Top 10) and proven ability to implement effective mitigation strategies in both frontend and backend code, preventing issues like SQL injection, XSS, and CSRF.
- Caching Strategies: Practical experience implementing various caching techniques (in-memory, Redis, Memcached, CDN) to enhance application performance and scalability.
- Message Queues: Experience working with message brokers (RabbitMQ or Kafka) to build asynchronous and decoupled systems.
Frontend Capabilities:
- Modern JavaScript Frameworks: Solid experience with at least one major modern JavaScript framework/library (React, Angular, or Vue.js), including component-based architecture, state management (e.g., Redux, Context API, Vuex), routing, and build tools (Webpack, Parcel). Strong React skills are highly desirable for tool development due to component reusability.
- HTML, CSS & Responsive Design: Strong foundational knowledge of semantic HTML, CSS (including preprocessors like Sass or Less), and responsive design principles to create adaptable and user-friendly interfaces.
- Frontend Testing: Experience with frontend testing frameworks (e.g., Jest, Mocha, Cypress, Playwright) and the ability to write effective unit, integration, and end-to-end tests for UI components and user interactions.
- UI/UX Principles: A good understanding of fundamental UI/UX principles to contribute to the design of intuitive and effective user interfaces for internal tools.
- Frontend Build Tools: Familiarity with frontend build tools and workflows, including task runners (npm scripts, Yarn), module bundlers (Webpack, Parcel), and code optimization techniques.
- State Management: Understanding of different state management approaches in frontend frameworks and the ability to select appropriate solutions based on application complexity.
- API Integration (Frontend): Proven experience in effectively integrating frontend applications with backend APIs using methods like fetch or libraries such as Axios.
"Tool Building" Acumen:
- Understanding User Needs: Ability to effectively gather and interpret requirements for internal tools by collaborating closely with stakeholders.
- Problem-Solving: Exceptional analytical and problem-solving skills to design and implement effective solutions tailored to specific internal challenges.
- Automation Mindset: A strong inclination towards identifying and implementing automation opportunities through the development of internal tools to improve efficiency and productivity.
- User-Centric Development: A commitment to a user-centric approach in the development of internal tools, ensuring practicality and ease of use.
Essential Soft Skills:
- Communication: Excellent written and verbal communication skills to clearly articulate technical concepts to both technical and non-technical audiences.
- Collaboration: Proven ability to effectively collaborate with senior software engineering teams to gather technical requirements and specifications.
- Adaptability: Ability to quickly learn and become proficient in internal development tools and processes.
Required:
- Distributed/multithreaded computing
- C++ / Python
- Basic web development skills to build web applications for internal tools
- Advanced Computer Science fundamentals (OOAD, design patterns, data structures, algorithms)
- Microservice design and development
- RESTful Web Services development (microservices architecture, C++ APIs)
- Standard development tools (Git, JIRA)
- Agile/Scrum experience
- Collaboration with engineering teams
Desired: Full-stack capabilities. Preferred but not required: Java experience (backend requirements align with Java BE).
Minimum Qualifications:
- Bachelor's degree in Computer Science or a closely related technical field, or equivalent practical experience in developing software solutions.
- At least 10 years of hands-on professional experience in the full software development lifecycle.
- Extensive experience developing applications and tools using Python. Familiarity with C/C++ is advantageous.
Preferred Qualifications:
- Advanced degree (Master's or equivalent) in a technical field such as Computer Science or Engineering. Exceptional candidates with equivalent, demonstrable experience in complex software development will also be considered.
- Experience building and maintaining robust server-side applications and scalable platforms.
- Proficiency in a Unix/Linux development environment.
- Adaptability to learn new programming languages as required for project needs.
- Proven ability to elevate team knowledge through activities like code reviews, mentorship, and technical documentation.
- Experience with verification systems and JIRA workflows
- Experience with Logsim
- Experience with canonical evaluation workflows
Responsibilities:
- Lead the design, development, testing, and deployment of Python-centric backend solutions and microservices specifically designed to automate manual processes. A key aspect of this role involves building the APIs and data pipelines required to effectively present automated results and key performance indicators through engaging and informative web-based dashboards.
- Manage personal workload, adhere to deadlines, and ensure timely delivery of high-quality software.
- Build and maintain core libraries and frameworks to support the development of large-scale internal web applications and automation workflows.
- Contribute to engineering efforts throughout the project lifecycle, from planning to deployment, to solve complex technical challenges.
- Work independently and communicate on a daily basis to key stakeholders for the project.
- Timezone: 9 AM - 2 PM PST. Availability required for meetings with the engineering team. Candidates must possess experience and the ability to work remotely with US clients, with daily working hours overlapping US hours by 3 hours. Reliable high-speed internet and video conferencing capabilities are essential from the remote work location.