Junior Full-Stack / Generalist Software Engineer (f/m/x)

ANNEA - Lisbon, Portugal - original posting ->
Status
Open
Remote policy
Hybrid
Employment type
Not stated
Salary
Not stated
Tech
clickhousemysqlpostgresdockerkubernetesjavascriptpythontypescripthybridfullstackjunior
Source
landingjobs
First observed
2026-10-14 15:51 UTC
Last seen
2026-10-14 15:51 UTC
Source claims posted
2026-10-14 14:35 UTC
Consecutive misses
0 of 3

What the posting says

At ANNEA (Permanent), in Lisbon, Portugal

Expires at: 2027-01-12

Remote policy: Partial remote

THE JOB WE ARE HIRING SOMEONE TO DO

ANNEA runs two production systems for clients in the wind energy industry, each with its own backend, frontend, databases and deployment pipeline. Both need someone who ships backend work day to day, and picks up the frontend and infrastructure work around it.

One of our senior engineers already carries this work across both projects, on top of everything else they do, and their time for it is about to get scarcer for a while. What we need is a second full-time pair of hands who can take over the day-to-day of it, with a proper handover now and growing independence after that, so they can spend the time they do have on the calls only they can make.

THE PROGRESS WE EXPECT

Instead of a list of responsibilities, here is what should be true at three points.

After one month: You can navigate both codebases end to end, backend first, and run, debug and deploy both stacks through the existing pipelines. Small Sentry bugs are yours to fix, not to ask about. You've shipped at least one small backend change on each project. You've also written down what you had to figure out (setup, gotchas, how the services connect), so the handover lives in the docs and not only in our senior engineer's head.

After three months: Our senior engineer has less time to give than in month one, and you've absorbed it: you've shipped self-contained backend features with NestJS on your own, you've created and updated the APIs of both projects, and you're turning client requirements into scoped tasks with only a light review.

After six months: You own meaningful chunks of the backend on both projects without being asked, and you can make small, safe changes to the Timescale, ClickHouse, MariaDB and Postgres databases behind them, and to the CI/CD that ships your own code. You're a real second voice in architecture discussions (data model, caching) not just someone who hears the outcome afterwards.

You will spend most of your time on the backend, with real but smaller amounts of frontend and infrastructure work alongside it: pipelines, dashboards, the databases underneath. You will work closely with the senior engineer who supports both projects part-time and will review your work and make the calls you're not ready to make yet, as well as with the rest of the ANNEA engineering team.

WHO THIS JOB IS FOR

This is a job for someone early in their career who has already done real things, even small ones. People who take a job like this one are usually in one of these situations. If none of them sound like you, this is not the right move.

You are working somewhere that only lets you touch one layer — frontend tickets, or backend tickets, or nothing but tests — and you know from a side project, an internship or your studies that you can do more of the stack than you're allowed to there.

You've used AI tools to ship something in a weekend, the way almost anyone can now, and you already know that's not the same as understanding what you built. You want to close that gap on something with real users, real data and real consequences if it breaks. Not a prompt-to-app project.

You use AI coding tools every day and don't just take what they output at face value. You've caught an agent confidently shipping something broken or insecure, and you want to work somewhere that treats catching that as a real skill, not an inconvenience.

You want backend ownership that goes beyond a ticket queue (real features and data) with enough exposure to frontend and infrastructure to see how your code actually reaches a user, and you'd rather learn that breadth hands-on with support than only from documentation.

WHAT THE DAYS ACTUALLY LOOK LIKE

You will have a lot of days like this:

Fixing a bug that Sentry flagged, from reading the stack trace to shipping the patch.

A backend feature in the morning, a frontend fix or a Docker/CI change in the afternoon.

Turning a client requirement into a concrete, scoped task.

Writing or reviewing a small piece of TypeScript, JavaScript, Python or SQL, depending on which project needs it that day.

Checking a decision you're not sure about with our senior engineer before it goes live, and writing down what you decided and why.

You will have very few days like this:

A single ticket in a single layer of the stack, for any stretch of time.

An architecture decision made entirely without you, that you only hear about afterwards.

Long stretches with no client- or user-visible outcome.

A full day with nobody available to sanity-check a call you're unsure about.

If the second list is the one that gives you energy, you would not enjoy this job.

WHAT YOU NEED TO HAVE DONE BEFORE

We care about what you have done, more than how long you have been doing it.

You have built and shipped something end to end where you wrote the real backend logic yourself and made the infrastructure decisions around it rather than a project an AI builder or PaaS scaffolded and hosted for you. You chose the database, wrote the Dockerfile, set up the deployment. A personal project, a university project, an internship deliverable or a freelance job all count.

You are comfortable in at least one of TypeScript/JavaScript or Python, and can read the other. You know basic SQL: you can write a join and explain what an index is for.

You have used Docker and Git on a real project, and can explain what your Dockerfile and CI config actually do, not just accepted ones an AI or a template wrote for you.

You have used an AI coding tool (Claude Code, Cursor, Codex or similar) enough to have caught it silently producing something broken or insecure, and can describe exactly what it got wrong and how you found it, not just that it "sometimes makes mistakes."

You can point to a decision on something you built that turned out to be wrong, and say what you learned from it.

You would rather ask a question than guess when you're unsure, and you're comfortable being told your first answer was wrong.

Experience with relational or time-series databases (Postgres, MySQL/MariaDB, TimescaleDB, ClickHouse) is a plus, not a requirement.

Energy, industrial or IoT experience is a plus, not a requirement.

THE TRADE-OFFS

Every job switch costs something. Here is what this one costs.

You work two different projects at once instead of going deep in one stack. That means different databases, different languages, different clients. If you want single-stack depth from day one, this isn't that.

Our senior engineer supports you part-time, and for the first few months even that will be lighter than usual. You get review and guidance, not someone sitting next to you all day. Early on, you'll often make the call before you get feedback on it, not after.

The domain is real: wind-farm data has real physics behind it, and both projects handle real client requirements and deadlines. You will have to learn the domain; nobody expects you to arrive already knowing it.

Some of what you will touch (production databases, Hetzner firewalls, Kubernetes at user level) is infrastructure most junior roles don't get near. That's the opportunity, and also why it's reviewed before it goes live.

The role is based in Lisbon, Portugal, with regular time (at the moment 2-3 days/week) in the office in the heart of the city. We are flexible about the details, but we are not remote-first.

WHO WE ARE

ANNEA builds end-to-end software for the renewable energy industry. Our platform enables predictive maintenance and performance optimisation for wind turbines. We combine analytics, machine learning and deep engineering knowledge with a real physical understanding of the assets we work on.

Our vision is to save resources for a more sustainable planet. Our mission is to make renewable energy assets more efficient through predictive maintenance and performance optimisation.

Quality

Completeness: 65%

Not enough history yet to judge honesty signals.

Timeline

  1. *
    #1345146 2026-10-14 15:51 UTC
    Published