ScottishPower · Software Engineer
Updated · 2026-10-02

ScottishPower Software Engineer
Interview Guide

THE 60-SECOND BRIEF

As a Software Engineer at ScottishPower, you are at the intersection of critical national infrastructure and digital transformation. Your work directly impacts how energy is distributed, managed, and optimized across the UK. You are not just writing code; you are building the robust, scalable systems required to support the transition to a greener, more sustainable energy future. The role involves navigating high-complexity environments where reliability and security are paramount. Whether you are working on Application Consultancy, Interface Engineering, or Power System Design, your contributions ensure that data flows seamlessly between grid operations and customer-facing platforms. This position offers the unique challenge of modernizing legacy architectures while implementing cutting-edge solutions that drive business efficiency and grid stability.

This guide is scoped to a Software Engineer candidate at ScottishPower.

ScottishPower candidates report 3 rounds over 3-5 weeks. The stages below are what candidates describe, not a published process.

Power System Design (Planning/Architecture)Power Systems Engineering (Domain)Interface Engineering (UI/UX)

19 min read

Browse Software Engineer questions

See the practice prompts

12Practice promptsAcross five skill areas

As a Software Engineer at ScottishPower, you are at the intersection of critical national infrastructure and digital transformation. Your work directly impacts how energy is distributed, managed, and optimized across the UK. You are not just writing code; you are building the robust, scalable systems required to support the transition to a greener, more sustainable energy future. The role involves navigating high-complexity environments where reliability and security are paramount. Whether you are working on Application Consultancy, Interface Engineering, or Power System Design, your contributions ensure that data flows seamlessly between grid operations and customer-facing platforms. This position offers the unique challenge of modernizing legacy architectures while implementing cutting-edge solutions that drive business efficiency and grid stability.

01

Initial Screening

reported

Gauge your background and alignment with the team’s current priorities.

What to demonstrate

  • Gauge your background and alignment with the team’s current priorities
  • Depth in Power System Design (Planning/Architecture)

How to prepare

  • Be able to walk your CV end to end in two minutes, and say why this company specifically.
  • Have your salary expectations, notice period and location constraints ready, and ask for the rest of the loop in writing.
ScottishPower Software Engineer candidate reports ↗
02

Technical Assessments

reported

Discuss your technical approach, problem-solving methodology, and experience with relevant tools.

What to demonstrate

  • Discuss your technical approach, problem-solving methodology, and experience with relevant tools
  • Depth in Power System Design (Planning/Architecture)

How to prepare

  • Answer aloud and timed: How do you approach the testing and validation of software that interacts with physical grid hardware?
  • Answer aloud and timed: What is your strategy for handling data integrity in large-scale distributed systems?
ScottishPower Software Engineer candidate reports ↗
03

Stakeholder Meetings

reported

Meet with key stakeholders to discuss team dynamics and your long-term potential within the organization.

What to demonstrate

  • Meet with key stakeholders to discuss team dynamics and your long-term potential within the organization
  • Depth in Power System Design (Planning/Architecture)

How to prepare

  • Answer aloud and timed: Explain your process for debugging performance bottlenecks in complex applications.
  • Work Power System Design (Planning/Architecture) until you can explain it without notes
ScottishPower Software Engineer candidate reports ↗

PracHub editorial advice for the preparation topics above.

01

Understand the Business

Research how ScottishPower is transitioning to renewable energy; showing an interest in the company’s mission goes a long way.

02

Structure Your Answers

When answering behavioral questions, keep your responses focused and structured to ensure the interviewer can follow your logic.

03

Ask Insightful Questions

Prepare questions about the team’s current technical challenges or the company’s approach to digital transformation.

Choose a category, try a prompt, then open its approach, worked solution or follow-up when you need it.

9 technical prompts0 include a worked solution

Collapse a redelivered event batch into per-aggregate high-water marks

easy
hashingat-least-onceaggregation

You drain a batch of up to 5,000,000 events, each (aggregate_id BIGINT, aggregate_version INT, event_type, payload). The log guarantees order within one aggregate only; the batch merges 64 partitions, and a relay failover has redelivered a range, so an older version for an aggregate can appear after a newer one. Given a map of last_applied_version per aggregate, produce the events worth applying, at most one per (aggregate_id, version), plus the count discarded. Target O(n) time. State the memory for 2,000,000 distinct aggregates and what you do when it does not fit.

Approach
  1. One pass, one hash map from aggregate_id to the highest version kept, and a discard counter. An event whose version is at or below last_applied_version for its aggregate is dropped without further work, which is the whole reason the event carries its version rather than a delta. O(n) expected time, O(d) space in distinct aggregates.
  2. Keep the maximum, never the last occurrence. The redelivered range means the final appearance of an aggregate in the batch can be an older version than one seen earlier in the same batch, so last-wins applies stale state over newer state and the projection regresses with no error anywhere.
  3. Cost the memory instead of calling it large: an 8-byte key plus a 4-byte version is 12 bytes of payload, and an open-addressed table held at a 0.7 load factor costs roughly 17 bytes per entry before per-slot metadata, so 2,000,000 aggregates is tens of megabytes in a native layout and several times that in a runtime that boxes both key and value.
  4. If the distinct set exceeds memory, partition on hash(aggregate_id) mod P and reduce each partition independently. Every event for one aggregate hashes to the same partition, so the per-partition result is exact and the merge is concatenation rather than a second reduction.
Follow-up
  • The payload is a patch rather than a snapshot, so applying only the highest version loses the intermediate changes. What changes in your reduction?
  • How do you detect that version 7 arrived while version 6 was never delivered, and what should the consumer do about the gap?

Identify the heaviest tenants in a five-minute window under memory pressure

medium
top-kheavy hittersstreaming

The edge service handles about 3,000 requests per second across roughly 50,000 tenants, peaking near 9,000. Expose the 50 heaviest tenants by request count over the trailing five minutes so limits can be tightened before one tenant's backfill starves the fleet. You may not retain five minutes of raw records. Give the exact solution and its memory, then the bounded-memory approximation with its error stated as a formula, and say which you would ship and at what tenant cardinality that choice changes.

Approach
  1. Do the exact version first, because it is affordable at this cardinality: a ring of 300 one-second counters per tenant, advanced lazily, is 1,200 bytes of counters per tenant and roughly 60 to 90 MB for 50,000 tenants with overhead. Carry a running total and subtract the bucket you overwrite so a window read is O(1) rather than 300 adds.
  2. Extract the top 50 with a size-k min-heap over the tenant sums: O(d log k) for d tenants, against O(d log d) to sort them all. Maintaining the heap continuously instead of on query requires a tenant-to-heap-index map, because incrementing a count already inside the heap means sifting from a known position, and without that map you rebuild the heap on every request.
  3. State the approximation precisely rather than gesturing at sketches. Misra-Gries with m counters retains every item whose true count exceeds N/(m+1), and each retained count underestimates the truth by at most N/(m+1). With m = 1,000 and N = 900,000 requests in the window the error is roughly 900 requests, which is fine for spotting a tenant sending 50,000 and useless for ranking two tenants 200 apart.
  4. Say what breaks when the window slides: Misra-Gries and Space-Saving are insert-only and cannot be decremented as records age out. The workable construction is one summary per sub-window, say ten seconds, with 30 summaries merged at query time, and the merged error is the sum of the per-summary errors, so the bound degrades linearly in the number of sub-windows.
Follow-up
  • The heaviest tenant is heavy because of one export job rather than user traffic. Should the limiter treat those as the same tenant?
  • Two tenants sit tied at the boundary of the top 50. Does your answer flap, and does the flapping matter?

Canonicalise a request body into a stable idempotency fingerprint

medium
parsingcanonicalisationhashing

idempotency_key.request_fingerprint is a SHA-256 over the method, path and canonicalised body, and a retry whose fingerprint differs must be rejected with 422 rather than served the stored response. Write the canonicaliser. Bodies are JSON up to 256 KB nested at most 32 levels; clients vary key order, whitespace and unicode escaping, and some send 64-bit ids as JSON numbers. Produce a deterministic byte string such that semantically identical bodies match and any semantic difference does not. State your complexity and name two normalisations you refuse to perform.

Approach
  1. Parse once into a tree, then re-serialise under fixed rules: object keys sorted, array order preserved, one escaping convention, no insignificant whitespace. Parsing is O(n) and sorting keys is O(k log k) per object, so O(n log n) overall with O(depth) stack, and the 32-level cap is enforced during parsing because hostile nesting is how a canonicaliser becomes a stack overflow.
  2. Sort keys by their UTF-8 bytes and say why the obvious implementation is wrong in some runtimes: a default string comparison that orders by UTF-16 code units places surrogate pairs, meaning code points from U+10000 up, below U+E000 to U+FFFF, which is not UTF-8 byte order, so two services written in different languages disagree on the same document.
  3. Do not re-encode numbers through a double. IEEE-754 binary64 represents integers exactly only up to 2^53, so normalising a 19-digit id through a float changes it, and 1 against 1.0 cannot be reconciled without deciding whether they are the same value. Preserve the literal token, and require ids as strings at the API boundary if you want them comparable.
  4. Reject duplicate keys rather than picking one. JSON permits them and parsers disagree, most keeping the last, so any choice you make ties the fingerprint to a parser detail that the code handling the request does not necessarily share.
Follow-up
  • A client sends the same logical request with an extra field your API ignores. Same key, different fingerprint, so you return 422. Is that the right answer?
  • Where does the fingerprint get computed relative to request decompression and the body-size limit?

Built from the rounds and topics ScottishPower candidates report.

Small steps. Visible outcomes.0 / 7 completed
ONE WEEK · YOUR PACE

Prepare, practise & reflect

One practical outcome each day. Spend longer where you need it.

0 / 7 done
01Map the ScottishPower loop
  • Write out the reported sequence: Initial Screening, Technical Assessments, Stakeholder Meetings.
  • For each round, write one sentence on what it is judging, from the description above, and mark the one you are least ready for.

Deliverable: A one-page map of the 3 reported rounds, with the weakest marked.

02Work Power System Design (Planning/Architecture)
  • Spend the session on Power System Design (Planning/Architecture), which ScottishPower candidates report being tested on.
  • Write one worked example in Power System Design (Planning/Architecture) and time yourself on it.

Deliverable: One timed worked example in Power System Design (Planning/Architecture).

03Work Power Systems Engineering (Domain)
  • Spend the session on Power Systems Engineering (Domain), which ScottishPower candidates report being tested on.
  • Write one worked example in Power Systems Engineering (Domain) and time yourself on it.

Deliverable: One timed worked example in Power Systems Engineering (Domain).

04Work Interface Engineering (UI/UX)
  • Spend the session on Interface Engineering (UI/UX), which ScottishPower candidates report being tested on.
  • Write one worked example in Interface Engineering (UI/UX) and time yourself on it.

Deliverable: One timed worked example in Interface Engineering (UI/UX).

05Answer out loud: Technical and Domain Knowledge
  • Answer aloud, timed: How do you ensure high availability and reliability in mission-critical software systems?
  • Answer aloud, timed: Can you describe your experience with integrating legacy systems with modern cloud-based interfaces?

Deliverable: Spoken answers to 2 reported Technical and Domain Knowledge question(s), under time.

06Rehearse your own examples
  • Prepare three examples from your own work where you made the decision, each with the outcome you can quantify.

Deliverable: Three examples written out, each with a number attached.

07Dry run for ScottishPower
  • Run one full mock under time, then write down the two questions you most want to ask your interviewers.

Deliverable: A completed timed mock and two questions to ask.

Expand any day for tasks and deliverables. Your progress is saved on this device.

Behavioural rounds judge the decision you made and what it cost.

Can you describe your experience with integrating legacy systems with modern cloud-based interfaces?

medium
Technical and Domain Knowledge

Can you describe your experience with integrating legacy systems with modern cloud-based interfaces?

Approach
  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.
Follow-up
  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

Tell callers you do not own that their integration breaks

medium
deprecationcompatibilitystakeholders

A field in a write endpoint's response must change shape. You own the endpoint; you do not own the four internal callers or the outbound webhook consumers who read it. Describe a deprecation you were responsible for: what you shipped first, how you established who was actually reading the field, the window you gave and what set its length, what you did about the consumer who never moved, and how you decided removal was safe. Name the signal you used, not the announcement you sent.

Approach
  1. Establish the reader set empirically rather than from a wiki of owners: per-field usage counters keyed by principal, or access logs attributed to a consumer. State the blind spot of whichever you pick, since a consumer that reads the field only on a monthly job will not appear in a week of logs.
  2. Ship additive first. Populate the new field alongside the old one so no reader is forced to move, which is also what keeps a rolling deploy safe, because old and new instances answer the same requests at the same time and a rollback must still find the old shape present.
  3. Set the window from the slowest legitimate consumer's release cadence, not from your calendar, and decide separately what to do for a consumer with no release process at all, such as an external webhook endpoint you can only email.
  4. Convert silence into evidence before you rely on it: a short, low-traffic removal window that makes a still-dependent consumer fail visibly and loudly while you are watching, rather than at three in the morning after you have moved on.
Follow-up
  • How would you detect a consumer that reads the field only during a monthly export?
  • One caller refuses to move and has a commercial relationship behind it. What changes in your plan and what does not?

Argue against a design, lose, and commit anyway

medium
disagreementservice boundariesdecision records

Describe a design you argued against and lost. State the failure you predicted as a named mechanism, not a feeling about complexity: two services that would need one transaction, a projection with no rebuild path, a write path with no idempotency key. Say what evidence you brought, what the decision maker weighed instead, and what you did after the decision was made: what you instrumented, what you wrote down, and whether the prediction came true. Five minutes.

Approach
  1. State the prediction in falsifiable form up front: the mechanism, the condition that triggers it, and the observable outcome. A prediction that cannot be checked also cannot be credited to you later.
  2. Show the evidence you had at the time and label each piece honestly as measured, analogous, or intuition. Keeping the intuition is fine; disguising it as data is the thing that erodes your standing in the next argument.
  3. Represent the opposing case at full strength, including the constraint you did not control: a fixed date, a team boundary, or the fact that the decision was cheap to reverse and yours was not.
  4. Make disagree-and-commit concrete. Name the artefact you left behind so the prediction could be settled without you: the alert and its threshold, the counter on the dashboard, the decision note that recorded the trade-off and the condition that would revisit it.
Follow-up
  • What threshold on that alert would have proved you right, and did anyone ever look at it?
  • If the same proposal arrived tomorrow with the same deadline, would you argue it the same way?
  • 01

    Can you describe your experience with integrating legacy systems with modern cloud-based interfaces?

  • 02

    A field in a write endpoint's response must change shape. You own the endpoint; you do not own the four internal callers or the outbound webhook consumers who read it. Describe a deprecation you were responsible for: what you shipped first, how you established who was actually reading the field, the window you gave and what set its length, what you did about the consumer who never moved, and how you decided removal was safe. Name the signal you used, not the announcement you sent.

  • 03

    Describe a design you argued against and lost. State the failure you predicted as a named mechanism, not a feeling about complexity: two services that would need one transaction, a projection with no rebuild path, a write path with no idempotency key. Say what evidence you brought, what the decision maker weighed instead, and what you did after the decision was made: what you instrumented, what you wrote down, and whether the prediction came true. Five minutes.

PracHub preparation framework ↗
How long does the interview process usually take?

The timeline varies, but candidates should generally expect the process to span a few weeks from the initial application to a final decision, allowing for scheduling across different departments.

ScottishPower Software Engineer candidate reports ↗
Is prior energy industry experience required?

While helpful, it is not strictly required. ScottishPower values strong engineering fundamentals and the ability to apply those skills to new, complex domains.

ScottishPower Software Engineer candidate reports ↗
How can I best prepare for the technical questions?

Focus on your past projects, specifically the "why" behind your technical decisions. Be prepared to explain how you handled challenges related to scalability, security, and system integration.

ScottishPower Software Engineer candidate reports ↗
What is the company culture like?

The culture is professional, safety-oriented, and deeply collaborative. You will be working in an environment that values long-term stability and sustainable innovation.

ScottishPower Software Engineer candidate reports ↗
What topics does ScottishPower test in interviews?

ScottishPower interviews most often cover Competency-Based Interviewing, Stakeholder Management, SQL, Presentation skills, and Adaptability to Change. The exact emphasis depends on the specific role you apply for.

ScottishPower Software Engineer candidate reports ↗
Sources & methodology 3 sources ↗

No official company page is cited. Rounds and questions come from candidate reports and PracHub editorial material; each source shows the date it was read.