Senior Software Engineer - Fullstack
Opportunity
UJET is searching for a Senior Software Engineer (Fullstack) to join our growing team! The ideal candidate is an experienced fullstack engineer who owns epics and features of significant complexity end-to-end across the frontend and backend, and who is meticulous with code style and quality. As a Senior engineer, you will define and execute against timelines, resources, and other constraints, break epics down into tickets, and mentor our L1 and L2 engineers. You are a strong practitioner of AI-driven development — using AI coding tools and agents to accelerate your own delivery while upholding our quality bar.
Responsibilities
Own epics and deliver features, services, and refactors of significant complexity across product software engineering — from ticket breakdown through deployment and post-release validation
Define and execute against timelines, resources, and other constraints, flagging risks and trade-offs early
Break down epics into well-scoped tickets and sequence the work with your team
Become the SME for one or more areas of your team's domain and a dependable go-to person within the team
Design and build fullstack features and services with high availability, low latency, and auto scalability
Author and review technical design documents (TDDs); design service boundaries, data models, and APIs balancing simplicity, performance, and extensibility
Partner with PM, Design, QA, PMO, and SRE through the full software development lifecycle, participating in planning, estimation, and prioritization
Write idiomatic, well-tested code and provide thoughtful code reviews that uphold engineering standards across the codebase
Build and maintain unit, integration, and contract tests; instrument logging, metrics, and tracing so systems are observable in production
Participate in the on-call rotation; triage, mitigate, and document production incidents and drive follow-up actions from postmortems
Identify and pay down technical debt, modernizing legacy code to protect long-term maintainability
Use AI coding assistants and agentic workflows to accelerate delivery, applying our team guardrails and quality standards to anything they produce
Mentor L1 and L2 engineers, contribute to onboarding docs, and share knowledge through brown-bags, internal talks, and architecture reviews
Communicate openly and transparently, and raise the quality of bug tracking and reporting within your team
Requirements
5+ years' experience in software development, with solid fullstack (frontend and backend) development experience and a track record of owning epics or features of significant complexity
You have strong foundational knowledge of modern, distributed computing.
You understand the performance characteristics of the services you own and can reason about them quantitatively.
Working experience around a breadth of datastores including MySQL, NoSQL, Redis or Elasticsearch
Efficiency in software best practice and tools like Git, Docker, CI, 12factor, etc
Experience working within a microservice architecture
Capable of writing optimal code across the stack, including at least one backend language (Java, Go, Ruby, Python) and a modern frontend framework (e.g., React, Angular)
Hands-on proficiency with AI-driven development — AI coding assistants and agentic workflows (e.g., Claude, Copilot, Cursor) — with the judgment to apply them effectively while upholding code quality
Experience mentoring less experienced engineers and collaborating cross-functionally in a fast-paced environment
Bachelor's Degree in Computer Science or equivalent experience
Please note that this position requires 2 days worked in office in Porto, Portugal weekly.
Portugal Hiring Range: €60,000 - €70,000 Annually
*A candidate’s actual placement within this range will depend on geographic location, work experience, education, and/or skill level.
#LI-Hybrid