Backend Software Developer
Posted Updated
Description
Responsibilities:
- Develop and Maintain Backend Applications: Design, build, and maintain high-quality, scalable backend applications using Python, ensuring robust functionality and performance.
- Design and Optimize APIs: Build and secure RESTful APIs using FastAPI, Sanic, or Django, implementing best practices for scalability and security.
- Implement Asynchronous Programming: Leverage asyncio and aiohttp for asynchronous operations, enabling efficient handling of concurrent tasks.
- Database Management: Create and optimise SQL queries, manage databases using Django ORM or SQLAlchemy, and ensure smooth migrations and indexing for improved database performance.
- Integrate Cloud Services: Deploy and manage services on AWS, using EC2, S3, RDS, and Lambda, and utilise CloudWatch for application monitoring.
- Collaborate with CI/CD Pipelines: Integrate code with CI/CD pipelines in Jenkins, GitLab CI, or AWS CodePipeline for continuous deployment and automated testing.
- Testing and Debugging: Write unit, integration, and functional tests with PyTest or unittest, and use debugging tools like pdb and Sentry to track and resolve issues.
- Ensure Code Quality and Version Control: Utilise Git for version control, participate in code reviews, and maintain a collaborative environment with the development team.
- Stay Updated on New Technologies: Continuously learn about the latest trends in Python development, cloud computing, and backend best practices to enhance development efficiency.
Requirements:
- Bachelor's degree in computer science, Software Engineering, or a related field.
- 2 - 4 years of experience in backend development with Python.
- Strong knowledge of web frameworks, databases, and API development.
Core Development Skills:
Python Proficiency:
- Core Python: Strong understanding of Python syntax, data structures, and built-in libraries.
- Object-Oriented Programming (OOP): Proficient in OOP principles, including inheritance, encapsulation, polymorphism, and design patterns.
Web Frameworks:
- FastAPI: Skilled in building asynchronous APIs with FastAPI, including using dependency injection, request validation, and async programming.
- Sanic: Experience with Sanic for building high-performance, asynchronous web applications.
- Django: Proficient in full-stack development with Django, including ORM, middleware, and Django REST Framework for API development.
Database and SQL:
- SQL Proficiency: Strong command of SQL for managing and optimising relational databases like PostgreSQL and MySQL.
- ORM: Experience with Django ORM and SQLAlchemy for streamlined database interactions.
- Database Optimisation: Skilled in optimising SQL queries, managing indexes, and handling database migrations.
AWS and Cloud Services:
- AWS Services: Hands-on experience with EC2, S3, RDS, Lambda, and CloudWatch for deployment, storage, and monitoring.
- Serverless Architectures: Familiar with building and deploying serverless applications using AWS Lambda.
API Development and Integration:
- RESTful APIs: Proficient in designing, building, and securing RESTful APIs using frameworks like FastAPI, Sanic, and Django.
- Authentication/Authorization: Experienced with OAuth, JWT, and session-based authentication mechanisms.
Asynchronous Programming:
- Asyncio and Aiohttp: Skilled in Python's asynchronous capabilities, especially within web frameworks.
- Concurrency: Knowledge of concurrent operations using async/await, threading, and multiprocessing for efficient task management.
Version Control and CI/CD:
- Git: Proficient in Git for version control and collaborative development.
- CI/CD Pipelines: Experience in setting up CI/CD pipelines with Jenkins, GitLab CI, or AWS CodePipeline for automated testing and deployment.
Testing and Debugging:
- Unit Testing: Knowledgeable in testing frameworks like PyTest and unittest for unit, integration, and functional testing.
- Debugging Tools: Familiar with debugging tools like pdb, logging, and Sentry for efficient error tracking and monitoring.