Description
POSITION DESCRIPTION:
Qcells is looking for an junior python engineer who can support development of the simulations platform. The simulations platform is an essential part of Qcells software stack, allowing analysts and data scientists to replicate results from production software over years-long horizons to provide estimates to customers, conduct analysis and benchmark algorithms. This position sits under the Qcells digital solutions center software engineering team.
You are a motivated self-starter that thrives in a dynamic start-up environment. A strong work ethic with excellent problem-solving skills is equally important to being a team player who enjoys to learn and teach.
RESPONSIBILITIES
- Develop, maintain and add features to the simulations platform in Django/Python and related frameworks: You will be responsible for building and improving a platform, typically a web application, that simulates certain processes or systems. This will involve using the Django framework (which is built on Python) and integrating other relevant technologies to add new features, fix bugs, and enhance performance. For example, if the simulation platform models energy usage or storage, you would work on creating, testing, and implementing new algorithms, data models, or features to improve the simulation accuracy.
- Support the data analytics team: You'll collaborate with the data analytics team to help them access and manipulate the data they need for analysis. This could involve writing efficient Python code to extract, clean, or process data, or possibly building APIs for them to interact with the data.
- Convert algorithms into robust services: You’ll take the mathematical or business algorithms that exist in research or prototype form and turn them into working, scalable services. This could involve transforming a Python script into a full-fledged service (API, microservice) that can be deployed in a production environment.
- Follow software engineering best practices: This refers to adhering to industry-standard practices for writing software. It includes things like writing clean and maintainable code, following design principles (e.g., DRY, SOLID), using version control systems like Git, performing code reviews, and ensuring that code is well-tested before it is released.
- Work collaboratively in a diverse environment: You will be working in a team with people from different backgrounds and with varied skills. The focus will be on collaborating effectively, communicating clearly, and learning from each other. Emphasizing respect for differing opinions and finding constructive ways to solve problems is key.
- Gain in-depth experience in an exciting industry: The company works in the energy sector, and the platform you'll be working on is related to energy storage, financial modeling for energy usage, energy tariffs, and monitoring of storage systems. You will gain hands-on experience in this rapidly evolving industry, learning how technology is applied in real-world energy solutions.
REQUIRED QUALIFICATIONS
- BS or higher degree with 1-2 years of relevant experience: A Bachelor’s degree in Computer Science, Engineering, or a related field is required. You should have around 1 to 2 years of experience in software development, particularly with Python, Django, and related frameworks.
- Designing software systems: You will need to have basic experience in designing services that are scalable, efficient, and maintainable. This might include defining how different components of the system interact with each other, the databases, and external services.
- Writing clean, maintainable, thoroughly tested, and shippable production Python (3.9+) code: Writing Python code that is well-structured, easy to understand, and has clear documentation is crucial. Additionally, the code should be thoroughly tested (unit tests, integration tests) to ensure it functions correctly and can be safely deployed to production.
- Experience querying and designing databases for structured data: You should have experience with databases (e.g., MySQL, PostgreSQL) and be able to design database schemas and write efficient queries to retrieve and manipulate structured data. Understanding of normalization, indexing, and optimizing queries is important.
- Expertise in software engineering best practices (design patterns, OOP, data structures): This includes knowledge of Object-Oriented Programming (OOP), which helps in structuring code in a way that is reusable and modular. Design patterns (like Singleton, Factory, Observer) help in solving common design problems. Understanding fundamental data structures (arrays, linked lists, trees, graphs) and how to use them efficiently is also essential.
- Hands-on microservice experience: A microservice architecture allows for the development of small, independent services that can interact with each other via APIs. This is important for scalability and maintainability. You should be comfortable developing microservices and deploying them, typically with Docker and Kubernetes.
- Strong Objected oriented programming skills: Deep understanding and practical application of OOP principles such as encapsulation, inheritance, polymorphism, and abstraction. You’ll apply these principles in the development of the platform, writing clean, modular code.
- Good knowledge of Software design patterns: Familiarity with common software design patterns such as MVC, Observer, Factory, Singleton, etc., is critical. These patterns solve common problems in software design, making your codebase easier to understand and maintain.
- Experience in RDBMS and ORM frameworks like SQLAlchemy: Experience with Relational Database Management Systems (RDBMS) like MySQL, PostgreSQL, or SQLite, and using Object-Relational Mappers (ORMs) like SQLAlchemy to interact with databases through Python code. This allows you to work with the database without writing raw SQL.
- RabbitMQ (MQTT and AMQP): Knowledge of message queuing systems like RabbitMQ, which allows for reliable communication between services (using protocols like MQTT or AMQP). This is commonly used in microservice architectures to decouple services and handle asynchronous processing.
- Docker and Kubernetes: Familiarity with Docker for containerization and Kubernetes for orchestrating and managing containers in a production environment. These tools are essential for deploying and scaling microservices.
- Backend development experience for web applications in Django, Flask: Experience with backend frameworks such as Django or Flask, both of which are Python-based frameworks used to develop web applications. Django is typically used for more extensive applications, while Flask is a lighter framework often used for simpler services or microservices.
- Experience with maintaining products that are in production: Maintaining live, production-level software systems is an essential skill. This includes bug fixes, performance optimization, security updates, and responding to issues that arise in the live environment.
- Willingness to learn and adapt in the rapidly growing energy industry: The energy sector is evolving quickly with new regulations, technologies, and opportunities. You should be eager to learn, adapt, and stay updated on trends and innovations in the field.
Hanwha Q CELLS America Inc. (“HQCA”) is a Qcells company, one of the world’s largest manufacturers and providers of solar photovoltaic (PV) products and solutions. Headquartered in Irvine, California, HQCA has been rapidly expanding its business in North America through the expansion of products and solutions, including distributed energy solutions, direct-to-homeowner solar sales and financing, and EPC services. We provide an opportunity to be part of an exciting and growing world-class global business in an interesting and expanding industry of the future.
PHYSICAL, MENTAL & ENVIRONMENTAL DEMANDS: To comply with the Rehabilitation Act of 1973 the essential physical, mental and environmental requirements for this job are listed below. These are requirements normally expected to perform regular job duties. Incumbent must be able to successfully perform all of the functions of the job with or without reasonable accommodation. |
Mobility | Standing | 20% of time | Sitting | 70% of time | Walking | 10% of time | Strength | Pulling | up to 10 Pounds | Pushing | up to 10 Pounds | Carrying | up to 10 Pounds | Lifting | up to 10 Pounds | Dexterity (F = Frequently, O = Occasionally, N = Never) | Typing | F | Handling | F | Reaching | F |
| Agility (F = Frequently, O = Occasionally, N = Never) | Turning | F | Twisting | F | Bending | O | Crouching | O | Balancing | N | Climbing | N | Crawling | N | Kneeling | N | | | | | | | |
|
The salary range is required by the California Pay Transparency Act and may differ depending on the location of those candidates hired nationwide. Actual compensation is influenced by a wide array of factors including but not limited to, skill set, education, licenses and certifications, essential job duties and requirements, and the necessary experience relative to the job’s minimum qualifications.
*This target salary range is for CA positions only and should not be interpreted as an offer of compensation.
You may view your privacy rights by reviewing Qcells'
Privacy Policy or by contacting our
HR team for a copy.