Roles, Responsibilities and Key Functions:
Analyze together with your team the project requirements.
Estimate together with your team the effort needed to implement the analyzed requirement.
Design and program together with your team the software components that implement the analized requirements.
Verify compliance with the requirements and the correct functioning of the developed components as specified.
Analyze system defects to find their causes and correct them.
Design and implement unit, integration and system tests with the help of the team.
Verify the correct functioning of the code tests and apply corrections where appropriate.
Ensure that code tests are kept up-to-date with respect to changes introduced by the components developed.
Work with your team to determine data storage, processing and transmission needs according to the requirements analyzed.
Document technical and process aspects related to your day-to-day work (technical documentation, report of estimates and timesheets, workflows, etc.).
Integrate the developed components with the rest of the system (frontend and backend integration, among others).
Perform peer review of your teammates’ code.
Follow processes and standards for code management.
Requirements:
Intermediate knowledge in: Object-oriented, functional, procedural and asynchronous programming paradigms.
Software engineering processes.
Concepts and processes related to software quality.
Use of agile software development methodologies (SCRUM, Kanban, etc.).
Software quality assurance (code testing, linting, static code analysis).
Design patterns.
Development best practices to ensure efficiency, quality and maintainability.
Best practices and mechanisms for application deployment.
Security, authentication and authorization mechanisms OWASP Top 10.
Best practices in error handling.
Documentation (design diagrams, README.md, API documentation, etc.).
Integration of services and software components. Internationalization.
REST.Real-time data management.
Multitenancy.
*nix shell handling (bash, sh,zsh,etc.).
Git.Dependency management tools (Gradle, Maven, NPM, Yarn, etc.).
Managing continuous integration processes tools (Github Actions, GitlabCI, etc.).
Git branching strategies (GitFlow, trunk based, etc.).
Use of virtualization (KVM, QEMU, Virtual Box, etc.).
Use of containers (Docker, Podman, runc, etc.).
Cloud computing services (AWS, GCP, Azure, etc.).
Web technologies
HTML
CSS/LESS/SASS
Frameworks (at least one)
Java
Spring
Hibernate
React
Status management (MobX, Redux, Pinia, Signals, etc.)
Testing libraries (at least one)
Jest
Testing Library
Vitest
Cypress
JUnit5
Programming languages (at least one)
JavaScript/TypeScript
Java
Python
Ruby
C#
Go
Implementation platforms (at least one)
Node
JVMC
Python
Ruby MRI (CRuby)
Frameworks (at least one)
Spring & Spring Boot
NestJS
Rails
Django
.Net Core
Data access libraries (at least one)
Spring Data JPA
Spring Data J
DBC
JOOQ
TypeORM
Prisma
SQL
Relational databases. (PostgreSQL, MySQL, etc.)
Non-relational databases. (Redis, MongoDB, ElasticSearch etc.)
Academic Training:
Technician or Bachelor in Computer Engineering, Computer Science and related or level of knowledge demonstrated equivalent.
Language:
Technical and conversational English level B2 according to the Common European Framework.
Work Experience:
Minimum 2 years experience in software engineering.