In charge of leading the development work team and making technical contributions to the development of projects. In addition, is responsible for ensuring that the needs of the client and the organization are met by establishing a fluid and continuous communication, implementing best practices and ensuring the fulfillment of the established development process, without neglecting the concept of continuous improvement and the constant professional development of the people he/she leads.
Responsibilities:
• Identify and meet the information needs of both stakeholders and team members.
• Ensure that the team works on the development of the deliverables required for the project with the expected quality.
• Ensure that the equipment keeps the code tests up to date with the changes made by the developed components.
• Determine data storage, processing and transmission needs according to analyzed requirements.
• Ensure that the equipment meets agreed development standards and processes.
• Analyze the high-level requirements of the project and collaborate in the definition and analysis of the specific requirements.
• Along with the rest of the team, define the development process.
• Coordinate with the person in charge of architecture or practice leader the definition of development standards based on design principles and best practices to ensure the fulfillment of non-functional requirements of quality, efficiency and maintainability.
• Perform knowledge transfer to other members of the project team and client vendors.
• Lead the analysis of defects in the system to find their causes and correct them.
• Lead the process of analysis of project requirements.
• Design and implement unit, integration and system testing.
• Direct the design of software components integrated into the system under construction or maintenance that implement the analyzed requirements.
• Participate in the implementation of these components.
• Lead and participate in estimating the effort needed to implement the analyzed requirements.
• Direct and implement the integration of developed components with the rest of the system (Front End – Back End integration, APIs).
• Be a reference for the team in peer review of the code of their teammates (peer review).
• Define and follow processes and standards for handling code in repositories.
• Verify the fulfillment of the requirements and the correct functioning of the components developed as specified.
Requirements:
• Advanced knowledge in:
• Object-oriented, functional, procedural and asynchronous programming paradigms.
• Software engineering processes (development cycle and quality control).
• Participation in agile software development methodologies: SCRUM, Kanban, among others.
• Software quality assurance (unit and integration testing).
• Design patterns.
• Development best practices to ensure efficiency, quality and maintainability.
• Best practices and mechanisms for deployment.
• Security, authentication and authorization mechanisms.
• Integration of services and software components.
• Error handling.
• Internationalization and accessibility.
• Responsive Design.
• Real-time data management.
• Configuration management.
• Experience with systems based on micro services.
• Multitenancy.
• Processes / background / jobs / attendance / Messaging (queues, bus, subscriber).
• Documentation (design diagrams, README.md, API, wiki, etc.)
Languages:
• Advanced knowledge of at least two of the following languages: Java, Spring, Hibernate, React.
• Advanced knowledge of markup languages: HTML, XML, JSON, YAML.
• Knowledge of CSS and processors such as SASS/LESS
• Knowledge of SQL language.
• Experience with at least 2 modern application development frameworks: NodeJs, Express, NestJS, Spring, Rails, NextJS, Django, Flask, .Net Core, React, Angular, Vue, or similar.
Tools:
• Advanced POSIX shell handling.
• Relational and non-relational databases. (Postgres, MySQL, Mongo, Firebase, Dynamo DB).
• Code management tools (Source Control).
• Dependency management tools such as NPM, Yarn, Maven, Gradle.
• Build Managers such as Grunt, Gulp, Webpack, Maven, Gradle.
• Precompilers such as Babel, TypeScript, CoffeeScript and Flow.
• Tools for managing continuous integration processes such as Travis, Jenkins and CircleCI.
• Code management processes in repositories such as GitFlow and GitHub Flow.
• Virtualization and Containerization.
• Experience in cloud computing and its services (AWS, Azure, GCP).
Academic Training:
• Technician or bachelor in Computer Engineering, Computer Science and related, or equivalent level of knowledge demonstrated.
• Certification of Scrum Fundamentals. (desirable)
Language:
• Technical and conversational English level C1 according to the Common European Framework.
Experience:
• Minimum 5 years of experience in software engineering (at least one year as Senior Developer)
• 2 years of experience leading software projects.
Benefits:
• 100% work remote from any part in Costa Rica.
• Digital Nomad.
• Monthly Internet connectivity allowance.
• Private health insurance for employees (90/10), 50% for beneficiaries (spouse and children).
• International Health Insurance.
• Sick days.
• Ergonomic equipment.
• Educational assistance (courses, certifications, books).
• Life insurance for employees.
• $800 referral bonus.
• Personal support through our wellness department.
• Dental and optical insurance.
• Snacks and beverages.
• Meal allowance if you want to work at the office.
Edify is proud to be an equal-opportunity employer committed to diversity and inclusion. We encourage all candidates to apply regardless of their sex, gender identity, sexual orientation, race, color, religion, national identity, disability, age, medical condition, pregnancy, marital status, family status or any other characteristic protected by law.