Associate Software Engineer

Be among the first applicants.
Canonical
Dubai
AED 120,000 - 200,000
Be among the first applicants.
Yesterday
Job description
Roles and responsibilities
  • Proactively collaborate within and contribute to design, architecture, and feature-selection for solutions across distributed teams
  • Write high-quality, API-first Python code with unit tests
  • Debug issues and produce high-quality fixes
  • Review code produced by other engineers
  • Work from home with global travel 2 to 4 times a year for internal and external events

Who you are

  • You love technology, working with brilliant people, and solving interesting problems
  • You are a strategic thinker
  • You are curious, flexible, articulate, and accountable
  • You value soft skills and are passionate, enterprising, thoughtful, and self-motivated
  • You have a Bachelor's or equivalent in Computer Science, STEM or similar degree
  • You have proficiency delivering robust code to production, preferably written in Python.
  • You have experience and enjoy maintaining and improving large and mature web applications.
  • You have experience with databases, ORMs (PostgreSQL a plus), data management, and data modelling.
  • You have an interest in, or experience with, integration, infrastructure and operations.
  • You believe that robust security requires conscious efforts at every stage of delivery.
  • You have familiarity with Ubuntu as a development and deployment platform.
  • You have a solid understanding of the structure of various software packaging systems, including Debian/Ubuntu packages.

1. Software Development

  • Coding and Implementation: Write clean, maintainable code for new features or bug fixes under the guidance of more senior engineers. Typically, this includes using programming languages like Java, Python, JavaScript, C++, or others, depending on the project and technology stack.
  • Collaborating on Design: Contribute to the design of new features or solutions, working with senior engineers to ensure alignment with system architecture and technical specifications.
  • Code Reviews: Participate in code reviews, offering constructive feedback to peers and learning from feedback received on your own code.
  • Bug Fixing: Debug and resolve issues, following best practices for testing and troubleshooting in the development process.

2. Testing and Quality Assurance

  • Unit Testing: Write unit tests to ensure the correctness and functionality of the software, ensuring that individual components or modules work as expected.
  • Automated Testing: Contribute to the creation or maintenance of automated tests that help ensure the reliability and performance of the software.
  • Testing Documentation: Document test cases and test results, reporting any bugs or issues to senior engineers for further analysis.

3. Collaboration and Communication

  • Team Collaboration: Work with other software engineers, product managers, and designers to implement features or fix issues. Regularly attend team meetings to discuss progress, blockers, and upcoming tasks.
  • Cross-functional Communication: Communicate with team members to clarify requirements, resolve issues, and provide updates on work progress.

4. Learning and Skill Development

  • Continuous Learning: Participate in training, mentorship, and learning opportunities to improve technical skills, programming knowledge, and software development best practices.
  • Following Best Practices: Learn and apply industry best practices in coding, testing, version control, and other aspects of software engineering.

5. Documentation

  • Code Documentation: Write and maintain clear documentation for code, including comments and explanations of key logic or components.
  • Technical Documentation: Contribute to or create user guides, release notes, or system documentation as needed to support other teams or users.

Desired candidate profile

1. Programming Languages

  • Core Languages: Proficiency in one or more programming languages, such as Java, Python, C++, JavaScript, or others, depending on the company’s tech stack.
  • Frameworks and Libraries: Familiarity with frameworks and libraries relevant to the role, such as React, Angular, Django, Spring, or Node.js.

2. Software Development Practices

  • Version Control: Experience with version control systems, particularly Git, to manage code changes and collaborate with other developers.
  • Agile Methodologies: Basic understanding of Agile development practices (Scrum, Kanban) and participating in sprint planning, stand-ups, and retrospectives.

3. Problem-Solving

  • Algorithms and Data Structures: Knowledge of common algorithms and data structures, as well as the ability to apply them in real-world scenarios to optimize performance.
  • Debugging and Troubleshooting: Ability to debug code and resolve issues in a logical and methodical way.

4. Software Testing

  • Unit and Integration Testing: Familiarity with testing practices such as writing unit tests, integration tests, and understanding testing frameworks (e.g., JUnit, Mocha, pytest).
  • Test-Driven Development (TDD): Exposure to TDD concepts and practices is often a plus.

5. Database and Storage

  • SQL/NoSQL Databases: Basic knowledge of working with databases (e.g., MySQL, PostgreSQL, MongoDB) and writing queries to interact with them.
  • Data Modeling: Basic understanding of how to design and model data for efficient storage and retrieval.

6. Soft Skills

  • Communication: Strong verbal and written communication skills to articulate technical concepts and collaborate with team members.
  • Teamwork: Ability to work effectively in a team environment, helping and supporting others, and contributing to team success.
  • Time Management: Ability to manage time effectively, prioritize tasks, and meet deadlines with guidance from senior engineers.
Get a free, confidential resume review.
Select file or drag and drop it
Avatar
Free online coaching
Improve your chances of getting that interview invitation!
Be the first to explore new Associate Software Engineer jobs in Dubai